aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgoodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164>2000-09-17 17:43:38 +0000
committergoodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164>2000-09-17 17:43:38 +0000
commit12821c285257fbd1b28086ca0f11691dbc5479c9 (patch)
tree611bc942a671cad2aad891fb64b175e1b446561a /src
parent704ef2905ec06079fbc00a51eee942f37654d3d4 (diff)
Added socket reuse if the appropriate things are defined.
Use CCTK_Abort rather than exit. Tom git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPD/trunk@37 1faa4e14-9dd3-4be0-9f0e-ffe519881164
Diffstat (limited to 'src')
-rw-r--r--src/Sockets.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Sockets.c b/src/Sockets.c
index 8891729..122daa5 100644
--- a/src/Sockets.c
+++ b/src/Sockets.c
@@ -249,15 +249,22 @@ int HTTP_MakeSocket (unsigned long port)
{
int sock;
struct sockaddr_in name;
+ int opt;
/* Create the socket. */
sock = socket (PF_INET, SOCK_STREAM, 0);
if (sock < 0)
{
perror ("socket");
- exit (EXIT_FAILURE);
+ CCTK_Abort(NULL, EXIT_FAILURE);
}
+ /* Try to reuse the port if possible */
+#ifdef SO_REUSEADDR
+ opt = 1;
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
+#endif
+
/* Give the socket a name. */
name.sin_family = AF_INET;
name.sin_port = htons (port);
@@ -265,7 +272,7 @@ int HTTP_MakeSocket (unsigned long port)
if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
{
perror ("bind");
- exit (EXIT_FAILURE);
+ CCTK_Abort(NULL,EXIT_FAILURE);
}
return sock;