Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: net/third_party/nss/ssl/sslsecur.c

Issue 850008: ssl_SecureSend should not do handshake when the handshake wait state is... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Upload before checkin Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/third_party/nss/ssl/ssl3gthr.c ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Various SSL functions. 2 * Various SSL functions.
3 * 3 *
4 * ***** BEGIN LICENSE BLOCK ***** 4 * ***** BEGIN LICENSE BLOCK *****
5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 * 6 *
7 * The contents of this file are subject to the Mozilla Public License Version 7 * The contents of this file are subject to the Mozilla Public License Version
8 * 1.1 (the "License"); you may not use this file except in compliance with 8 * 1.1 (the "License"); you may not use this file except in compliance with
9 * the License. You may obtain a copy of the License at 9 * the License. You may obtain a copy of the License at
10 * http://www.mozilla.org/MPL/ 10 * http://www.mozilla.org/MPL/
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 (!ss->firstHsDone) && /* only first time */ 141 (!ss->firstHsDone) && /* only first time */
142 (ss->version < SSL_LIBRARY_VERSION_3_0)) { /* not ssl3 */ 142 (ss->version < SSL_LIBRARY_VERSION_3_0)) { /* not ssl3 */
143 ss->firstHsDone = PR_TRUE; 143 ss->firstHsDone = PR_TRUE;
144 (ss->handshakeCallback)(ss->fd, ss->handshakeCallbackData); 144 (ss->handshakeCallback)(ss->fd, ss->handshakeCallbackData);
145 } 145 }
146 ss->firstHsDone = PR_TRUE; 146 ss->firstHsDone = PR_TRUE;
147 ss->gs.writeOffset = 0; 147 ss->gs.writeOffset = 0;
148 ss->gs.readOffset = 0; 148 ss->gs.readOffset = 0;
149 break; 149 break;
150 } 150 }
151 if (ss->version >= SSL_LIBRARY_VERSION_3_0 &&
152 (ss->ssl3.hs.ws == wait_change_cipher ||
153 ss->ssl3.hs.ws == wait_new_session_ticket) &&
154 ssl3_CanFalseStart(ss)) {
155 break;
156 }
157 rv = (*ss->handshake)(ss); 151 rv = (*ss->handshake)(ss);
158 ++loopCount; 152 ++loopCount;
159 /* This code must continue to loop on SECWouldBlock, 153 /* This code must continue to loop on SECWouldBlock,
160 * or any positive value. See XXX_1 comments. 154 * or any positive value. See XXX_1 comments.
161 */ 155 */
162 } while (rv != SECFailure); /* was (rv >= 0); XXX_1 */ 156 } while (rv != SECFailure); /* was (rv >= 0); XXX_1 */
163 157
164 PORT_Assert(ss->opt.noLocks || !ssl_HaveRecvBufLock(ss)); 158 PORT_Assert(ss->opt.noLocks || !ssl_HaveRecvBufLock(ss));
165 PORT_Assert(ss->opt.noLocks || !ssl_HaveXmitBufLock(ss)); 159 PORT_Assert(ss->opt.noLocks || !ssl_HaveXmitBufLock(ss));
166 160
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 } 1192 }
1199 ssl_ReleaseXmitBufLock(ss); 1193 ssl_ReleaseXmitBufLock(ss);
1200 if (rv < 0) { 1194 if (rv < 0) {
1201 goto done; 1195 goto done;
1202 } 1196 }
1203 1197
1204 if (len > 0) 1198 if (len > 0)
1205 ss->writerThread = PR_GetCurrentThread(); 1199 ss->writerThread = PR_GetCurrentThread();
1206 /* If any of these is non-zero, the initial handshake is not done. */ 1200 /* If any of these is non-zero, the initial handshake is not done. */
1207 if (!ss->firstHsDone) { 1201 if (!ss->firstHsDone) {
1202 PRBool canFalseStart = PR_FALSE;
1208 ssl_Get1stHandshakeLock(ss); 1203 ssl_Get1stHandshakeLock(ss);
1209 » if (ss->handshake || ss->nextHandshake || ss->securityHandshake) { 1204 » if (ss->version >= SSL_LIBRARY_VERSION_3_0 &&
1205 » (ss->ssl3.hs.ws == wait_change_cipher ||
1206 » ss->ssl3.hs.ws == wait_finished ||
1207 » ss->ssl3.hs.ws == wait_new_session_ticket) &&
1208 » ssl3_CanFalseStart(ss)) {
1209 » canFalseStart = PR_TRUE;
1210 » }
1211 » if (!canFalseStart &&
1212 » (ss->handshake || ss->nextHandshake || ss->securityHandshake)) {
1210 rv = ssl_Do1stHandshake(ss); 1213 rv = ssl_Do1stHandshake(ss);
1211 } 1214 }
1212 ssl_Release1stHandshakeLock(ss); 1215 ssl_Release1stHandshakeLock(ss);
1213 } 1216 }
1214 if (rv < 0) { 1217 if (rv < 0) {
1215 ss->writerThread = NULL; 1218 ss->writerThread = NULL;
1216 goto done; 1219 goto done;
1217 } 1220 }
1218 1221
1219 /* Check for zero length writes after we do housekeeping so we make forward 1222 /* Check for zero length writes after we do housekeeping so we make forward
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 if (!ss) { 1530 if (!ss) {
1528 SSL_DBG(("%d: SSL[%d]: bad socket in SNISocketConfigHook", 1531 SSL_DBG(("%d: SSL[%d]: bad socket in SNISocketConfigHook",
1529 SSL_GETPID(), fd)); 1532 SSL_GETPID(), fd));
1530 return SECFailure; 1533 return SECFailure;
1531 } 1534 }
1532 1535
1533 ss->sniSocketConfig = func; 1536 ss->sniSocketConfig = func;
1534 ss->sniSocketConfigArg = arg; 1537 ss->sniSocketConfigArg = arg;
1535 return SECSuccess; 1538 return SECSuccess;
1536 } 1539 }
OLDNEW
« no previous file with comments | « net/third_party/nss/ssl/ssl3gthr.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698