Commit c476819c authored by Max Kellermann's avatar Max Kellermann

fd_util: add function close_socket()

Wrap close(), use closesocket() on WIN32/WinSock.
parent 77a56c7c
...@@ -9,6 +9,7 @@ ver 0.16.5 (2010/??/??) ...@@ -9,6 +9,7 @@ ver 0.16.5 (2010/??/??)
* decoder: * decoder:
- ffmpeg: higher precision timestamps - ffmpeg: higher precision timestamps
- ffmpeg: don't require key frame for seeking - ffmpeg: don't require key frame for seeking
* WIN32: close sockets properly
ver 0.16.4 (2011/09/01) ver 0.16.4 (2011/09/01)
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "config.h" #include "config.h"
#include "client_internal.h" #include "client_internal.h"
#include "fd_util.h"
#include "fifo_buffer.h" #include "fifo_buffer.h"
#include "socket_util.h" #include "socket_util.h"
#include "permission.h" #include "permission.h"
...@@ -67,7 +68,7 @@ void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid) ...@@ -67,7 +68,7 @@ void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid)
progname, hostaddr); progname, hostaddr);
g_free(hostaddr); g_free(hostaddr);
close(fd); close_socket(fd);
return; return;
} }
...@@ -77,7 +78,7 @@ void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid) ...@@ -77,7 +78,7 @@ void client_new(int fd, const struct sockaddr *sa, size_t sa_length, int uid)
if (client_list_is_full()) { if (client_list_is_full()) {
g_warning("Max Connections Reached!"); g_warning("Max Connections Reached!");
close(fd); close_socket(fd);
return; return;
} }
......
...@@ -304,3 +304,13 @@ inotify_init_cloexec(void) ...@@ -304,3 +304,13 @@ inotify_init_cloexec(void)
} }
#endif #endif
int
close_socket(int fd)
{
#ifdef WIN32
return closesocket(fd);
#else
return close(fd);
#endif
}
...@@ -133,4 +133,10 @@ inotify_init_cloexec(void); ...@@ -133,4 +133,10 @@ inotify_init_cloexec(void);
#endif #endif
/**
* Portable wrapper for close(); use closesocket() on WIN32/WinSock.
*/
int
close_socket(int fd);
#endif #endif
...@@ -201,7 +201,7 @@ httpd_listen_in_event(int fd, const struct sockaddr *address, ...@@ -201,7 +201,7 @@ httpd_listen_in_event(int fd, const struct sockaddr *address,
g_warning("libwrap refused connection (libwrap=%s) from %s", g_warning("libwrap refused connection (libwrap=%s) from %s",
progname, hostaddr); progname, hostaddr);
g_free(hostaddr); g_free(hostaddr);
close(fd); close_socket(fd);
g_mutex_unlock(httpd->mutex); g_mutex_unlock(httpd->mutex);
return; return;
} }
...@@ -222,7 +222,7 @@ httpd_listen_in_event(int fd, const struct sockaddr *address, ...@@ -222,7 +222,7 @@ httpd_listen_in_event(int fd, const struct sockaddr *address,
httpd->clients_cnt < httpd->clients_max)) httpd->clients_cnt < httpd->clients_max))
httpd_client_add(httpd, fd); httpd_client_add(httpd, fd);
else else
close(fd); close_socket(fd);
} else if (fd < 0 && errno != EINTR) { } else if (fd < 0 && errno != EINTR) {
g_warning("accept() failed: %s", g_strerror(errno)); g_warning("accept() failed: %s", g_strerror(errno));
} }
......
...@@ -253,7 +253,7 @@ server_socket_close(struct server_socket *ss) ...@@ -253,7 +253,7 @@ server_socket_close(struct server_socket *ss)
continue; continue;
g_source_remove(s->source_id); g_source_remove(s->source_id);
close(s->fd); close_socket(s->fd);
s->fd = -1; s->fd = -1;
} }
} }
......
...@@ -122,7 +122,7 @@ socket_bind_listen(int domain, int type, int protocol, ...@@ -122,7 +122,7 @@ socket_bind_listen(int domain, int type, int protocol,
if (ret < 0) { if (ret < 0) {
g_set_error(error, listen_quark(), errno, g_set_error(error, listen_quark(), errno,
"setsockopt() failed: %s", g_strerror(errno)); "setsockopt() failed: %s", g_strerror(errno));
close(fd); close_socket(fd);
return -1; return -1;
} }
...@@ -130,7 +130,7 @@ socket_bind_listen(int domain, int type, int protocol, ...@@ -130,7 +130,7 @@ socket_bind_listen(int domain, int type, int protocol,
if (ret < 0) { if (ret < 0) {
g_set_error(error, listen_quark(), errno, g_set_error(error, listen_quark(), errno,
"%s", g_strerror(errno)); "%s", g_strerror(errno));
close(fd); close_socket(fd);
return -1; return -1;
} }
...@@ -138,7 +138,7 @@ socket_bind_listen(int domain, int type, int protocol, ...@@ -138,7 +138,7 @@ socket_bind_listen(int domain, int type, int protocol,
if (ret < 0) { if (ret < 0) {
g_set_error(error, listen_quark(), errno, g_set_error(error, listen_quark(), errno,
"listen() failed: %s", g_strerror(errno)); "listen() failed: %s", g_strerror(errno));
close(fd); close_socket(fd);
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment