| 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 PRNetAddr *peername) | 362 void memio_SetPeerName(PRFileDesc *fd, const struct sockaddr *peername, |
| 363 size_t peername_len) |
| 363 { | 364 { |
| 364 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); | 365 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); |
| 365 struct PRFilePrivate *secret = memiofd->secret; | 366 struct PRFilePrivate *secret = memiofd->secret; |
| 366 secret->peername = *peername; | 367 size_t len; |
| 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); |
| 367 } | 373 } |
| 368 | 374 |
| 369 memio_Private *memio_GetSecret(PRFileDesc *fd) | 375 memio_Private *memio_GetSecret(PRFileDesc *fd) |
| 370 { | 376 { |
| 371 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); | 377 PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); |
| 372 struct PRFilePrivate *secret = memiofd->secret; | 378 struct PRFilePrivate *secret = memiofd->secret; |
| 373 return (memio_Private *)secret; | 379 return (memio_Private *)secret; |
| 374 } | 380 } |
| 375 | 381 |
| 376 int memio_GetReadParams(memio_Private *secret, char **buf) | 382 int memio_GetReadParams(memio_Private *secret, char **buf) |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); | 481 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); |
| 476 CHECKEQ(memio_buffer_used_contiguous(&mb), 1); | 482 CHECKEQ(memio_buffer_used_contiguous(&mb), 1); |
| 477 | 483 |
| 478 /* TODO: add more cases */ | 484 /* TODO: add more cases */ |
| 479 | 485 |
| 480 printf("Test passed\n"); | 486 printf("Test passed\n"); |
| 481 exit(0); | 487 exit(0); |
| 482 } | 488 } |
| 483 | 489 |
| 484 #endif | 490 #endif |
| OLD | NEW |