[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