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

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

Issue 111853013: Update net/third_party/nss to NSS 3.15.4. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Update the comment in sslenum.c for the two CHACHA20 cipher suites Created 6 years, 11 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/ssl3ext.c ('k') | net/third_party/nss/ssl/sslauth.c » ('j') | 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 * Gather (Read) entire SSL3 records from socket into buffer. 2 * Gather (Read) entire SSL3 records from socket into buffer.
3 * 3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public 4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 7
8 #include "cert.h" 8 #include "cert.h"
9 #include "ssl.h" 9 #include "ssl.h"
10 #include "sslimpl.h" 10 #include "sslimpl.h"
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 318
319 if (handleRecordNow) { 319 if (handleRecordNow) {
320 /* ssl3_HandleHandshake previously returned SECWouldBlock and the 320 /* ssl3_HandleHandshake previously returned SECWouldBlock and the
321 * as-yet-unprocessed plaintext of that previous handshake record. 321 * as-yet-unprocessed plaintext of that previous handshake record.
322 * We need to process it now before we overwrite it with the next 322 * We need to process it now before we overwrite it with the next
323 * handshake record. 323 * handshake record.
324 */ 324 */
325 rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf); 325 rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf);
326 } else { 326 } else {
327 /* bring in the next sslv3 record. */ 327 /* bring in the next sslv3 record. */
328 if (ss->recvdCloseNotify) {
329 /* RFC 5246 Section 7.2.1:
330 * Any data received after a closure alert is ignored.
331 */
332 return 0;
333 }
328 if (!IS_DTLS(ss)) { 334 if (!IS_DTLS(ss)) {
329 rv = ssl3_GatherData(ss, &ss->gs, flags); 335 rv = ssl3_GatherData(ss, &ss->gs, flags);
330 } else { 336 } else {
331 rv = dtls_GatherData(ss, &ss->gs, flags); 337 rv = dtls_GatherData(ss, &ss->gs, flags);
332 338
333 /* If we got a would block error, that means that no data was 339 /* If we got a would block error, that means that no data was
334 * available, so we check the timer to see if it's time to 340 * available, so we check the timer to see if it's time to
335 * retransmit */ 341 * retransmit */
336 if (rv == SECFailure && 342 if (rv == SECFailure &&
337 (PORT_GetError() == PR_WOULD_BLOCK_ERROR)) { 343 (PORT_GetError() == PR_WOULD_BLOCK_ERROR)) {
(...skipping 25 matching lines...) Expand all
363 cText.seq_num.high = 0; cText.seq_num.low = 0; 369 cText.seq_num.high = 0; cText.seq_num.low = 0;
364 for (i = 0; i < 4; i++) { 370 for (i = 0; i < 4; i++) {
365 cText.seq_num.high <<= 8; cText.seq_num.low <<= 8; 371 cText.seq_num.high <<= 8; cText.seq_num.low <<= 8;
366 cText.seq_num.high |= ss->gs.hdr[3 + i]; 372 cText.seq_num.high |= ss->gs.hdr[3 + i];
367 cText.seq_num.low |= ss->gs.hdr[7 + i]; 373 cText.seq_num.low |= ss->gs.hdr[7 + i];
368 } 374 }
369 } 375 }
370 376
371 cText.buf = &ss->gs.inbuf; 377 cText.buf = &ss->gs.inbuf;
372 rv = ssl3_HandleRecord(ss, &cText, &ss->gs.buf); 378 rv = ssl3_HandleRecord(ss, &cText, &ss->gs.buf);
373
374 if (rv == (int) SECSuccess && ss->gs.buf.len > 0) {
375 /* We have application data to return to the application. This
376 * prioritizes returning application data to the application ove r
377 * completing any renegotiation handshake we may be doing.
378 */
379 PORT_Assert(ss->firstHsDone);
380 PORT_Assert(cText.type == content_application_data);
381 break;
382 }
383 } 379 }
384 if (rv < 0) { 380 if (rv < 0) {
385 return ss->recvdCloseNotify ? 0 : rv; 381 return ss->recvdCloseNotify ? 0 : rv;
386 } 382 }
383 if (ss->gs.buf.len > 0) {
384 /* We have application data to return to the application. This
385 * prioritizes returning application data to the application over
386 * completing any renegotiation handshake we may be doing.
387 */
388 PORT_Assert(ss->firstHsDone);
389 PORT_Assert(cText.type == content_application_data);
390 break;
391 }
387 392
388 PORT_Assert(keepGoing); 393 PORT_Assert(keepGoing);
389 ssl_GetSSL3HandshakeLock(ss); 394 ssl_GetSSL3HandshakeLock(ss);
390 if (ss->ssl3.hs.ws == idle_handshake) { 395 if (ss->ssl3.hs.ws == idle_handshake) {
391 /* We are done with the current handshake so stop trying to 396 /* We are done with the current handshake so stop trying to
392 * handshake. Note that it would be safe to test ss->firstHsDone 397 * handshake. Note that it would be safe to test ss->firstHsDone
393 * instead of ss->ssl3.hs.ws. By testing ss->ssl3.hs.ws instead, 398 * instead of ss->ssl3.hs.ws. By testing ss->ssl3.hs.ws instead,
394 * we prioritize completing a renegotiation handshake over sending 399 * we prioritize completing a renegotiation handshake over sending
395 * application data. 400 * application data.
396 */ 401 */
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 /* ssl3_GatherCompleteHandshake requires both of these locks. */ 446 /* ssl3_GatherCompleteHandshake requires both of these locks. */
442 PORT_Assert( ss->opt.noLocks || ssl_Have1stHandshakeLock(ss) ); 447 PORT_Assert( ss->opt.noLocks || ssl_Have1stHandshakeLock(ss) );
443 PORT_Assert( ss->opt.noLocks || ssl_HaveRecvBufLock(ss) ); 448 PORT_Assert( ss->opt.noLocks || ssl_HaveRecvBufLock(ss) );
444 449
445 do { 450 do {
446 rv = ssl3_GatherCompleteHandshake(ss, flags); 451 rv = ssl3_GatherCompleteHandshake(ss, flags);
447 } while (rv > 0 && ss->gs.buf.len == 0); 452 } while (rv > 0 && ss->gs.buf.len == 0);
448 453
449 return rv; 454 return rv;
450 } 455 }
OLDNEW
« no previous file with comments | « net/third_party/nss/ssl/ssl3ext.c ('k') | net/third_party/nss/ssl/sslauth.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698