[ovs-dev] [PATCH] Only set TCP_NODELAY after connection is established for SSL.

Linda Sun lsun at vmware.com
Fri Jun 13 20:35:18 UTC 2014


Signed-off-by: Linda Sun <lsun at vmware.com>
---
 lib/stream-ssl.c |   26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/lib/stream-ssl.c b/lib/stream-ssl.c
index 3f753d1..aad7d8c 100644
--- a/lib/stream-ssl.c
+++ b/lib/stream-ssl.c
@@ -260,13 +260,15 @@ new_ssl_stream(const char *name, int fd, enum session_type type,
         memset(&local, 0, sizeof local);
     }
 
-    /* Disable Nagle. */
-    retval = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof on);
-    if (retval) {
-        retval = sock_errno();
-        VLOG_ERR("%s: setsockopt(TCP_NODELAY): %s", name,
-                 sock_strerror(retval));
-        goto error;
+    /* Only disable Nagle now if TCP is connected. */
+    if (state == STATE_SSL_CONNECTING) {
+        retval = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof on);
+        if (retval) {
+            retval = sock_errno();
+            VLOG_ERR("%s: setsockopt(TCP_NODELAY): %s", name,
+                     sock_strerror(retval));
+            goto error;
+        }
     }
 
     /* Create and configure OpenSSL stream. */
@@ -447,6 +449,7 @@ ssl_connect(struct stream *stream)
 {
     struct ssl_stream *sslv = ssl_stream_cast(stream);
     int retval;
+    int on = 1;
 
     switch (sslv->state) {
     case STATE_TCP_CONNECTING:
@@ -455,6 +458,15 @@ ssl_connect(struct stream *stream)
             return retval;
         }
         sslv->state = STATE_SSL_CONNECTING;
+        /* Disable Nagle. */
+        retval = setsockopt(sslv->fd, IPPROTO_TCP, TCP_NODELAY,
+                            &on, sizeof on);
+        if (retval) {
+            retval = sock_errno();
+            VLOG_ERR("setsockopt(TCP_NODELAY): %s",
+                     sock_strerror(retval));
+            return retval;
+        }
         /* Fall through. */
 
     case STATE_SSL_CONNECTING:
-- 
1.7.9.5




More information about the dev mailing list