Compare commits
3 Commits
535e1add96
...
4b4e7bd257
Author | SHA1 | Date | |
---|---|---|---|
4b4e7bd257
|
|||
8d6b7105f3
|
|||
95e2ddb24c
|
18
src/async.c
18
src/async.c
@@ -42,28 +42,28 @@ static int async_add_to_queue(evt_listen_t *evt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int async_exec(evt_listen_t *evt, short r_events) {
|
static int async_exec(evt_listen_t *evt, short r_events) {
|
||||||
|
int ret, e = errno;
|
||||||
if (r_events & evt->events) {
|
if (r_events & evt->events) {
|
||||||
// specified event(s) occurred
|
// specified event(s) occurred
|
||||||
if (evt->socket && !sock_check(evt->socket)) {
|
if (evt->socket && !sock_check(evt->socket)) {
|
||||||
evt->err_cb(evt->err_arg);
|
evt->err_cb(evt->err_arg);
|
||||||
errno = 0;
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
evt->cb(evt->arg);
|
evt->cb(evt->arg);
|
||||||
errno = 0;
|
ret = (evt->flags & ASYNC_KEEP) ? 1 : 0;
|
||||||
|
|
||||||
if (evt->flags & ASYNC_KEEP)
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
} else if (r_events & (POLLERR | POLLHUP | POLLNVAL)) {
|
} else if (r_events & (POLLERR | POLLHUP | POLLNVAL)) {
|
||||||
// error occurred
|
// error occurred
|
||||||
evt->err_cb(evt->err_arg);
|
evt->err_cb(evt->err_arg);
|
||||||
errno = 0;
|
ret = 0;
|
||||||
return 0;
|
|
||||||
} else {
|
} else {
|
||||||
// no event occurred
|
// no event occurred
|
||||||
return -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger_set_prefix("");
|
||||||
|
errno = e;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int async_check(evt_listen_t *evt) {
|
static int async_check(evt_listen_t *evt) {
|
||||||
|
@@ -154,7 +154,7 @@ int sock_close(sock *s) {
|
|||||||
int sock_check(sock *s) {
|
int sock_check(sock *s) {
|
||||||
char buf;
|
char buf;
|
||||||
int e = errno;
|
int e = errno;
|
||||||
long ret = recv(s->socket, &buf, 1, MSG_PEEK | MSG_DONTWAIT);
|
long ret = sock_recv(s, &buf, 1, MSG_PEEK | MSG_DONTWAIT);
|
||||||
errno = e;
|
errno = e;
|
||||||
return ret == 1;
|
return ret == 1;
|
||||||
}
|
}
|
||||||
|
@@ -208,5 +208,5 @@ int base64_encode(void *data, unsigned long data_len, char *output, unsigned lon
|
|||||||
long clock_micros(void) {
|
long clock_micros(void) {
|
||||||
struct timespec time;
|
struct timespec time;
|
||||||
clock_gettime(CLOCK_MONOTONIC, &time);
|
clock_gettime(CLOCK_MONOTONIC, &time);
|
||||||
return time.tv_sec * 10000000 + time.tv_nsec / 1000;
|
return time.tv_sec * 1000000 + time.tv_nsec / 1000;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user