fd_util: add function close_socket()
Wrap close(), use closesocket() on WIN32/WinSock.
This commit is contained in:
parent
77a56c7c5a
commit
c476819cb1
1
NEWS
1
NEWS
|
@ -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 @@
|
||||||
|
|
||||||
#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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
#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);
|
||||||
|
|
||||||
#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,
|
||||||
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,
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue