gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

commit 1ca80565458244e9a9622d65bd3953fa3478372a
parent 4575b1275d7e507b8879c10b2714204789b7d453
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue,  4 Feb 2020 19:18:25 +0100

speed up message goodput in perf_mq(client) by 1/3rd

Diffstat:
Msrc/util/client.c | 21+++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/util/client.c b/src/util/client.c @@ -270,11 +270,22 @@ RETRY: ret = GNUNET_NETWORK_socket_send (cstate->sock, &pos[cstate->msg_off], len - cstate->msg_off); + if ( (-1 == ret) && + (EAGAIN == errno) ) + { + cstate->send_task + = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, + cstate->sock, + &transmit_ready, + cstate); + return; + } if (-1 == ret) { LOG (GNUNET_ERROR_TYPE_WARNING, - "Error during sending message of type %u\n", - ntohs (cstate->msg->type)); + "Error during sending message of type %u: %s\n", + ntohs (cstate->msg->type), + strerror (errno)); if (EINTR == errno) { LOG (GNUNET_ERROR_TYPE_DEBUG, @@ -845,10 +856,8 @@ connection_client_send_impl (struct GNUNET_MQ_Handle *mq, return; /* still waiting for connection */ } cstate->send_task - = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_UNIT_FOREVER_REL, - cstate->sock, - &transmit_ready, - cstate); + = GNUNET_SCHEDULER_add_now (&transmit_ready, + cstate); }