You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2013/01/07 22:10:03 UTC

svn commit: r1430010 - /qpid/proton/trunk/proton-c/src/ssl/openssl.c

Author: kgiusti
Date: Mon Jan  7 21:10:03 2013
New Revision: 1430010

URL: http://svn.apache.org/viewvc?rev=1430010&view=rev
Log:
PROTON-171: stop accepting input after SSL session is closed.

Modified:
    qpid/proton/trunk/proton-c/src/ssl/openssl.c

Modified: qpid/proton/trunk/proton-c/src/ssl/openssl.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/ssl/openssl.c?rev=1430010&r1=1430009&r2=1430010&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/ssl/openssl.c (original)
+++ qpid/proton/trunk/proton-c/src/ssl/openssl.c Mon Jan  7 21:10:03 2013
@@ -123,6 +123,8 @@ static ssize_t process_input_cleartext(p
 static ssize_t process_output_cleartext(pn_transport_t *transport, char *buffer, size_t max_len);
 static ssize_t process_input_unknown(pn_transport_t *transport, const char *input_data, size_t len);
 static ssize_t process_output_unknown(pn_transport_t *transport, char *input_data, size_t len);
+static ssize_t process_input_done(pn_transport_t *transport, const char *input_data, size_t len);
+static ssize_t process_output_done(pn_transport_t *transport, char *input_data, size_t len);
 static connection_mode_t check_for_ssl_connection( const char *data, size_t len );
 static int init_ssl_socket( pn_ssl_t * );
 static void release_ssl_socket( pn_ssl_t * );
@@ -904,6 +906,7 @@ static ssize_t process_input_ssl( pn_tra
   //}
   if (ssl->app_input_closed && (SSL_get_shutdown(ssl->ssl) & SSL_SENT_SHUTDOWN) ) {
     consumed = ssl->app_input_closed;
+    ssl->process_input = process_input_done;
   }
   _log(ssl, "process_input_ssl() returning %d\n", (int) consumed);
   return consumed;
@@ -1015,6 +1018,7 @@ static ssize_t process_output_ssl( pn_tr
   //}
   if (written == 0 && (SSL_get_shutdown(ssl->ssl) & SSL_SENT_SHUTDOWN) && BIO_pending(ssl->bio_net_io) == 0) {
     written = ssl->app_output_closed ? ssl->app_output_closed : PN_EOS;
+    ssl->process_output = process_output_done;
   }
   _log(ssl, "process_output_ssl() returning %d\n", (int) written);
   return written;
@@ -1248,3 +1252,12 @@ int pn_ssl_get_peer_hostname( pn_ssl_t *
   *bufsize = len;
   return 0;
 }
+
+static ssize_t process_input_done(pn_transport_t *transport, const char *input_data, size_t len)
+{
+  return PN_EOS;
+}
+static ssize_t process_output_done(pn_transport_t *transport, char *input_data, size_t len)
+{
+  return PN_EOS;
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org