]> granicus.if.org Git - libevent/commitdiff
Disable whichever struct event we don't want during ssl handshaking.
authorNick Mathewson <nickm@torproject.org>
Fri, 14 Aug 2009 20:07:17 +0000 (20:07 +0000)
committerNick Mathewson <nickm@torproject.org>
Fri, 14 Aug 2009 20:07:17 +0000 (20:07 +0000)
svn:r1417

bufferevent_openssl.c

index 90d72283d08ce92927ab8b019ec862e54de32085..f099f30b24d7c13fe1b362814788cd909f065ed3 100644 (file)
@@ -808,16 +808,16 @@ do_handshake(struct bufferevent_openssl *bev_ssl)
                print_err(err);
                switch (err) {
                case SSL_ERROR_WANT_WRITE:
-                       /* XXXX we only want to do this for the socket case.
-                         stop_reading(bev_ssl);
-                         start_writing(bev_ssl);
-                       */
+                       if (!bev_ssl->underlying) {
+                               stop_reading(bev_ssl);
+                               start_writing(bev_ssl);
+                       }
                        return 0;
                case SSL_ERROR_WANT_READ:
-                       /* XXXX we only want to do this for the socket case.
-                          stop_reading(bev_ssl);
-                          start_writing(bev_ssl);
-                       */
+                       if (!bev_ssl->underlying) {
+                               stop_writing(bev_ssl);
+                               start_reading(bev_ssl);
+                       }
                        return 0;
                default:
                        conn_closed(bev_ssl, err, r);