From 018ade60f5f12bde94c3651d08287f6ddd1b9b63 Mon Sep 17 00:00:00 2001 From: Karl Ramm Date: Mon, 29 Dec 2008 21:27:24 +0000 Subject: set SO_REUSADDR if we are opening some sort of well-defined server port --- lib/ZOpenPort.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/ZOpenPort.c') 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; -- cgit v1.2.3