Index: net/third_party/nss/ssl/sslcon.c |
=================================================================== |
--- net/third_party/nss/ssl/sslcon.c (revision 127709) |
+++ net/third_party/nss/ssl/sslcon.c (working copy) |
@@ -1249,7 +1249,12 @@ |
ssl_GetRecvBufLock(ss); |
- if (ss->version >= SSL_LIBRARY_VERSION_3_0) { |
+ /* The special case DTLS logic is needed here because the |
+ * SSL/TLS version wants to auto-detect SSL2 vs. SSL3 |
+ * on the initial handshake (ss->version == 0) but with DTLS it gets |
+ * confused, so we force the ssl3 version |
+ **/ |
+ if ((ss->version >= SSL_LIBRARY_VERSION_3_0) || IS_DTLS(ss)) { |
/* Wait for handshake to complete, or application data to arrive. */ |
rv = ssl3_GatherCompleteHandshake(ss, 0); |
} else { |
@@ -3109,7 +3114,6 @@ |
ss->sec.ci.sid = sid; |
PORT_Assert(sid != NULL); |
- |
if ((sid->version >= SSL_LIBRARY_VERSION_3_0 || !ss->opt.v2CompatibleHello) && |
!SSL3_ALL_VERSIONS_DISABLED(&ss->vrange)) { |
ss->gs.state = GS_INIT; |
@@ -3120,7 +3124,7 @@ |
ssl_GetSSL3HandshakeLock(ss); |
ssl_GetXmitBufLock(ss); |
- rv = ssl3_SendClientHello(ss); |
+ rv = ssl3_SendClientHello(ss, PR_FALSE); |
ssl_ReleaseXmitBufLock(ss); |
ssl_ReleaseSSL3HandshakeLock(ss); |