with -rev close connection if client sends "CLOSE"
authorDr. Stephen Henson <steve@openssl.org>
Mon, 19 Nov 2012 23:41:24 +0000 (23:41 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 19 Aug 2013 13:14:05 +0000 (14:14 +0100)
(cherry picked from commit 685755937a4f9f8b16f8953f631e14808f785c39)

apps/s_server.c

index 6abb4d562cf8d366ac45f6e69906b8318a686ff1..b67ab4128e6b0fa67533c36147aaed06dd56c794 100644 (file)
@@ -296,6 +296,7 @@ static int cert_status_cb(SSL *s, void *arg);
 static int no_resume_ephemeral = 0;
 static int s_msg=0;
 static int s_quiet=0;
+static int s_ign_eof=0;
 static int s_brief=0;
 
 static char *keymatexportlabel=NULL;
@@ -1223,6 +1224,10 @@ int MAIN(int argc, char *argv[])
 #endif
                        s_nbio_test=1;
                        }
+               else if (strcmp(*argv,"-ign_eof") == 0)
+                       s_ign_eof=1;
+               else if (strcmp(*argv,"-no_ign_eof") == 0)
+                       s_ign_eof=0;
                else if (strcmp(*argv,"-debug") == 0)
                        { s_debug=1; }
 #ifndef OPENSSL_NO_TLSEXT
@@ -3199,6 +3204,12 @@ static int rev_body(char *hostname, int s, unsigned char *context)
                                p--;
                                i--;
                                }
+                       if (!s_ign_eof && i == 5 && !strncmp(buf, "CLOSE", 5))
+                               {
+                               ret = 1;
+                               BIO_printf(bio_err, "CONNECTION CLOSED\n");
+                               goto end;
+                               }
                        BUF_reverse((unsigned char *)buf, NULL, i);
                        buf[i] = '\n';
                        BIO_write(io, buf, i + 1);