diff options
-rw-r--r-- | driver.c | 11 | ||||
-rw-r--r-- | fetchmail.h | 2 |
2 files changed, 13 insertions, 0 deletions
@@ -965,6 +965,12 @@ static int do_session( goto closeUp; } + /* initialize protocol */ + if (ctl->server.base_protocol->construct) { + err = (ctl->server.base_protocol->construct)(ctl); + if (err) goto cleanUp; + } + /* open a socket to the mail server */ oldphase = phase; phase = OPEN_WAIT; @@ -1547,6 +1553,11 @@ is restored.")); cleanupSockClose(mailserver_socket_temp); mailserver_socket_temp = -1; } + + /* clean up protocol */ + if (ctl->server.base_protocol->destruct) { + ctl->server.base_protocol->destruct(ctl); + } } /* no report on PS_AUTHFAIL */ diff --git a/fetchmail.h b/fetchmail.h index d976f481..a1b77468 100644 --- a/fetchmail.h +++ b/fetchmail.h @@ -249,6 +249,8 @@ struct method /* describe methods for protocol state machine */ int (*logout_cmd)(int, struct query *); /* logout command */ flag retry; /* can getrange poll for new messages? */ + int (*construct)(struct query *); /* session setup before first command */ + int (*destruct)(struct query *); /* cleanup after session */ }; enum badheader { BHREJECT = 0, BHACCEPT }; |