diff options
| author | Dave Reisner <dreisner@archlinux.org> | 2012-08-19 15:10:38 -0400 | 
|---|---|---|
| committer | Dave Reisner <dreisner@archlinux.org> | 2012-08-19 22:04:42 -0400 | 
| commit | 0c93fa9ef0e014ff3504f098ed5d0cf6c23641d2 (patch) | |
| tree | a98c28355ad1bcc6cf8363517849529652533e76 | |
| parent | 13288627b4162ea417ab0edaff81648e0df82152 (diff) | |
| download | fcgiwrap-0c93fa9ef0e014ff3504f098ed5d0cf6c23641d2.tar.xz fcgiwrap-0c93fa9ef0e014ff3504f098ed5d0cf6c23641d2.zip | |
split listen() logic into separate function
| -rw-r--r-- | fcgiwrap.c | 42 | 
1 files changed, 24 insertions, 18 deletions
| @@ -638,13 +638,35 @@ static void prefork(int nchildren)  	}  } +static int listen_on_fd(int fd) { +	int one = 1; + +	if (listen(fd, 511) < 0) { +		perror("Failed to listen"); +		return -1; +	} +	if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one) < 0) { +		perror("Failed to enable SO_REUSEADDR"); +		return -1; +	} +	if (dup2(fd, 0) < 0) { +		perror("Failed to move socket to fd 0"); +		return -1; +	} +	if (close(fd) < 0) { +		perror("Failed to close original socket"); +		return -1; +	} + +	return 0; +} +  int setup_socket(char *url) {  	char *p = url;  	char *q;  	int fd;  	int port;  	size_t sockaddr_size; -	int one = 1;  	union {  		struct sockaddr sa; @@ -718,24 +740,8 @@ invalid_url:  		perror("Failed to bind");  		return -1;  	} -	if (listen(fd, 511) < 0) { -		perror("Failed to listen"); -		return -1; -	} -	if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one) < 0) { -		perror("Failed to enable SO_REUSEADDR"); -		return -1; -	} -	if (dup2(fd, 0) < 0) { -		perror("Failed to move socket to fd 0"); -		return -1; -	} -	if (close(fd) < 0) { -		perror("Failed to close original socket"); -		return -1; -	} -	return 0; +	return listen_on_fd(fd);  }  int main(int argc, char **argv) | 
