#include <stdarg.h>
#include "evdns.h"
+#include "evutil.h"
#include "log.h"
#ifdef WIN32
#include <windows.h>
}
return 1;
}
-#define CLOSE_SOCKET(x) closesocket(x)
#else
#define last_error(sock) (errno)
#define error_is_eagain(err) ((err) == EAGAIN)
-#define CLOSE_SOCKET(x) close(x)
#endif
+#define CLOSE_SOCKET(s) EVUTIL_CLOSESOCKET(s)
#define ISSPACE(c) isspace((int)(unsigned char)(c))
#define ISDIGIT(c) isdigit((int)(unsigned char)(c))
ns->socket = socket(PF_INET, SOCK_DGRAM, 0);
if (ns->socket < 0) { err = 1; goto out1; }
-#ifdef WIN32
- {
- u_long nonblocking = 1;
- ioctlsocket(ns->socket, FIONBIO, &nonblocking);
- }
-#else
- fcntl(ns->socket, F_SETFL, O_NONBLOCK);
-#endif
+ evutil_make_socket_nonblocking(ns->socket);
sin.sin_addr.s_addr = address;
sin.sin_port = htons(port);
sin.sin_family = AF_INET;
int sock;
struct sockaddr_in my_addr;
sock = socket(PF_INET, SOCK_DGRAM, 0);
- fcntl(sock, F_SETFL, O_NONBLOCK);
+ evutil_make_socket_nonblocking(sock);
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(10053);
my_addr.sin_addr.s_addr = INADDR_ANY;
#include "strlcpy-internal.h"
#include "event.h"
#include "evhttp.h"
+#include "evutil.h"
#include "log.h"
#include "http-internal.h"
if ((x)->base != NULL) event_base_set((x)->base, y); \
} while (0)
-static int
-event_make_socket_nonblocking(int fd)
-{
-
-#ifdef WIN32
- {
- unsigned long nonblocking = 1;
- ioctlsocket(fd, FIONBIO, (unsigned long*) &nonblocking);
- }
-#else
- if (fcntl(fd, F_SETFL, O_NONBLOCK) == -1) {
- event_warn("fcntl(O_NONBLOCK)");
- return -1;
- }
-#endif
- return 0;
-}
-
extern int debug;
static int socket_connect(int fd, const char *address, unsigned short port);
event_del(&evcon->ev);
if (evcon->fd != -1)
- close(evcon->fd);
+ EVUTIL_CLOSESOCKET(evcon->fd);
if (evcon->bind_address != NULL)
free(evcon->bind_address);
if (evcon->state == EVCON_CONNECTED && evcon->closecb != NULL)
(*evcon->closecb)(evcon, evcon->closecb_arg);
- close(evcon->fd);
+ EVUTIL_CLOSESOCKET(evcon->fd);
evcon->fd = -1;
}
evcon->state = EVCON_DISCONNECTED;
}
if (socket_connect(evcon->fd, evcon->address, evcon->port) == -1) {
- close(evcon->fd); evcon->fd = -1;
+ EVUTIL_CLOSESOCKET(evcon->fd); evcon->fd = -1;
return (-1);
}
event_warn("%s: bad accept", __func__);
return;
}
- if (event_make_socket_nonblocking(nfd) < 0)
+ if (evutil_make_socket_nonblocking(nfd) < 0)
return;
evhttp_get_request(http, nfd, (struct sockaddr *)&ss, addrlen);
if (listen(fd, 10) == -1) {
event_warn("%s: listen", __func__);
- close(fd);
+ EVUTIL_CLOSESOCKET(fd);
return (-1);
}
/* Remove the accepting part */
event_del(&http->bind_ev);
- close(fd);
+ EVUTIL_CLOSESOCKET(fd);
while ((evcon = TAILQ_FIRST(&http->connections)) != NULL) {
/* evhttp_connection_free removes the connection */
return (-1);
}
- if (event_make_socket_nonblocking(fd) < 0)
+ if (evutil_make_socket_nonblocking(fd) < 0)
goto out;
#ifndef WIN32
out:
serrno = errno;
- close(fd);
+ EVUTIL_CLOSESOCKET(fd);
errno = serrno;
return (-1);
}