Change OS_bind_tcp_server_socket to set SO_REUSEADDR.
authorChris Hanson <org/chris-hanson/cph>
Wed, 9 Jul 2003 22:53:55 +0000 (22:53 +0000)
committerChris Hanson <org/chris-hanson/cph>
Wed, 9 Jul 2003 22:53:55 +0000 (22:53 +0000)
v7/src/microcode/syscall.h
v7/src/microcode/uxsock.c
v7/src/microcode/uxtop.c

index 69efa12d26a8fb0d8d16731d765036714dd5a324..77fac4dcf47e6d8160d0392f8a77eb9317a13734 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: syscall.h,v 1.16 2003/07/09 04:13:44 cph Exp $
+$Id: syscall.h,v 1.17 2003/07/09 22:53:51 cph Exp $
 
 Copyright 1993,1994,1995,1996,1997,1999 Massachusetts Institute of Technology
 Copyright 2000,2003 Massachusetts Institute of Technology
@@ -109,7 +109,8 @@ enum syscall_names
   syscall_mktime,
   syscall_dld,
   syscall_statfs,
-  syscall_fstatfs
+  syscall_fstatfs,
+  syscall_setsockopt
 };
 \f
 enum syserr_names
index 0268b5dfb7cc4f351bad05016ef0a984588241cc..8b6852db734a6c150e7871a03a201c886197a9d2 100644 (file)
@@ -1,8 +1,9 @@
 /* -*-C-*-
 
-$Id: uxsock.c,v 1.30 2003/02/14 18:28:24 cph Exp $
+$Id: uxsock.c,v 1.31 2003/07/09 22:53:38 cph Exp $
 
-Copyright (c) 1990-2001 Massachusetts Institute of Technology
+Copyright 1993,1996,1997,1998,1999,2000 Massachusetts Institute of Technology
+Copyright 2001,2003 Massachusetts Institute of Technology
 
 This file is part of MIT/GNU Scheme.
 
@@ -251,13 +252,24 @@ DEFUN (OS_bind_tcp_server_socket, (channel, host, port),
        unsigned int port)
 {
   struct sockaddr_in address;
+  int one = 1;
+
   (address . sin_family) = AF_INET;
   memcpy ((& (address . sin_addr)), host, (sizeof (address . sin_addr)));
   (address . sin_port) = port;
+
+  STD_VOID_SYSTEM_CALL
+    (syscall_setsockopt,
+     (setsockopt ((CHANNEL_DESCRIPTOR (channel)),
+                 SOL_SOCKET,
+                 SO_REUSEADDR,
+                 (&one),
+                 (sizeof (one)))));
   STD_VOID_SYSTEM_CALL
-    (syscall_bind, (UX_bind ((CHANNEL_DESCRIPTOR (channel)),
-                            ((struct sockaddr *) (&address)),
-                            (sizeof (struct sockaddr_in)))));
+    (syscall_bind,
+     (UX_bind ((CHANNEL_DESCRIPTOR (channel)),
+              ((struct sockaddr *) (&address)),
+              (sizeof (struct sockaddr_in)))));
 }
 
 #ifndef SOCKET_LISTEN_BACKLOG
index f5dd9af8dd9c3295b183fe44f41898da3521d8d9..28653b8603af0d249861c39c42313a10eab644fb 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: uxtop.c,v 1.29 2003/07/09 04:13:33 cph Exp $
+$Id: uxtop.c,v 1.30 2003/07/09 22:53:55 cph Exp $
 
 Copyright 1990,1991,1992,1993,1994,1995 Massachusetts Institute of Technology
 Copyright 1996,1997,1999,2000,2002,2003 Massachusetts Institute of Technology
@@ -386,7 +386,8 @@ static char * syscall_names_table [] =
   "mktime",
   "dynamic-load",
   "statfs",
-  "fstatfs"
+  "fstatfs",
+  "setsockopt"
 };
 
 void