From 3673babe2a47d43fce7e4472fe08917e68b88ff6 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 25 Jul 1998 14:20:54 +0000 Subject: SockClose() abstraction. svn path=/trunk/; revision=2021 --- driver.c | 10 +++++----- imap.c | 13 +++++++------ socket.c | 7 +++++++ socket.h | 6 ++++++ 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/driver.c b/driver.c index 1ce13b5d..f0099158 100644 --- a/driver.c +++ b/driver.c @@ -406,7 +406,7 @@ static int smtp_open(struct query *ctl) * RFC 1869 warns that some listeners hang up on a failed EHLO, * so it's safest not to assume the socket will still be good. */ - close(ctl->smtp_socket); + SockClose(ctl->smtp_socket); ctl->smtp_socket = -1; /* if opening for ESMTP failed, try SMTP */ @@ -417,7 +417,7 @@ static int smtp_open(struct query *ctl) SMTP_helo(ctl->smtp_socket, id_me) == SM_OK) break; /* success */ - close(ctl->smtp_socket); + SockClose(ctl->smtp_socket); ctl->smtp_socket = -1; } set_timeout(0); @@ -1780,7 +1780,7 @@ const struct method *proto; /* protocol method table */ if (ctl->smtp_socket != -1) close(ctl->smtp_socket); if (sock != -1) - close(sock); + SockClose(sock); if (sinkfp) pclose(sinkfp); ok = PS_ERROR; @@ -2305,13 +2305,13 @@ const struct method *proto; /* protocol method table */ */ if (ok == 0) ok = (fetches > 0) ? PS_SUCCESS : PS_NOMAIL; - close(sock); + SockClose(sock); goto closeUp; cleanUp: if (ok != 0 && ok != PS_SOCKET) (protocol->logout_cmd)(sock, ctl); - close(sock); + SockClose(sock); } msg = (char *)NULL; /* sacrifice to -Wall */ diff --git a/imap.c b/imap.c index 412e1dc8..c1187cf6 100644 --- a/imap.c +++ b/imap.c @@ -607,7 +607,7 @@ int imap_getauth(int sock, struct query *ctl, char *greeting) { imap_version = IMAP4; if (outlevel == O_VERBOSE) - error(0, 0, "Protocol identified as IMAP4 rev 0"); + error(0, 0, "Protocol identified as IMAP4 rev 0"); } } else if (ok == PS_ERROR) @@ -622,11 +622,12 @@ int imap_getauth(int sock, struct query *ctl, char *greeting) peek_capable = (imap_version >= IMAP4); #if OPIE - if ((ctl->server.protocol == P_IMAP) && strstr(capabilities, "AUTH=X-OTP")) { - if (outlevel == O_VERBOSE) - error(0, 0, "OTP authentication is supported"); - if (do_otp(sock, ctl) == PS_SUCCESS) - return PS_SUCCESS; + if ((ctl->server.protocol == P_IMAP) && strstr(capabilities, "AUTH=X-OTP")) + { + if (outlevel == O_VERBOSE) + error(0, 0, "OTP authentication is supported"); + if (do_otp(sock, ctl) == PS_SUCCESS) + return(PS_SUCCESS); }; #endif /* OPIE */ diff --git a/socket.c b/socket.c index 3ba58696..24f64af7 100644 --- a/socket.c +++ b/socket.c @@ -220,6 +220,12 @@ int SockPeek(int sock) return(ch); } +int SockClose(int sock) +/* close a socket (someday we may do other cleanup here) */ +{ + return(close(sock)); +} + #ifdef MAIN /* * Use the chargen service to test input beuffering directly. @@ -233,6 +239,7 @@ main() while (SockRead(sock, buf, sizeof(buf)-1)) SockWrite(1, buf, strlen(buf)); + SockClose(sock); } #endif /* MAIN */ diff --git a/socket.h b/socket.h index 7e8441a8..89907745 100644 --- a/socket.h +++ b/socket.h @@ -43,4 +43,10 @@ int SockPrintf(int sock, char *format, ...) ; int SockPrintf(); #endif +/* +Close a socket previously opened by SockOpen. This allows for some +additional clean-up if necessary. +*/ +int SockClose(int sock); + #endif /* SOCKET__ */ -- cgit v1.2.3