X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fust-comm.c;h=31c40070e92758b94779ef6b58e27f7b5ce39a23;hp=accd4276d27c48156bfebb3e0a92602f75b6c60f;hb=0177d773712c6d6b11e395708ae2cc686d6917a4;hpb=ef805c1d5319ddce9777a7b78cbbaf595a7981e2 diff --git a/ltt-sessiond/ust-comm.c b/ltt-sessiond/ust-comm.c index accd4276d..31c40070e 100644 --- a/ltt-sessiond/ust-comm.c +++ b/ltt-sessiond/ust-comm.c @@ -16,6 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include + #include #include "ust-comm.h" @@ -24,12 +26,18 @@ * Send msg containing a command to an UST application via sock and wait for * the reply. * - * Return -1 on error or if reply fails else return 0. + * Return the replied structure or NULL. */ -int ustcomm_send_command(int sock, struct lttcomm_ust_msg *msg) +struct lttcomm_ust_reply *ustcomm_send_command(int sock, + struct lttcomm_ust_msg *msg) { ssize_t len; - struct lttcomm_ust_reply reply; + struct lttcomm_ust_reply *reply; + + /* Extra safety */ + if (msg == NULL || sock < 0) { + goto error; + } DBG("Sending UST command %d to sock %d", msg->cmd, sock); @@ -39,20 +47,22 @@ int ustcomm_send_command(int sock, struct lttcomm_ust_msg *msg) goto error; } - DBG("Receiving UST reply on sock %d", sock); - - /* Get UST reply */ - len = lttcomm_recv_unix_sock(sock, &reply, sizeof(reply)); - if (len < 0) { + reply = malloc(sizeof(struct lttcomm_ust_reply)); + if (reply == NULL) { + perror("malloc ust reply"); goto error; } - if (reply.ret_code != LTTCOMM_OK) { + DBG("Receiving UST reply on sock %d", sock); + + /* Get UST reply */ + len = lttcomm_recv_unix_sock(sock, reply, sizeof(*reply)); + if (len < 0 || len < sizeof(*reply)) { goto error; } - return 0; + return reply; error: - return -1; + return NULL; }