Author: kgiusti
Date: Tue Aug 14 15:55:23 2012
New Revision: 1372948

URL: http://svn.apache.org/viewvc?rev=1372948&view=rev
Log:
PROTON-2: fix clear/encrypted detection.

Modified:
    qpid/proton/branches/driver_abstraction/examples/mailbox/server
    qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c

Modified: qpid/proton/branches/driver_abstraction/examples/mailbox/server
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/examples/mailbox/server?rev=1372948&r1=1372947&r2=1372948&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/examples/mailbox/server (original)
+++ qpid/proton/branches/driver_abstraction/examples/mailbox/server Tue Aug 14 
15:55:23 2012
@@ -116,6 +116,7 @@ class MailboxServer(object):
                                              self.ca_database);
             assert(rc == 0)
             if not self.require_encryption:
+                self.log("Allowing both encrypted AND unencrypted 
connections!")
                 rc = pn_listener_ssl_allow_unsecured_clients(self.listener)
                 assert(rc == 0)
         return True

Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c?rev=1372948&r1=1372947&r2=1372948&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c 
(original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c Tue 
Aug 14 15:55:23 2012
@@ -465,6 +465,7 @@ static int configure_ca_database(SSL_CTX
 
 static int start_check_for_ssl( pn_connector_t *client )
 {
+    printf("start_check_for_ssl()\n");
     client->status |= PN_SEL_RD;
     client->io_handler = handle_check_for_ssl;
     return 0;
@@ -477,13 +478,20 @@ static int handle_check_for_ssl( pn_conn
     int rc;
     int retries = 3;
 
+    printf("handle_check_for_ssl()\n");
+
     do {
         rc = recv(client->fd, buf, sizeof(buf), MSG_PEEK);
         if (rc == sizeof(buf))
             break;
-        if (rc < 0 && errno != EINTR && errno != EAGAIN) {
-            perror("handle_check_for_ssl() recv failed:");
-            break;
+        if (rc < 0) {
+            if (errno == EWOULDBLOCK) {
+                client->status |= PN_SEL_RD;
+                return 0;
+            } else if (errno != EINTR) {
+                perror("handle_check_for_ssl() recv failed:");
+                break;
+            }
         }
     } while (retries-- > 0);
 
@@ -604,6 +612,7 @@ int handle_ssl_connect( pn_connector_t *
 
 static int start_ssl_accept(pn_connector_t *client)
 {
+    printf("start_ssl_accept()\n");
     pn_connector_ssl_t *impl = client->ssl;
     if (!impl) return -1;
     pn_listener_ssl_t *parent = client->listener->ssl;
@@ -618,6 +627,7 @@ static int start_ssl_accept(pn_connector
 
 static int handle_ssl_accept(pn_connector_t *client)
 {
+    printf("handle_ssl_accept()\n");
     pn_connector_ssl_t *impl = client->ssl;
     if (!impl) return -1;
 
@@ -760,7 +770,9 @@ int handle_ssl_connection_up( pn_connect
  */
 static int start_clear_connected( pn_connector_t *c )
 {
+    printf("start_clear_connected()\n");
     pn_connector_free_ssl( c );
+    c->status |= (PN_SEL_RD | PN_SEL_WR);
     c->io_handler = pn_io_handler;
     return 0;
 }
@@ -772,7 +784,7 @@ static int start_clear_connected( pn_con
  */
 static int start_ssl_shutdown( pn_connector_t *c )
 {
-    printf("start_ssl_shutdown...\n");
+    printf("start_ssl_shutdown()\n");
     if (c->closed) return 0;
     return handle_ssl_shutdown( c );
 }
@@ -783,7 +795,7 @@ static int handle_ssl_shutdown( pn_conne
     pn_connector_ssl_t *impl = c->ssl;
     if (!impl) return -1;
 
-    printf("handle_ssl_shutdown...\n");
+    printf("handle_ssl_shutdown()\n");
 
     do {
         rc = SSL_shutdown( impl->ssl );



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

Reply via email to