diff --git a/src/client.c b/src/client.c index a07d2fd..95cf160 100644 --- a/src/client.c +++ b/src/client.c @@ -205,32 +205,34 @@ static int leader_idx(ToastyFS *tfs) static void send_message_to_server(ToastyFS *tfs, int server_idx, MessageHeader *msg) { + ByteQueue *output; int conn_idx = tcp_index_from_tag(&tfs->tcp, server_idx); if (conn_idx < 0) { - tcp_connect(&tfs->tcp, tfs->server_addrs[server_idx], server_idx, NULL); - return; + if (tcp_connect(&tfs->tcp, tfs->server_addrs[server_idx], server_idx, &output) < 0) + return; + } else { + output = tcp_output_buffer(&tfs->tcp, conn_idx); + if (output == NULL) + return; } - ByteQueue *output = tcp_output_buffer(&tfs->tcp, conn_idx); - if (output == NULL) - return; - byte_queue_write(output, msg, msg->length); } static void send_message_to_server_ex(ToastyFS *tfs, int server_idx, MessageHeader *msg, void *extra, int extra_len) { + ByteQueue *output; int conn_idx = tcp_index_from_tag(&tfs->tcp, server_idx); if (conn_idx < 0) { - tcp_connect(&tfs->tcp, tfs->server_addrs[server_idx], server_idx, NULL); - return; + if (tcp_connect(&tfs->tcp, tfs->server_addrs[server_idx], server_idx, &output) < 0) + return; + } else { + output = tcp_output_buffer(&tfs->tcp, conn_idx); + if (output == NULL) + return; } - ByteQueue *output = tcp_output_buffer(&tfs->tcp, conn_idx); - if (output == NULL) - return; - byte_queue_write(output, msg, msg->length - extra_len); byte_queue_write(output, extra, extra_len); }