diff options
author | Karl Ramm <kcr@mit.edu> | 2008-12-29 21:27:24 +0000 |
---|---|---|
committer | Karl Ramm <kcr@mit.edu> | 2008-12-29 21:27:24 +0000 |
commit | 018ade60f5f12bde94c3651d08287f6ddd1b9b63 (patch) | |
tree | 31fe99eb7b57ed2018ab78497629eedc2940baa3 /lib | |
parent | eb5bf3c2a5d619da31f491419ddb8b97096b4981 (diff) |
set SO_REUSADDR if we are opening some sort of well-defined server port
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ZOpenPort.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/ZOpenPort.c b/lib/ZOpenPort.c index 3116e9b..cf9a66e 100644 --- a/lib/ZOpenPort.c +++ b/lib/ZOpenPort.c @@ -22,6 +22,7 @@ ZOpenPort(u_short *port) { struct sockaddr_in bindin; unsigned int len; + int val = 1; (void) ZClosePort(); @@ -32,10 +33,14 @@ ZOpenPort(u_short *port) bindin.sin_family = AF_INET; - if (port && *port) + if (port && *port) { bindin.sin_port = *port; - else + if (setsockopt(__Zephyr_fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof val) < 0) { + return errno; + } + } else { bindin.sin_port = 0; + } bindin.sin_addr.s_addr = INADDR_ANY; |