diff options
Diffstat (limited to 'src/supplemental/http')
| -rw-r--r-- | src/supplemental/http/http_client.c | 7 | ||||
| -rw-r--r-- | src/supplemental/http/http_conn.c | 15 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/supplemental/http/http_client.c b/src/supplemental/http/http_client.c index a2427009..aba72715 100644 --- a/src/supplemental/http/http_client.c +++ b/src/supplemental/http/http_client.c @@ -241,11 +241,16 @@ http_connect_cancel(nni_aio *aio, int rv) void nni_http_client_connect(nni_http_client *c, nni_aio *aio) { + int rv; if (nni_aio_begin(aio) != 0) { return; } nni_mtx_lock(&c->mtx); - nni_aio_schedule(aio, http_connect_cancel, aio); + if ((rv = nni_aio_schedule(aio, http_connect_cancel, aio)) != 0) { + nni_mtx_unlock(&c->mtx); + nni_aio_finish_error(aio, rv); + return; + } nni_list_append(&c->aios, aio); if (nni_list_first(&c->aios) == aio) { http_conn_start(c); diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c index 0de40e10..f3b16370 100644 --- a/src/supplemental/http/http_conn.c +++ b/src/supplemental/http/http_conn.c @@ -365,6 +365,8 @@ http_rd_cancel(nni_aio *aio, int rv) static void http_rd_submit(nni_http_conn *conn, nni_aio *aio) { + int rv; + if (nni_aio_begin(aio) != 0) { return; } @@ -372,7 +374,10 @@ http_rd_submit(nni_http_conn *conn, nni_aio *aio) nni_aio_finish_error(aio, NNG_ECLOSED); return; } - nni_aio_schedule(aio, http_rd_cancel, conn); + if ((rv = nni_aio_schedule(aio, http_rd_cancel, conn)) != 0) { + nni_aio_finish_error(aio, rv); + return; + } nni_list_append(&conn->rdq, aio); if (conn->rd_uaio == NULL) { http_rd_start(conn); @@ -479,6 +484,8 @@ http_wr_cancel(nni_aio *aio, int rv) static void http_wr_submit(nni_http_conn *conn, nni_aio *aio) { + int rv; + if (nni_aio_begin(aio) != 0) { return; } @@ -486,8 +493,12 @@ http_wr_submit(nni_http_conn *conn, nni_aio *aio) nni_aio_finish_error(aio, NNG_ECLOSED); return; } + if ((rv = nni_aio_schedule(aio, http_wr_cancel, conn)) != 0) { + nni_aio_finish_error(aio, rv); + return; + } nni_list_append(&conn->wrq, aio); - nni_aio_schedule(aio, http_wr_cancel, conn); + if (conn->wr_uaio == NULL) { http_wr_start(conn); } |
