summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/curl/curl.c6
-rw-r--r--src/curl/curl.h1
-rw-r--r--src/line_processor.c12
-rw-r--r--src/multiplex.c2
-rw-r--r--src/packet_pool.c1
-rw-r--r--subprojects/libalabaster.wrap2
6 files changed, 14 insertions, 10 deletions
diff --git a/src/curl/curl.c b/src/curl/curl.c
index d317224..e074643 100644
--- a/src/curl/curl.c
+++ b/src/curl/curl.c
@@ -19,14 +19,16 @@ static void curl_socket_action_callback(struct ev_loop *loop, ev_io *w, s32 reve
curl->handle_events(curl->userdata, curl);
}
+// TODO: ev_io_set
static void set_sock(struct nn_curl *curl, s32 what)
{
- if (curl->event.active) {
+ if (curl->started) {
ev_io_stop(curl->loop->ev, &curl->event);
}
s32 action = (what & CURL_POLL_IN ? EV_READ : 0) | (what & CURL_POLL_OUT ? EV_WRITE : 0);
ev_io_init(&curl->event, curl_socket_action_callback, curl->sock, action);
ev_io_start(curl->loop->ev, &curl->event);
+ curl->started = true;
}
static s32 sock_callback(CURL *e, curl_socket_t s, s32 what, void *cbp, void *sockp)
@@ -102,7 +104,7 @@ bool nn_curl_init(struct nn_curl *curl)
curl->loop = NULL;
curl->event.data = curl;
- curl->event.active = 0;
+ curl->started = false;
curl->timer_started = false;
curl->added = false;
diff --git a/src/curl/curl.h b/src/curl/curl.h
index 7a5e31f..dd5798a 100644
--- a/src/curl/curl.h
+++ b/src/curl/curl.h
@@ -8,6 +8,7 @@
struct nn_curl {
struct nn_event_loop *loop;
ev_io event;
+ bool started;
ev_timer timer;
bool timer_started;
CURL *handle;
diff --git a/src/line_processor.c b/src/line_processor.c
index 1d2d8f5..41f516e 100644
--- a/src/line_processor.c
+++ b/src/line_processor.c
@@ -48,20 +48,20 @@ static void read_callback(struct ev_loop *loop, ev_io *w, s32 revents)
cl->index += ret;
ptr = nn_buffer_get_ptr(&cl->buf, 0);
- str *s = al_str_w((char *)ptr, 0, cl->index);
+ str s = *al_str_w((char *)ptr, 0, cl->index);
str *dl = &pro->delim;
u32 offset = dl->len - 1;
for (size_t i = cl->mark; i < cl->index - offset; i++) {
- if (al_str_cmp(s, dl, i, dl->len) == 0) {
- s->len = i;
+ if (al_str_cmp(&s, dl, i, dl->len) == 0) {
+ s.len = i;
- if (al_str_eq(s, LINE_PROCESSOR_END)) {
+ if (al_str_eq(&s, LINE_PROCESSOR_END)) {
remove_client(pro, cl);
return;
}
- switch (pro->callback(pro->userdata, s)) {
+ switch (pro->callback(pro->userdata, &s)) {
case NNWT_LINE_PROCESSOR_STOP:
nn_line_processor_stop(pro);
return;
@@ -72,7 +72,7 @@ static void read_callback(struct ev_loop *loop, ev_io *w, s32 revents)
size_t skip = i + offset + 1;
cl->index = cl->index - skip;
al_memmove(ptr, &ptr[skip], cl->index);
- s = al_str_w((char *)ptr, 0, cl->index);
+ s = *al_str_w((char *)ptr, 0, cl->index);
cl->mark = i = 0;
}
diff --git a/src/multiplex.c b/src/multiplex.c
index 24729a2..0d49c53 100644
--- a/src/multiplex.c
+++ b/src/multiplex.c
@@ -57,9 +57,9 @@ bool nn_multiplex_socket_listen(struct nn_multiplex_socket *multi, struct nn_eve
void nn_multiplex_socket_close(struct nn_multiplex_socket *multi)
{
+ ev_io_stop(multi->loop->ev, &multi->event);
nn_socket_shutdown(&multi->sock);
nn_socket_close(&multi->sock);
- ev_io_stop(multi->loop->ev, &multi->event);
}
static struct nn_multiplex_direct multiplex_direct_global = { 0 };
diff --git a/src/packet_pool.c b/src/packet_pool.c
index 3f454cd..db74eb9 100644
--- a/src/packet_pool.c
+++ b/src/packet_pool.c
@@ -90,6 +90,7 @@ void nn_packet_pool_submit(struct nn_packet_pool *pool, struct nn_packet *packet
nn_mutex_lock(&pool->mutex);
if (pool->disabled) {
+ return_internal(pool, packet);
nn_mutex_unlock(&pool->mutex);
return;
}
diff --git a/subprojects/libalabaster.wrap b/subprojects/libalabaster.wrap
index d155d8a..177c4e4 100644
--- a/subprojects/libalabaster.wrap
+++ b/subprojects/libalabaster.wrap
@@ -1,4 +1,4 @@
[wrap-git]
url = https://git.akon.city/libalabaster
-revision = 9532606e6bc39ffe5128cec60a762545e4550052
+revision = 27b5e13d75c58d5e32538a4b5aef65ab86f4bb38
depth = 1