diff options
author | goodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-17 17:43:38 +0000 |
---|---|---|
committer | goodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-17 17:43:38 +0000 |
commit | 12821c285257fbd1b28086ca0f11691dbc5479c9 (patch) | |
tree | 611bc942a671cad2aad891fb64b175e1b446561a /src | |
parent | 704ef2905ec06079fbc00a51eee942f37654d3d4 (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.c | 11 |
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; |