Browse Source

lightningd/subd.c: Return NULL from subd_shutdown.

And set pointers to shut down daemons as NULL in lightningd.
htlc_accepted_hook
ZmnSCPxj 6 years ago
committed by Christian Decker
parent
commit
37440e9447
  1. 6
      lightningd/lightningd.c
  2. 6
      lightningd/subd.c
  3. 6
      lightningd/subd.h

6
lightningd/lightningd.c

@ -408,9 +408,9 @@ static void shutdown_subdaemons(struct lightningd *ld)
close(ld->hsm_fd); close(ld->hsm_fd);
/*~ The three "global" daemons, which we shutdown explicitly: we /*~ The three "global" daemons, which we shutdown explicitly: we
* give them 10 seconds to exit gracefully before killing them. */ * give them 10 seconds to exit gracefully before killing them. */
subd_shutdown(ld->connectd, 10); ld->connectd = subd_shutdown(ld->connectd, 10);
subd_shutdown(ld->gossip, 10); ld->gossip = subd_shutdown(ld->gossip, 10);
subd_shutdown(ld->hsm, 10); ld->hsm = subd_shutdown(ld->hsm, 10);
/* Now we free all the HTLCs */ /* Now we free all the HTLCs */
free_htlcs(ld, NULL); free_htlcs(ld, NULL);

6
lightningd/subd.c

@ -748,7 +748,7 @@ void subd_req_(const tal_t *ctx,
add_req(ctx, sd, type, num_fds_in, replycb, replycb_data); add_req(ctx, sd, type, num_fds_in, replycb, replycb_data);
} }
void subd_shutdown(struct subd *sd, unsigned int seconds) struct subd *subd_shutdown(struct subd *sd, unsigned int seconds)
{ {
log_debug(sd->log, "Shutting down"); log_debug(sd->log, "Shutting down");
@ -761,7 +761,7 @@ void subd_shutdown(struct subd *sd, unsigned int seconds)
/* Wait for a while. */ /* Wait for a while. */
while (seconds) { while (seconds) {
if (waitpid(sd->pid, NULL, WNOHANG) > 0) { if (waitpid(sd->pid, NULL, WNOHANG) > 0) {
return; return (struct subd*) tal_free(sd);
} }
sleep(1); sleep(1);
seconds--; seconds--;
@ -770,7 +770,7 @@ void subd_shutdown(struct subd *sd, unsigned int seconds)
/* Didn't die? This will kill it harder */ /* Didn't die? This will kill it harder */
sd->must_not_exit = false; sd->must_not_exit = false;
destroy_subd(sd); destroy_subd(sd);
tal_free(sd); return (struct subd*) tal_free(sd);
} }
void subd_release_channel(struct subd *owner, void *channel) void subd_release_channel(struct subd *owner, void *channel)

6
lightningd/subd.h

@ -198,8 +198,12 @@ void subd_release_channel(struct subd *owner, void *channel);
* *
* This closes the fd to the subdaemon, and gives it a little while to exit. * This closes the fd to the subdaemon, and gives it a little while to exit.
* The @finished callback will never be called. * The @finished callback will never be called.
*
* Return value is null, so pattern should be:
*
* sd = subd_shutdown(sd, 10);
*/ */
void subd_shutdown(struct subd *subd, unsigned int seconds); struct subd *subd_shutdown(struct subd *subd, unsigned int seconds);
/* Ugly helper to get full pathname of the current binary. */ /* Ugly helper to get full pathname of the current binary. */
const char *find_my_abspath(const tal_t *ctx, const char *argv0); const char *find_my_abspath(const tal_t *ctx, const char *argv0);

Loading…
Cancel
Save