| Index: net/third_party/nss/ssl/sslsecur.c
|
| ===================================================================
|
| --- net/third_party/nss/ssl/sslsecur.c (revision 41730)
|
| +++ net/third_party/nss/ssl/sslsecur.c (working copy)
|
| @@ -148,12 +148,6 @@
|
| ss->gs.readOffset = 0;
|
| break;
|
| }
|
| - if (ss->version >= SSL_LIBRARY_VERSION_3_0 &&
|
| - (ss->ssl3.hs.ws == wait_change_cipher ||
|
| - ss->ssl3.hs.ws == wait_new_session_ticket) &&
|
| - ssl3_CanFalseStart(ss)) {
|
| - break;
|
| - }
|
| rv = (*ss->handshake)(ss);
|
| ++loopCount;
|
| /* This code must continue to loop on SECWouldBlock,
|
| @@ -1205,8 +1199,17 @@
|
| ss->writerThread = PR_GetCurrentThread();
|
| /* If any of these is non-zero, the initial handshake is not done. */
|
| if (!ss->firstHsDone) {
|
| + PRBool canFalseStart = PR_FALSE;
|
| ssl_Get1stHandshakeLock(ss);
|
| - if (ss->handshake || ss->nextHandshake || ss->securityHandshake) {
|
| + if (ss->version >= SSL_LIBRARY_VERSION_3_0 &&
|
| + (ss->ssl3.hs.ws == wait_change_cipher ||
|
| + ss->ssl3.hs.ws == wait_finished ||
|
| + ss->ssl3.hs.ws == wait_new_session_ticket) &&
|
| + ssl3_CanFalseStart(ss)) {
|
| + canFalseStart = PR_TRUE;
|
| + }
|
| + if (!canFalseStart &&
|
| + (ss->handshake || ss->nextHandshake || ss->securityHandshake)) {
|
| rv = ssl_Do1stHandshake(ss);
|
| }
|
| ssl_Release1stHandshakeLock(ss);
|
|
|