diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2023-09-10 04:14:17 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2023-09-10 04:14:17 -0500 |
| commit | f09a4271d3f306d57f0f9a4b169c4bfd46201370 (patch) | |
| tree | ecaa77e92620907d275ebacdee8833342958c0a6 /fcgiwrap.c | |
| parent | 2c6d8f1181e5fbc468484d52f50c44471f11b58a (diff) | |
Add better error handling for socket setup
Diffstat (limited to 'fcgiwrap.c')
| -rw-r--r-- | fcgiwrap.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -793,18 +793,30 @@ invalid_url: fd = socket(sa.sa.sa_family, SOCK_STREAM, 0); if (fd < 0) { perror("Failed to create socket"); - return -1; + goto cleanup_socket; } if (bind(fd, &sa.sa, sockaddr_size) < 0) { perror("Failed to bind"); - return -1; + goto cleanup_fd; } if (listen_on_fd(fd) < 0) { - return -1; + goto cleanup_fd; } return fd; + +cleanup_fd: + + close(fd); + +cleanup_socket: + + if(sa.sa.sa_family == AF_UNIX) { + unlink(sa.sa_un.sun_path); + } + + return -1; } int main(int argc, char **argv) |
