Fix: partial recv lead to client disconnect
[lttng-tools.git] / src / bin / lttng-sessiond / notification-thread-events.c
index 052689a0ebd8439dbf11db0172df7eb520c68605..f7a52463862afa94f167ee181d54250e767cd39b 100644 (file)
@@ -928,7 +928,10 @@ int evaluate_condition_for_client(const struct lttng_trigger *trigger,
                ret = -1;
                goto end;
        }
-
+       if (ret) {
+               /* Fatal error. */
+               goto end;
+       }
        if (!evaluation) {
                /* Evaluation yielded nothing. Normal exit. */
                DBG("[notification-thread] Newly subscribed-to condition evaluated to false, nothing to report to client");
@@ -1860,8 +1863,7 @@ int condition_is_supported(struct lttng_condition *condition)
                 * buffers. Therefore, we reject triggers that require that
                 * mechanism to be available to be evaluated.
                 */
-               ret = kernel_supports_ring_buffer_snapshot_sample_positions(
-                               kernel_tracer_fd);
+               ret = kernel_supports_ring_buffer_snapshot_sample_positions();
                break;
        }
        default:
@@ -2572,8 +2574,7 @@ int client_flush_outgoing_queue(struct notification_client *client,
        ret = lttcomm_send_unix_sock_non_block(client->socket,
                        client->communication.outbound.buffer.data,
                        to_send_count);
-       if ((ret < 0 && (errno == EAGAIN || errno == EWOULDBLOCK)) ||
-                       (ret > 0 && ret < to_send_count)) {
+       if ((ret >= 0 && ret < to_send_count)) {
                DBG("[notification-thread] Client (socket fd = %i) outgoing queue could not be completely flushed",
                                client->socket);
                to_send_count -= max(ret, 0);
This page took 0.024025 seconds and 4 git commands to generate.