X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libust%2Flttng-ust-comm.c;h=1c7b35a36125fa952824898aa11b7ba21c55b794;hb=d3a492d1abfdf2aa19b7187a56b26a43f1a3e28e;hp=41d1280c8fe901dcf506ae608758b71789c2499c;hpb=1ea11eab9f65504b2d217ef16f53f52ff941c630;p=lttng-ust.git diff --git a/libust/lttng-ust-comm.c b/libust/lttng-ust-comm.c index 41d1280c..1c7b35a3 100644 --- a/libust/lttng-ust-comm.c +++ b/libust/lttng-ust-comm.c @@ -95,9 +95,30 @@ int register_app_to_sessiond(int socket) } static -int handle_message(int sock, struct lttcomm_ust_msg *lum) +int send_reply(int sock, struct lttcomm_ust_reply *lur) { ssize_t len; + + len = lttcomm_send_unix_sock(sock, &lur, sizeof(lur)); + switch (len) { + case sizeof(lur): + DBG("message successfully sent"); + return 0; + case -1: + if (errno == ECONNRESET) { + printf("remote end closed connection\n"); + return 0; + } + return -1; + default: + printf("incorrect message size: %zd\n", len); + return -1; + } +} + +static +int handle_message(int sock, struct lttcomm_ust_msg *lum) +{ int ret = 0; pthread_mutex_lock(<tng_ust_comm_mutex); @@ -115,7 +136,6 @@ int handle_message(int sock, struct lttcomm_ust_msg *lum) DBG("Handling create session message"); memset(&lur, 0, sizeof(lur)); lur.cmd_type = UST_CREATE_SESSION; - ret = lttng_abi_create_session(); if (ret >= 0) { lur.ret_val = ret; @@ -123,24 +143,7 @@ int handle_message(int sock, struct lttcomm_ust_msg *lum) } else { lur.ret_code = LTTCOMM_SESSION_FAIL; } - len = lttcomm_send_unix_sock(sock, &lur, sizeof(lur)); - switch (len) { - case sizeof(lur): - DBG("message successfully sent"); - break; - case -1: - if (errno == ECONNRESET) { - printf("remote end closed connection\n"); - ret = 0; - goto end; - } - ret = -1; - goto end; - default: - printf("incorrect message size: %zd\n", len); - ret = -1; - goto end; - } + ret = send_reply(sock, &lur); break; } case UST_RELEASE: @@ -151,31 +154,13 @@ int handle_message(int sock, struct lttcomm_ust_msg *lum) lum->handle); memset(&lur, 0, sizeof(lur)); lur.cmd_type = UST_RELEASE; - ret = objd_unref(lum->handle); if (!ret) { lur.ret_code = LTTCOMM_OK; } else { lur.ret_code = LTTCOMM_ERR; } - len = lttcomm_send_unix_sock(sock, &lur, sizeof(lur)); - switch (len) { - case sizeof(lur): - DBG("message successfully sent\n"); - break; - case -1: - if (errno == ECONNRESET) { - printf("remote end closed connection\n"); - ret = 0; - goto end; - } - ret = -1; - goto end; - default: - printf("incorrect message size: %zd\n", len); - ret = -1; - goto end; - } + ret = send_reply(sock, &lur); break; } default: @@ -249,7 +234,7 @@ restart: case sizeof(lum): DBG("message received\n"); ret = handle_message(sock, &lum); - if (ret) { + if (ret < 0) { ERR("Error handling message\n"); } continue;