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 | |
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@
-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); |