From 210b3b54f6e75f948b4c0f01d6d2eda99d06ad00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Wed, 18 Feb 2009 17:17:12 +0000 Subject: [PATCH] Fix error handling for unix-socket-connect test git-svn-id: svn://svn.lighttpd.net/spawn-fcgi/trunk@15 4a9f3682-ca7b-49a8-9a55-ba4640e46f83 --- NEWS | 1 + src/spawn-fcgi.c | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index a8a1901..2358034 100644 --- a/NEWS +++ b/NEWS @@ -12,3 +12,4 @@ NEWS * Only disconnect from terminal in fork mode (keep stderr/stdout open in nofork mode) * Allow numerical user and group ids for -u/-g (fixes #1141) * Ignore pid-file option in no-fork mode (instead of producing empty file) + * Fix error handling for unix-socket-connect test diff --git a/src/spawn-fcgi.c b/src/spawn-fcgi.c index 3193bc4..91139f2 100644 --- a/src/spawn-fcgi.c +++ b/src/spawn-fcgi.c @@ -95,20 +95,23 @@ static int fcgi_spawn_connection(char *appPath, char **appArgv, char *addr, unsi return -1; } - if (-1 != connect(fcgi_fd, fcgi_addr, servlen)) { - switch (errno) { - case EADDRINUSE: - fprintf(stderr, "spawn-fcgi: socket is already in use, can't spawn\n"); - break; - default: - fprintf(stderr, "spawn-fcgi: connect failed: %s\n", strerror(errno)); - break; - } + if (0 == connect(fcgi_fd, fcgi_addr, servlen)) { + fprintf(stderr, "spawn-fcgi: socket is already in use, can't spawn\n"); + close(fcgi_fd); return -1; } /* cleanup previous socket if it exists */ - unlink(unixsocket); + if (-1 == unlink(unixsocket)) { + switch (errno) { + case ENOENT: + break; + default: + fprintf(stderr, "spawn-fcgi: removing old socket failed: %s\n", strerror(errno)); + return -1; + } + } + close(fcgi_fd); } else { memset(&fcgi_addr_in, 0, sizeof(fcgi_addr_in));