From e6f44e22aca3e6aecb5f74e4c32ee347857701c2 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 6 Jan 2021 10:07:12 +0100 Subject: [PATCH] use blocking sendto() call to possibly eliminate need for nanosleep() --- src/util/taler-helper-crypto-eddsa.c | 15 ++++++++------- src/util/taler-helper-crypto-rsa.c | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/util/taler-helper-crypto-eddsa.c b/src/util/taler-helper-crypto-eddsa.c index 8e05302c8..7839ac841 100644 --- a/src/util/taler-helper-crypto-eddsa.c +++ b/src/util/taler-helper-crypto-eddsa.c @@ -450,18 +450,19 @@ transmit (const struct sockaddr_un *addr, socklen_t addr_size, const struct GNUNET_MessageHeader *hdr) { - ssize_t ret; - for (unsigned int i = 0; i<100; i++) { - ret = GNUNET_NETWORK_socket_sendto (unix_sock, - hdr, - ntohs (hdr->size), - (const struct sockaddr *) addr, - addr_size); + ssize_t ret = sendto (GNUNET_NETWORK_get_fd (unix_sock), + hdr, + ntohs (hdr->size), + 0 /* no flags => blocking! */, + (const struct sockaddr *) addr, + addr_size); if ( (-1 == ret) && (EAGAIN == errno) ) { + /* _Maybe_ with blocking sendto(), this should no + longer be needed; still keeping it just in case. */ /* Wait a bit, in case client is just too slow */ struct timespec req = { .tv_sec = 0, diff --git a/src/util/taler-helper-crypto-rsa.c b/src/util/taler-helper-crypto-rsa.c index 9539277ce..ae75e5a2a 100644 --- a/src/util/taler-helper-crypto-rsa.c +++ b/src/util/taler-helper-crypto-rsa.c @@ -516,18 +516,19 @@ transmit (const struct sockaddr_un *addr, socklen_t addr_size, const struct GNUNET_MessageHeader *hdr) { - ssize_t ret; - for (unsigned int i = 0; i<100; i++) { - ret = GNUNET_NETWORK_socket_sendto (unix_sock, - hdr, - ntohs (hdr->size), - (const struct sockaddr *) addr, - addr_size); + ssize_t ret = sendto (GNUNET_NETWORK_get_fd (unix_sock), + hdr, + ntohs (hdr->size), + 0 /* no flags => blocking! */, + (const struct sockaddr *) addr, + addr_size); if ( (-1 == ret) && (EAGAIN == errno) ) { + /* _Maybe_ with blocking sendto(), this should no + longer be needed; still keeping it just in case. */ /* Wait a bit, in case client is just too slow */ struct timespec req = { .tv_sec = 0,