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

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

Issue 142283002: Update net/third_party/nss to NSS_3_15_5_BETA2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix applypatches.sh mistakes 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
OLDNEW
1 /* 1 /*
2 * This file implements the CLIENT Session ID cache. 2 * This file implements the CLIENT Session ID cache.
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 "pk11pub.h" 9 #include "pk11pub.h"
10 #include "secitem.h" 10 #include "secitem.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 107 }
108 108
109 /* BEWARE: This function gets called for both client and server SIDs !! 109 /* BEWARE: This function gets called for both client and server SIDs !!
110 * If the unreferenced sid is not in the cache, Free sid and its contents. 110 * If the unreferenced sid is not in the cache, Free sid and its contents.
111 */ 111 */
112 static void 112 static void
113 ssl_DestroySID(sslSessionID *sid) 113 ssl_DestroySID(sslSessionID *sid)
114 { 114 {
115 int i; 115 int i;
116 SSL_TRC(8, ("SSL: destroy sid: sid=0x%x cached=%d", sid, sid->cached)); 116 SSL_TRC(8, ("SSL: destroy sid: sid=0x%x cached=%d", sid, sid->cached));
117 PORT_Assert((sid->references == 0)); 117 PORT_Assert(sid->references == 0);
118 118 PORT_Assert(sid->cached != in_client_cache);
119 if (sid->cached == in_client_cache)
120 » return;»/* it will get taken care of next time cache is traversed. */
121 119
122 if (sid->version < SSL_LIBRARY_VERSION_3_0) { 120 if (sid->version < SSL_LIBRARY_VERSION_3_0) {
123 SECITEM_ZfreeItem(&sid->u.ssl2.masterKey, PR_FALSE); 121 SECITEM_ZfreeItem(&sid->u.ssl2.masterKey, PR_FALSE);
124 SECITEM_ZfreeItem(&sid->u.ssl2.cipherArg, PR_FALSE); 122 SECITEM_ZfreeItem(&sid->u.ssl2.cipherArg, PR_FALSE);
125 } else { 123 } else {
126 if (sid->u.ssl3.locked.sessionTicket.ticket.data) { 124 if (sid->u.ssl3.locked.sessionTicket.ticket.data) {
127 SECITEM_FreeItem(&sid->u.ssl3.locked.sessionTicket.ticket, 125 SECITEM_FreeItem(&sid->u.ssl3.locked.sessionTicket.ticket,
128 PR_FALSE); 126 PR_FALSE);
129 } 127 }
130 if (sid->u.ssl3.srvName.data) { 128 if (sid->u.ssl3.srvName.data) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 return NULL; 213 return NULL;
216 now = ssl_Time(); 214 now = ssl_Time();
217 LOCK_CACHE; 215 LOCK_CACHE;
218 sidp = &cache; 216 sidp = &cache;
219 while ((sid = *sidp) != 0) { 217 while ((sid = *sidp) != 0) {
220 PORT_Assert(sid->cached == in_client_cache); 218 PORT_Assert(sid->cached == in_client_cache);
221 PORT_Assert(sid->references >= 1); 219 PORT_Assert(sid->references >= 1);
222 220
223 SSL_TRC(8, ("SSL: Lookup1: sid=0x%x", sid)); 221 SSL_TRC(8, ("SSL: Lookup1: sid=0x%x", sid));
224 222
225 » if (sid->expirationTime < now || !sid->references) { 223 » if (sid->expirationTime < now) {
226 /* 224 /*
227 » ** This session-id timed out, or was orphaned. 225 » ** This session-id timed out.
228 ** Don't even care who it belongs to, blow it out of our cache. 226 ** Don't even care who it belongs to, blow it out of our cache.
229 */ 227 */
230 SSL_TRC(7, ("SSL: lookup1, throwing sid out, age=%d refs=%d", 228 SSL_TRC(7, ("SSL: lookup1, throwing sid out, age=%d refs=%d",
231 now - sid->creationTime, sid->references)); 229 now - sid->creationTime, sid->references));
232 230
233 *sidp = sid->next; /* delink it from the list. */ 231 *sidp = sid->next; /* delink it from the list. */
234 sid->cached = invalid_cache; /* mark not on list. */ 232 sid->cached = invalid_cache; /* mark not on list. */
235 » if (!sid->references) 233 » ssl_FreeLockedSID(sid);» » /* drop ref count, free. */
236 » » ssl_DestroySID(sid);
237 » else
238 » » ssl_FreeLockedSID(sid);»» /* drop ref count, free. */
239
240 } else if (!memcmp(&sid->addr, addr, sizeof(PRIPv6Addr)) && /* server IP addr matches */ 234 } else if (!memcmp(&sid->addr, addr, sizeof(PRIPv6Addr)) && /* server IP addr matches */
241 (sid->port == port) && /* server port matches */ 235 (sid->port == port) && /* server port matches */
242 /* proxy (peerID) matches */ 236 /* proxy (peerID) matches */
243 (((peerID == NULL) && (sid->peerID == NULL)) || 237 (((peerID == NULL) && (sid->peerID == NULL)) ||
244 ((peerID != NULL) && (sid->peerID != NULL) && 238 ((peerID != NULL) && (sid->peerID != NULL) &&
245 PORT_Strcmp(sid->peerID, peerID) == 0)) && 239 PORT_Strcmp(sid->peerID, peerID) == 0)) &&
246 /* is cacheable */ 240 /* is cacheable */
247 (sid->version < SSL_LIBRARY_VERSION_3_0 || 241 (sid->version < SSL_LIBRARY_VERSION_3_0 ||
248 sid->u.ssl3.keys.resumable) && 242 sid->u.ssl3.keys.resumable) &&
249 /* server hostname matches. */ 243 /* server hostname matches. */
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 463
470 /* Do a shallow copy, moving the ticket data. */ 464 /* Do a shallow copy, moving the ticket data. */
471 sid->u.ssl3.locked.sessionTicket = *newSessionTicket; 465 sid->u.ssl3.locked.sessionTicket = *newSessionTicket;
472 newSessionTicket->ticket.data = NULL; 466 newSessionTicket->ticket.data = NULL;
473 newSessionTicket->ticket.len = 0; 467 newSessionTicket->ticket.len = 0;
474 468
475 if (sid->u.ssl3.lock) { 469 if (sid->u.ssl3.lock) {
476 NSSRWLock_UnlockWrite(sid->u.ssl3.lock); 470 NSSRWLock_UnlockWrite(sid->u.ssl3.lock);
477 } 471 }
478 } 472 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698