projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: Build out of src tree
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
main.c
diff --git
a/src/bin/lttng-relayd/main.c
b/src/bin/lttng-relayd/main.c
index fdddcbe6efcf54309078b3ad67917b0f46b59bbf..dc6d2564a043abb44bb567d85a2a215d3317363f 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-472,12
+472,6
@@
void *relay_thread_listener(void *data)
struct lttng_poll_event events;
struct lttcomm_sock *control_sock, *data_sock;
struct lttng_poll_event events;
struct lttcomm_sock *control_sock, *data_sock;
- /*
- * Get allocated in this thread, enqueued to a global queue, dequeued and
- * freed in the worker thread.
- */
- struct relay_command *relay_cmd = NULL;
-
DBG("[thread] Relay listener started");
control_sock = relay_init_sock(control_uri);
DBG("[thread] Relay listener started");
control_sock = relay_init_sock(control_uri);
@@
-544,7
+538,13
@@
restart:
ERR("socket poll error");
goto error;
} else if (revents & LPOLLIN) {
ERR("socket poll error");
goto error;
} else if (revents & LPOLLIN) {
- struct lttcomm_sock *newsock = NULL;
+ /*
+ * Get allocated in this thread,
+ * enqueued to a global queue, dequeued
+ * and freed in the worker thread.
+ */
+ struct relay_command *relay_cmd;
+ struct lttcomm_sock *newsock;
relay_cmd = zmalloc(sizeof(struct relay_command));
if (relay_cmd == NULL) {
relay_cmd = zmalloc(sizeof(struct relay_command));
if (relay_cmd == NULL) {
@@
-554,16
+554,19
@@
restart:
if (pollfd == data_sock->fd) {
newsock = data_sock->ops->accept(data_sock);
if (pollfd == data_sock->fd) {
newsock = data_sock->ops->accept(data_sock);
- if (
newsock < 0
) {
+ if (
!newsock
) {
PERROR("accepting data sock");
PERROR("accepting data sock");
+ free(relay_cmd);
goto error;
}
relay_cmd->type = RELAY_DATA;
DBG("Relay data connection accepted, socket %d", newsock->fd);
goto error;
}
relay_cmd->type = RELAY_DATA;
DBG("Relay data connection accepted, socket %d", newsock->fd);
- } else if (pollfd == control_sock->fd) {
+ } else {
+ assert(pollfd == control_sock->fd);
newsock = control_sock->ops->accept(control_sock);
newsock = control_sock->ops->accept(control_sock);
- if (
newsock < 0
) {
+ if (
!newsock
) {
PERROR("accepting control sock");
PERROR("accepting control sock");
+ free(relay_cmd);
goto error;
}
relay_cmd->type = RELAY_CONTROL;
goto error;
}
relay_cmd->type = RELAY_CONTROL;
@@
-573,6
+576,8
@@
restart:
&val, sizeof(int));
if (ret < 0) {
PERROR("setsockopt inet");
&val, sizeof(int));
if (ret < 0) {
PERROR("setsockopt inet");
+ lttcomm_destroy_sock(newsock);
+ free(relay_cmd);
goto error;
}
relay_cmd->sock = newsock;
goto error;
}
relay_cmd->sock = newsock;
@@
-1260,9
+1265,9
@@
static
int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr,
struct relay_command *cmd)
{
int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr,
struct relay_command *cmd)
{
- int ret
= htobe32(LTTNG_OK)
;
+ int ret;
struct lttcomm_relayd_version reply;
struct lttcomm_relayd_version reply;
- struct relay_session *session
= NULL
;
+ struct relay_session *session;
if (cmd->session == NULL) {
session = zmalloc(sizeof(struct relay_session));
if (cmd->session == NULL) {
session = zmalloc(sizeof(struct relay_session));
@@
-1274,10
+1279,17
@@
int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr,
session->id = ++last_relay_session_id;
DBG("Created session %" PRIu64, session->id);
cmd->session = session;
session->id = ++last_relay_session_id;
DBG("Created session %" PRIu64, session->id);
cmd->session = session;
+ } else {
+ session = cmd->session;
}
session->version_check_done = 1;
}
session->version_check_done = 1;
- sscanf(VERSION, "%u.%u", &reply.major, &reply.minor);
+ ret = sscanf(VERSION, "%u.%u", &reply.major, &reply.minor);
+ if (ret < 2) {
+ ERR("Error in scanning version");
+ ret = -1;
+ goto end;
+ }
reply.major = htobe32(reply.major);
reply.minor = htobe32(reply.minor);
ret = cmd->sock->ops->sendmsg(cmd->sock, &reply,
reply.major = htobe32(reply.major);
reply.minor = htobe32(reply.minor);
ret = cmd->sock->ops->sendmsg(cmd->sock, &reply,
This page took
0.025736 seconds
and
4
git commands to generate.