diff options
| author | otto <> | 2005-11-15 19:35:31 +0000 |
|---|---|---|
| committer | otto <> | 2005-11-15 19:35:31 +0000 |
| commit | b24a58d90a0603f8364f5f9099f08959dc35ba3e (patch) | |
| tree | b2bc402c0a878113d5c8bba92b0b10772aeca349 /src | |
| parent | 5aae9fa1f07b086b852d9795330efd3d419d8804 (diff) | |
| download | openbsd-b24a58d90a0603f8364f5f9099f08959dc35ba3e.tar.gz openbsd-b24a58d90a0603f8364f5f9099f08959dc35ba3e.tar.bz2 openbsd-b24a58d90a0603f8364f5f9099f08959dc35ba3e.zip | |
Do not clobber errno when calling close(2) in example code.
From form@ via mpech@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libc/net/getaddrinfo.3 | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/libc/net/getaddrinfo.3 b/src/lib/libc/net/getaddrinfo.3 index b7494be811..12a0d8ce12 100644 --- a/src/lib/libc/net/getaddrinfo.3 +++ b/src/lib/libc/net/getaddrinfo.3 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | .\" $OpenBSD: getaddrinfo.3,v 1.42 2005/11/13 13:22:57 otto Exp $ | 1 | .\" $OpenBSD: getaddrinfo.3,v 1.43 2005/11/15 19:35:31 otto Exp $ |
| 2 | .\" $KAME: getaddrinfo.3,v 1.36 2005/01/05 03:23:05 itojun Exp $ | 2 | .\" $KAME: getaddrinfo.3,v 1.36 2005/01/05 03:23:05 itojun Exp $ |
| 3 | .\" | 3 | .\" |
| 4 | .\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") | 4 | .\" Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") |
| @@ -304,7 +304,7 @@ returns addresses that are not IPv4/v6. | |||
| 304 | .Bd -literal -offset indent | 304 | .Bd -literal -offset indent |
| 305 | struct addrinfo hints, *res, *res0; | 305 | struct addrinfo hints, *res, *res0; |
| 306 | int error; | 306 | int error; |
| 307 | int save_errno = errno; | 307 | int save_errno; |
| 308 | int s; | 308 | int s; |
| 309 | const char *cause = NULL; | 309 | const char *cause = NULL; |
| 310 | 310 | ||
| @@ -327,6 +327,7 @@ for (res = res0; res; res = res->ai_next) { | |||
| 327 | 327 | ||
| 328 | if (connect(s, res->ai_addr, res->ai_addrlen) < 0) { | 328 | if (connect(s, res->ai_addr, res->ai_addrlen) < 0) { |
| 329 | cause = "connect"; | 329 | cause = "connect"; |
| 330 | save_errno = errno; | ||
| 330 | close(s); | 331 | close(s); |
| 331 | errno = save_errno; | 332 | errno = save_errno; |
| 332 | s = -1; | 333 | s = -1; |
| @@ -348,6 +349,7 @@ for all the address families available. | |||
| 348 | .Bd -literal -offset indent | 349 | .Bd -literal -offset indent |
| 349 | struct addrinfo hints, *res, *res0; | 350 | struct addrinfo hints, *res, *res0; |
| 350 | int error; | 351 | int error; |
| 352 | int save_errno; | ||
| 351 | int s[MAXSOCK]; | 353 | int s[MAXSOCK]; |
| 352 | int nsock; | 354 | int nsock; |
| 353 | const char *cause = NULL; | 355 | const char *cause = NULL; |
| @@ -372,7 +374,9 @@ for (res = res0; res && nsock < MAXSOCK; res = res->ai_next) { | |||
| 372 | 374 | ||
| 373 | if (bind(s[nsock], res->ai_addr, res->ai_addrlen) < 0) { | 375 | if (bind(s[nsock], res->ai_addr, res->ai_addrlen) < 0) { |
| 374 | cause = "bind"; | 376 | cause = "bind"; |
| 377 | save_errno = errno; | ||
| 375 | close(s[nsock]); | 378 | close(s[nsock]); |
| 379 | errno = save_errno; | ||
| 376 | continue; | 380 | continue; |
| 377 | } | 381 | } |
| 378 | (void) listen(s[nsock], 5); | 382 | (void) listen(s[nsock], 5); |
