aboutsummaryrefslogtreecommitdiff
path: root/net/tcpserver.c
diff options
context:
space:
mode:
authorMartin Peach <mrpeach@users.sourceforge.net>2010-05-01 06:11:22 +0000
committerMartin Peach <mrpeach@users.sourceforge.net>2010-05-01 06:11:22 +0000
commit34a543355e6dd46d36a600a4ff082558e626bf7a (patch)
treefed44aab3f1f626ecc53910ddca0f12eb7424a57 /net/tcpserver.c
parentf7f799084b4c858c1cfdab440d8f3472ed4b88cb (diff)
Fixed call to setsockopt( SO_REUSEADDR ), which was previously set false and ifdeffed for IRIX...
svn path=/trunk/externals/mrpeach/; revision=13486
Diffstat (limited to 'net/tcpserver.c')
-rw-r--r--net/tcpserver.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/net/tcpserver.c b/net/tcpserver.c
index a08ca82..8ecabf0 100644
--- a/net/tcpserver.c
+++ b/net/tcpserver.c
@@ -1,5 +1,4 @@
-/* tcpserver.c Martin Peach 20060511 working version 20060512 */
-/* 20060515 works on linux too... */
+/* tcpserver.c Martin Peach 20100501 */
/* tcpserver.c is based on netserver: */
/* -------------------------- netserver ------------------------------------- */
/* */
@@ -914,6 +913,7 @@ static void *tcpserver_new(t_floatarg fportno)
int i;
struct sockaddr_in server;
int sockfd, portno = fportno;
+ char optval = 1;
/* create a socket */
sockfd = socket(AF_INET, SOCK_STREAM, 0);
@@ -927,12 +927,10 @@ static void *tcpserver_new(t_floatarg fportno)
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
-#ifdef IRIX
- /* this seems to work only in IRIX but is unnecessary in
- Linux. Not sure what NT needs in place of this. */
- if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, 0, 0) < 0)
- post("setsockopt failed\n");
-#endif
+ /* enable reuse of local address */
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0)
+ sys_sockerror("tcpserver: setsockopt SO_REUSEADDR");
+
/* assign server port number */
server.sin_port = htons((u_short)portno);
/* name the socket */