You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2015/12/30 22:12:50 UTC

[02/50] [abbrv] qpid-proton git commit: PROTON-1069: Windows SChannel: tell transport application input closed or ssl input closed sooner

PROTON-1069: Windows SChannel: tell transport application input closed or ssl input closed sooner


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/a267629f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/a267629f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/a267629f

Branch: refs/heads/go1
Commit: a267629f97c9f088ad4d818079c38461dc79d48d
Parents: f1b484a
Author: Clifford Jansen <cl...@apache.org>
Authored: Sun Nov 29 18:06:15 2015 -0800
Committer: Clifford Jansen <cl...@apache.org>
Committed: Sun Nov 29 18:06:15 2015 -0800

----------------------------------------------------------------------
 proton-c/src/windows/schannel.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a267629f/proton-c/src/windows/schannel.c
----------------------------------------------------------------------
diff --git a/proton-c/src/windows/schannel.c b/proton-c/src/windows/schannel.c
index 57345d7..7de629f 100644
--- a/proton-c/src/windows/schannel.c
+++ b/proton-c/src/windows/schannel.c
@@ -1523,9 +1523,9 @@ static ssize_t process_input_ssl(pn_transport_t *transport, unsigned int layer,
 
   do {
     if (ssl->sc_input_shutdown) {
-      // TLS protocol shutdown detected on input
+      // TLS protocol shutdown detected on input, so we are done.
       read_closed(transport, layer, 0);
-      return consumed;
+      return PN_EOS;
     }
 
     // sc_inbuf should be ready for new or additional network encrypted bytes.
@@ -1596,7 +1596,7 @@ static ssize_t process_input_ssl(pn_transport_t *transport, unsigned int layer,
         start_ssl_shutdown(transport);
       }
     } else if (ssl->state == SSL_CLOSED) {
-      return consumed ? consumed : -1;
+      return PN_EOS;
     }
 
     // Consume or discard the decrypted bytes
@@ -1632,12 +1632,16 @@ static ssize_t process_input_ssl(pn_transport_t *transport, unsigned int layer,
     }
   } while (available || (ssl->sc_in_count && !ssl->sc_in_incomplete));
 
-  if (ssl->app_input_closed && ssl->state >= SHUTTING_DOWN) {
-    consumed = ssl->app_input_closed;
-    if (transport->io_layers[layer]==&ssl_output_closed_layer) {
-      transport->io_layers[layer] = &ssl_closed_layer;
-    } else {
-      transport->io_layers[layer] = &ssl_input_closed_layer;
+  if (ssl->state >= SHUTTING_DOWN) {
+    if (ssl->app_input_closed || ssl->sc_input_shutdown) {
+      // Next layer doesn't want more bytes, or it can't process without more data than it has seen so far
+      // but the ssl stream has ended
+      consumed = ssl->app_input_closed ? ssl->app_input_closed : PN_EOS;
+      if (transport->io_layers[layer]==&ssl_output_closed_layer) {
+        transport->io_layers[layer] = &ssl_closed_layer;
+      } else {
+        transport->io_layers[layer] = &ssl_input_closed_layer;
+      }
     }
   }
   ssl_log(transport, "process_input_ssl() returning %d, forwarded %d\n", (int) consumed, (int) forwarded);


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