gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-merchant] branch master updated: -refine back-off logic for taler


From: gnunet
Subject: [taler-merchant] branch master updated: -refine back-off logic for taler-merchant-wirewatch
Date: Sun, 28 Jan 2024 18:16:41 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new b4ee41f8 -refine back-off logic for taler-merchant-wirewatch
b4ee41f8 is described below

commit b4ee41f8e0bbfe26e189764fb1773131beb3a9eb
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Jan 28 18:16:38 2024 +0100

    -refine back-off logic for taler-merchant-wirewatch
---
 src/backend/taler-merchant-wirewatch.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/backend/taler-merchant-wirewatch.c 
b/src/backend/taler-merchant-wirewatch.c
index ab49d8f5..350d8560 100644
--- a/src/backend/taler-merchant-wirewatch.c
+++ b/src/backend/taler-merchant-wirewatch.c
@@ -80,6 +80,11 @@ struct Watch
    */
   struct GNUNET_TIME_Relative delay;
 
+  /**
+   * How long should long-polling take at least?
+   */
+  struct GNUNET_TIME_Absolute long_poll_timeout;
+
   /**
    * Login data for the bank.
    */
@@ -365,6 +370,8 @@ credit_cb (
         GNUNET_SCHEDULER_shutdown ();
         return GNUNET_SYSERR;
       }
+      /* Success => reset back-off timer! */
+      w->delay = GNUNET_TIME_UNIT_ZERO;
       {
         struct GNUNET_DB_EventHeaderP es = {
           .size = htons (sizeof (es)),
@@ -381,9 +388,20 @@ credit_cb (
     return GNUNET_OK;
   case MHD_HTTP_NO_CONTENT:
     save (w);
-    w->delay = GNUNET_TIME_UNIT_ZERO;
+    /* Delay artificially if server returned before long-poll timeout */
+    w->delay = GNUNET_TIME_absolute_get_remaining (w->long_poll_timeout);
+    break;
+  case MHD_HTTP_NOT_FOUND:
+    /* configuration likely wrong, wait at least 1 minute, backoff up to 15 
minutes! */
+    w->delay = GNUNET_TIME_relative_max (GNUNET_TIME_UNIT_MINUTES,
+                                         GNUNET_TIME_STD_BACKOFF (w->delay));
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "Unexpected HTTP status code %u(%d) from bank\n",
+                http_status,
+                ec);
     break;
   default:
+    /* Something went wrong, try again, but with back-off */
     w->delay = GNUNET_TIME_STD_BACKOFF (w->delay);
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                 "Unexpected HTTP status code %u(%d) from bank\n",
@@ -415,6 +433,8 @@ do_work (void *cls)
 
   w->task = NULL;
   w->found = false;
+  w->long_poll_timeout
+    = GNUNET_TIME_relative_to_absolute (BANK_TIMEOUT);
   w->hh = TALER_MERCHANT_BANK_credit_history (ctx,
                                               &w->ad,
                                               w->start_row,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]