[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-merchant] branch master updated: install SIGCHLD han
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-merchant] branch master updated: install SIGCHLD handler only after wget is done, to ensure we don't block during fakebank interaction |
Date: |
Thu, 14 Dec 2017 13:34: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 ee32930 install SIGCHLD handler only after wget is done, to ensure we
don't block during fakebank interaction
ee32930 is described below
commit ee32930916d3d3c947ec7d3cf94acd01afb3921b
Author: Christian Grothoff <address@hidden>
AuthorDate: Thu Dec 14 13:34:38 2017 +0100
install SIGCHLD handler only after wget is done, to ensure we don't block
during fakebank interaction
---
.../taler-merchant-generate-payments.c | 54 ++++++++++++----------
1 file changed, 30 insertions(+), 24 deletions(-)
diff --git a/src/merchant-tools/taler-merchant-generate-payments.c
b/src/merchant-tools/taler-merchant-generate-payments.c
index 66b011f..4ba257f 100644
--- a/src/merchant-tools/taler-merchant-generate-payments.c
+++ b/src/merchant-tools/taler-merchant-generate-payments.c
@@ -21,7 +21,7 @@
*
* TODO:
* - trigger wirewatch after /admin/add/incoming!
- */
+ */
#include "platform.h"
#include <taler/taler_exchange_service.h>
#include <taler/taler_bank_service.h>
@@ -146,6 +146,11 @@ static int result;
static struct GNUNET_DISK_PipeHandle *sigpipe;
/**
+ * Signal handler we overrode.
+ */
+static struct GNUNET_SIGNAL_Context *shc_chld;
+
+/**
* Name of the configuration file we are using.
*/
static char *cfgfilename;
@@ -341,7 +346,7 @@ struct Command
* Set to bank's identifier for the wire transfer.
*/
uint64_t serial_id;
-
+
} admin_add_incoming;
struct {
@@ -1082,25 +1087,20 @@ interpreter_run (void *cls)
switch (cmd->oc)
{
case OC_END:
-
j++;
-
if (j < times)
{
reset_interpreter (is);
is->ip = 0;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Rewinding the interpreter.\n");
-
GNUNET_SCHEDULER_add_now (&interpreter_run,
is);
return;
}
result = GNUNET_OK;
GNUNET_SCHEDULER_shutdown ();
-
return;
-
case OC_PAY:
{
struct TALER_MERCHANT_PayCoin pc;
@@ -1271,7 +1271,7 @@ interpreter_run (void *cls)
char *subject;
struct TALER_BANK_AuthenticationData auth;
struct TALER_ReservePublicKeyP reserve_pub;
-
+
if (NULL !=
cmd->details.admin_add_incoming.reserve_reference)
{
@@ -1285,7 +1285,7 @@ interpreter_run (void *cls)
else
{
struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
-
+
priv = GNUNET_CRYPTO_eddsa_key_create ();
cmd->details.admin_add_incoming.reserve_priv.eddsa_priv = *priv;
GNUNET_free (priv);
@@ -1334,7 +1334,7 @@ interpreter_run (void *cls)
case OC_RUN_WIREWATCH:
{
const struct GNUNET_DISK_FileHandle *pr;
-
+
cmd->details.run_wirewatch.wirewatch_proc
= GNUNET_OS_start_process (GNUNET_NO,
GNUNET_OS_INHERIT_STD_ALL,
@@ -1356,7 +1356,8 @@ interpreter_run (void *cls)
cmd->details.run_wirewatch.child_death_task
= GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
pr,
- &maint_child_death, is);
+ &maint_child_death,
+ is);
return;
}
case OC_WITHDRAW_SIGN:
@@ -1692,15 +1693,15 @@ run (void *cls,
if (! remote_bank)
{
/* TODO: do not hard-code port, find in cfg */
- fakebank = TALER_FAKEBANK_start (8082);
+ fakebank = TALER_FAKEBANK_start (8888);
if (NULL == fakebank)
{
- fprintf (stderr,
+ fprintf (stderr,
"Failed to launch fakebank\n");
GNUNET_SCHEDULER_shutdown ();
}
}
- if (GNUNET_SYSERR ==
+ if (GNUNET_SYSERR ==
GNUNET_CONFIGURATION_get_value_string (config,
"payments-generator",
"exchange",
@@ -1777,7 +1778,7 @@ run (void *cls,
return;
}
- if (!remote_exchange)
+ if (! remote_exchange)
{
exchanged = GNUNET_OS_start_process (GNUNET_NO,
GNUNET_OS_INHERIT_STD_ALL,
@@ -1841,7 +1842,6 @@ run (void *cls,
SIGKILL);
GNUNET_OS_process_wait (exchanged);
GNUNET_OS_process_destroy (exchanged);
-
GNUNET_SCHEDULER_shutdown ();
return;
}
@@ -1849,7 +1849,9 @@ run (void *cls,
fprintf (stderr,
"Waiting for taler-merchant-httpd to be ready\n");
cnt = 0;
- GNUNET_asprintf (&wget_cmd, "wget -q -t 1 -T 1 %s -o /dev/null -O
/dev/null", merchant_url);
+ GNUNET_asprintf (&wget_cmd,
+ "wget -q -t 1 -T 1 %s -o /dev/null -O /dev/null",
+ merchant_url);
do
{
@@ -1868,7 +1870,6 @@ run (void *cls,
SIGKILL);
GNUNET_OS_process_wait (exchanged);
GNUNET_OS_process_destroy (exchanged);
-
GNUNET_SCHEDULER_shutdown ();
return;
}
@@ -1877,6 +1878,10 @@ run (void *cls,
fprintf (stderr, "\n");
GNUNET_free (wget_cmd);
}
+
+ shc_chld = GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD,
+ &sighandler_child_death);
+
/* timeout, given 60s + 5s per command, which should be more
than enough */
timeout_task
@@ -1894,7 +1899,6 @@ int
main (int argc,
char *argv[])
{
- struct GNUNET_SIGNAL_Context *shc_chld;
struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_option_uint ('n',
"times",
@@ -1922,11 +1926,11 @@ main (int argc,
"DEBUG",
NULL);
result = GNUNET_SYSERR;
+
sigpipe = GNUNET_DISK_pipe (GNUNET_NO, GNUNET_NO,
GNUNET_NO, GNUNET_NO);
GNUNET_assert (NULL != sigpipe);
- shc_chld = GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD,
- &sighandler_child_death);
+
if (GNUNET_OK !=
GNUNET_PROGRAM_run (argc, argv,
"taler-merchant-generate-payments",
@@ -1935,9 +1939,11 @@ main (int argc,
&run, NULL))
return 77;
-
- GNUNET_SIGNAL_handler_uninstall (shc_chld);
- shc_chld = NULL;
+ if (NULL != shc_chld)
+ {
+ GNUNET_SIGNAL_handler_uninstall (shc_chld);
+ shc_chld = NULL;
+ }
GNUNET_DISK_pipe_close (sigpipe);
if (!remote_merchant && NULL != merchantd)
{
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-merchant] branch master updated: install SIGCHLD handler only after wget is done, to ensure we don't block during fakebank interaction,
gnunet <=