diff --git a/oio-unix.c b/oio-unix.c index 28696851..20939a1b 100644 --- a/oio-unix.c +++ b/oio-unix.c @@ -473,8 +473,9 @@ void oio_tcp_connect(oio_handle* handle) { } else { oio_err err = oio_err_new(handle, error); - if (req->connect_cb) { - req->connect_cb(req, err); + oio_connect_cb connect_cb = req->cb; + if (connect_cb) { + connect_cb(req, err); } handle->err = err; diff --git a/oio-unix.h b/oio-unix.h index a41bc946..e556113c 100644 --- a/oio-unix.h +++ b/oio-unix.h @@ -40,7 +40,6 @@ typedef struct { #define oio_req_private_fields \ - oio_connect_cb connect_cb; \ ngx_queue_t read_reqs; \ oio_buf* read_bufs; \ ev_timer timer; \ diff --git a/test/test-list.h b/test/test-list.h index 5eda4421..f38bbabc 100644 --- a/test/test-list.h +++ b/test/test-list.h @@ -25,6 +25,7 @@ TEST_DECLARE (close_cb_stack) TEST_DECLARE (timeout) TEST_DECLARE (fail_always) TEST_DECLARE (pass_always) +TEST_DECLARE (test_connection_fail) TASK_LIST_START @@ -38,4 +39,5 @@ TASK_LIST_START TEST_ENTRY (fail_always) TEST_ENTRY (pass_always) + TEST_ENTRY (test_connection_fail) TASK_LIST_END