From d60565463249fb73e49377ff61ef4918ef809aec Mon Sep 17 00:00:00 2001 From: William Cummings Date: Wed, 14 Aug 2013 19:32:10 -0400 Subject: [PATCH] closes #2 Check the rv from lcb_wait when connecting --- c_src/callbacks.c | 5 +---- c_src/cb.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/c_src/callbacks.c b/c_src/callbacks.c index 9d2300e..aea3e9d 100644 --- a/c_src/callbacks.c +++ b/c_src/callbacks.c @@ -9,10 +9,7 @@ void error_callback(lcb_t instance, const char *errinfo) { (void)instance; - if(error != LCB_ETIMEDOUT) { - fprintf(stderr, "Fatal error\r\n"); - exit(EXIT_FAILURE); - } + // do nothing } void get_callback(lcb_t instance, diff --git a/c_src/cb.c b/c_src/cb.c index 5253c3e..f51e565 100644 --- a/c_src/cb.c +++ b/c_src/cb.c @@ -89,12 +89,17 @@ ERL_NIF_TERM cb_connect(ErlNifEnv* env, handle_t* handle, void* obj) (void)lcb_set_remove_callback(handle->instance, remove_callback); (void)lcb_set_http_complete_callback(handle->instance, http_callback); - if (lcb_connect(handle->instance) != LCB_SUCCESS) { - return enif_make_tuple2(env, enif_make_atom(env, "error"), - enif_make_string(env, "Failed to connect libcouchbase instance to server\n", ERL_NIF_LATIN1)); + err = lcb_connect(handle->instance); + + if (err != LCB_SUCCESS) { + return return_lcb_error(env, err); } - lcb_wait(handle->instance); + err = lcb_wait(handle->instance); + + if(err != LCB_SUCCESS) { + return return_lcb_error(env, err); + } return enif_make_atom(env, "ok"); }