summaryrefslogtreecommitdiff
path: root/src/util/crypto_helper_esign.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/crypto_helper_esign.c')
-rw-r--r--src/util/crypto_helper_esign.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/util/crypto_helper_esign.c b/src/util/crypto_helper_esign.c
index f98faae2c..29891d754 100644
--- a/src/util/crypto_helper_esign.c
+++ b/src/util/crypto_helper_esign.c
@@ -391,6 +391,7 @@ TALER_CRYPTO_helper_esign_poll (struct TALER_CRYPTO_ExchangeSignHelper *esh)
{
char buf[UINT16_MAX];
ssize_t ret;
+ unsigned int retry_limit = 10;
const struct GNUNET_MessageHeader *hdr
= (const struct GNUNET_MessageHeader *) buf;
int flag = MSG_DONTWAIT;
@@ -417,11 +418,18 @@ TALER_CRYPTO_helper_esign_poll (struct TALER_CRYPTO_ExchangeSignHelper *esh)
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Restarting connection to EdDSA helper, did not come up properly\n");
do_disconnect (esh);
+ if (0 == retry_limit)
+ return; /* give up */
try_connect (esh);
if (-1 == esh->sock)
return; /* give up */
+ retry_limit--;
+ flag = MSG_DONTWAIT;
+ }
+ else
+ {
+ flag = 0; /* syscall must be non-blocking this time */
}
- flag = 0; /* syscall must be non-blocking this time */
continue; /* try again */
}
GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,