Index: net/third_party/nss/ssl/sslsock.c |
=================================================================== |
--- net/third_party/nss/ssl/sslsock.c (revision 227363) |
+++ net/third_party/nss/ssl/sslsock.c (working copy) |
@@ -2457,10 +2457,14 @@ |
} else if (new_flags & PR_POLL_WRITE) { |
/* The caller is trying to write, but the handshake is |
** blocked waiting for data to read, and the first |
- ** handshake has been sent. so do NOT to poll on write. |
+ ** handshake has been sent. So do NOT to poll on write |
+ ** unless we did false start. |
*/ |
- new_flags ^= PR_POLL_WRITE; /* don't select on write. */ |
- new_flags |= PR_POLL_READ; /* do select on read. */ |
+ if (!(ss->version >= SSL_LIBRARY_VERSION_3_0 && |
+ ss->ssl3.hs.canFalseStart)) { |
+ new_flags ^= PR_POLL_WRITE; /* don't select on write. */ |
+ } |
+ new_flags |= PR_POLL_READ; /* do select on read. */ |
} |
} |
} else if ((new_flags & PR_POLL_READ) && (SSL_DataPending(fd) > 0)) { |