OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // Written in NSPR style to also be suitable for adding to the NSS demo suite | 4 // Written in NSPR style to also be suitable for adding to the NSS demo suite |
5 | 5 |
6 /* memio is a simple NSPR I/O layer that lets you decouple NSS from | 6 /* memio is a simple NSPR I/O layer that lets you decouple NSS from |
7 * the real network. It's rather like openssl's memory bio, | 7 * the real network. It's rather like openssl's memory bio, |
8 * and is useful when your app absolutely, positively doesn't | 8 * and is useful when your app absolutely, positively doesn't |
9 * want to let NSS do its own networking. | 9 * want to let NSS do its own networking. |
10 */ | 10 */ |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 fd = PR_CreateIOLayerStub(memio_identity, &memio_layer_methods); | 352 fd = PR_CreateIOLayerStub(memio_identity, &memio_layer_methods); |
353 secret = malloc(sizeof(struct PRFilePrivate)); | 353 secret = malloc(sizeof(struct PRFilePrivate)); |
354 memset(secret, 0, sizeof(*secret)); | 354 memset(secret, 0, sizeof(*secret)); |
355 | 355 |
356 memio_buffer_new(&secret->readbuf, bufsize); | 356 memio_buffer_new(&secret->readbuf, bufsize); |
357 memio_buffer_new(&secret->writebuf, bufsize); | 357 memio_buffer_new(&secret->writebuf, bufsize); |
358 fd->secret = secret; | 358 fd->secret = secret; |
359 return fd; | 359 return fd; |
360 } | 360 } |
361 | 361 |
362 void memio_SetPeerName(PRFileDesc *fd, const struct sockaddr *peername, | 362 void memio_SetPeerName(PRFileDesc *fd, const PRNetAddr *peername) |
363 size_t peername_len) | |
364 { | 363 { |
365 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); | 364 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); |
366 struct PRFilePrivate *secret = memiofd->secret; | 365 struct PRFilePrivate *secret = memiofd->secret; |
367 size_t len; | 366 secret->peername = *peername; |
368 | |
369 memset(&secret->peername, 0, sizeof(secret->peername)); | |
370 PR_ASSERT(peername_len <= sizeof(secret->peername)); | |
371 len = PR_MIN(peername_len, sizeof(secret->peername)); | |
372 memcpy(&secret->peername, peername, len); | |
373 } | 367 } |
374 | 368 |
375 memio_Private *memio_GetSecret(PRFileDesc *fd) | 369 memio_Private *memio_GetSecret(PRFileDesc *fd) |
376 { | 370 { |
377 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); | 371 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); |
378 struct PRFilePrivate *secret = memiofd->secret; | 372 struct PRFilePrivate *secret = memiofd->secret; |
379 return (memio_Private *)secret; | 373 return (memio_Private *)secret; |
380 } | 374 } |
381 | 375 |
382 int memio_GetReadParams(memio_Private *secret, char **buf) | 376 int memio_GetReadParams(memio_Private *secret, char **buf) |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); | 475 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); |
482 CHECKEQ(memio_buffer_used_contiguous(&mb), 1); | 476 CHECKEQ(memio_buffer_used_contiguous(&mb), 1); |
483 | 477 |
484 /* TODO: add more cases */ | 478 /* TODO: add more cases */ |
485 | 479 |
486 printf("Test passed\n"); | 480 printf("Test passed\n"); |
487 exit(0); | 481 exit(0); |
488 } | 482 } |
489 | 483 |
490 #endif | 484 #endif |
OLD | NEW |