summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorotto <>2005-11-15 19:35:31 +0000
committerotto <>2005-11-15 19:35:31 +0000
commitb24a58d90a0603f8364f5f9099f08959dc35ba3e (patch)
treeb2bc402c0a878113d5c8bba92b0b10772aeca349
parent5aae9fa1f07b086b852d9795330efd3d419d8804 (diff)
downloadopenbsd-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.38
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
305struct addrinfo hints, *res, *res0; 305struct addrinfo hints, *res, *res0;
306int error; 306int error;
307int save_errno = errno; 307int save_errno;
308int s; 308int s;
309const char *cause = NULL; 309const 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
349struct addrinfo hints, *res, *res0; 350struct addrinfo hints, *res, *res0;
350int error; 351int error;
352int save_errno;
351int s[MAXSOCK]; 353int s[MAXSOCK];
352int nsock; 354int nsock;
353const char *cause = NULL; 355const 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);