aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental/http')
-rw-r--r--src/supplemental/http/http_client.c7
-rw-r--r--src/supplemental/http/http_conn.c15
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);
}