- ret_len = lttng_live_send(viewer_connection, &cmd, sizeof(cmd));
- if (ret_len < 0) {
- BT_LOGE("Error sending cmd: %s", strerror(errno));
- goto error;
- }
- assert(ret_len == sizeof(cmd));
-
- ret_len = lttng_live_send(viewer_connection, &rq, sizeof(rq));
- if (ret_len < 0) {
- BT_LOGE("Error sending get_new_streams request: %s", strerror(errno));
+ /*
+ * Merge the cmd and connection request to prevent a write-write
+ * sequence on the TCP socket. Otherwise, a delayed ACK will prevent the
+ * second write to be performed quickly in presence of Nagle's algorithm.
+ */
+ memcpy(cmd_buf, &cmd, sizeof(cmd));
+ memcpy(cmd_buf + sizeof(cmd), &rq, sizeof(rq));
+ ret_len = lttng_live_send(viewer_connection, &cmd_buf, cmd_buf_len);
+ if (ret_len == BT_SOCKET_ERROR) {
+ BT_LOGE("Error sending get_new_streams request: %s", bt_socket_errormsg());