projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: relayd: missing session unlock on error path
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
live.cpp
diff --git
a/src/bin/lttng-relayd/live.cpp
b/src/bin/lttng-relayd/live.cpp
index 5925642f09837ce7a421c095a3992abc1fc82424..5aa899b282605a0c058f7f497f9b500ad7e0226b 100644
(file)
--- a/
src/bin/lttng-relayd/live.cpp
+++ b/
src/bin/lttng-relayd/live.cpp
@@
-655,7
+655,7
@@
end:
}
static
}
static
-int close_sock(void *data, int *in_fd)
+int close_sock(void *data, int *in_fd
__attribute__((unused))
)
{
struct lttcomm_sock *sock = (lttcomm_sock *) data;
{
struct lttcomm_sock *sock = (lttcomm_sock *) data;
@@
-766,7
+766,7
@@
error:
* This thread manages the listening for new connections on the network
*/
static
* This thread manages the listening for new connections on the network
*/
static
-void *thread_listener(void *data)
+void *thread_listener(void *data
__attribute__((unused))
)
{
int i, ret, pollfd, err = -1;
uint32_t revents, nb_fd;
{
int i, ret, pollfd, err = -1;
uint32_t revents, nb_fd;
@@
-931,7
+931,7
@@
error_sock_control:
* This thread manages the dispatching of the requests to worker threads
*/
static
* This thread manages the dispatching of the requests to worker threads
*/
static
-void *thread_dispatcher(void *data)
+void *thread_dispatcher(void *data
__attribute__((unused))
)
{
int err = -1;
ssize_t ret;
{
int err = -1;
ssize_t ret;
@@
-1266,7
+1266,12
@@
int viewer_get_new_streams(struct relay_connection *conn)
LTTNG_VIEWER_SEEK_BEGINNING, &nb_total, &nb_unsent,
&nb_created, &closed);
if (ret < 0) {
LTTNG_VIEWER_SEEK_BEGINNING, &nb_total, &nb_unsent,
&nb_created, &closed);
if (ret < 0) {
- goto error_unlock_session;
+ /*
+ * This is caused by an internal error; propagate the negative
+ * 'ret' to close the connection.
+ */
+ response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_ERR);
+ goto send_reply_unlock;
}
send_streams = 1;
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_OK);
}
send_streams = 1;
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_OK);
@@
-1321,10
+1326,6
@@
end_put_session:
}
error:
return ret;
}
error:
return ret;
-error_unlock_session:
- pthread_mutex_unlock(&session->lock);
- session_put(session);
- return ret;
}
/*
}
/*
@@
-2661,7
+2662,7
@@
void cleanup_connection_pollfd(struct lttng_poll_event *events, int pollfd)
* This thread does the actual work
*/
static
* This thread does the actual work
*/
static
-void *thread_worker(void *data)
+void *thread_worker(void *data
__attribute__((unused))
)
{
int ret, err = -1;
uint32_t nb_fd;
{
int ret, err = -1;
uint32_t nb_fd;
This page took
0.034247 seconds
and
4
git commands to generate.