From: Dr. Stephen Henson Date: Mon, 19 Nov 2012 23:41:24 +0000 (+0000) Subject: with -rev close connection if client sends "CLOSE" X-Git-Tag: OpenSSL_1_0_2-beta1~301 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=08374de10f1cefc02122368c91b0cf4aff791f25;p=openssl with -rev close connection if client sends "CLOSE" (cherry picked from commit 685755937a4f9f8b16f8953f631e14808f785c39) --- diff --git a/apps/s_server.c b/apps/s_server.c index 6abb4d562c..b67ab4128e 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -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);