Drain socket to get clean TCP FINs
[exim.git] / src / src / transports / smtp.c
index 21c57209ca3e75e549fb0da3c42fb46cc5ce357d..ecdb8bf26764d30c51f824e71a04ef59ef112301 100644 (file)
@@ -3162,6 +3162,12 @@ specified in the transports, and therefore not visible at top level, in which
 case continue_more won't get set. */
 
 HDEBUG(D_transport|D_acl|D_v) debug_printf("  SMTP(close)>>\n");
+if (lflags.send_quit)
+  {
+  shutdown(outblock.sock, SHUT_WR);
+  for (rc = 16; read(inblock.sock, inbuffer, sizeof(inbuffer)) > 0 && rc > 0;)
+    rc--;                              /* drain socket */
+  }
 (void)close(inblock.sock);
 
 #ifndef DISABLE_EVENT