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