diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-02-21 10:41:53 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-02-21 10:41:53 +0100 |
commit | aad47a3092ff6139902c28d84d4e53453ade6343 (patch) | |
tree | ba568dbb1c9acc64ecda3a0fcbdeef797b09d8da /src/util | |
parent | c1d325e4700772b36fdaf897295c05e9d3f9211c (diff) | |
download | gnunet-aad47a3092ff6139902c28d84d4e53453ade6343.tar.gz gnunet-aad47a3092ff6139902c28d84d4e53453ade6343.zip |
prevent crash on exit
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/service_new.c | 28 |
1 files changed, 4 insertions, 24 deletions
diff --git a/src/util/service_new.c b/src/util/service_new.c index 8d654c0cb..1b3254cca 100644 --- a/src/util/service_new.c +++ b/src/util/service_new.c | |||
@@ -1624,17 +1624,7 @@ GNUNET_SERVICE_starT (const char *service_name, | |||
1624 | sh->connect_cb = connect_cb; | 1624 | sh->connect_cb = connect_cb; |
1625 | sh->disconnect_cb = disconnect_cb; | 1625 | sh->disconnect_cb = disconnect_cb; |
1626 | sh->cb_cls = cls; | 1626 | sh->cb_cls = cls; |
1627 | if (NULL != handlers) | 1627 | sh->handlers = GNUNET_MQ_copy_handlers (handlers); |
1628 | { | ||
1629 | unsigned int i; | ||
1630 | |||
1631 | for (i=0;NULL != handlers[i].cb; i++) ; | ||
1632 | sh->handlers = GNUNET_new_array (i + 1, | ||
1633 | struct GNUNET_MQ_MessageHandler); | ||
1634 | GNUNET_memcpy (sh->handlers, | ||
1635 | handlers, | ||
1636 | i * sizeof (struct GNUNET_MQ_MessageHandler)); | ||
1637 | } | ||
1638 | if (GNUNET_OK != setup_service (sh)) | 1628 | if (GNUNET_OK != setup_service (sh)) |
1639 | { | 1629 | { |
1640 | GNUNET_free (sh->handlers); | 1630 | GNUNET_free (sh->handlers); |
@@ -1660,7 +1650,7 @@ GNUNET_SERVICE_stoP (struct GNUNET_SERVICE_Handle *srv) | |||
1660 | while (NULL != (client = srv->clients_head)) | 1650 | while (NULL != (client = srv->clients_head)) |
1661 | GNUNET_SERVICE_client_drop (client); | 1651 | GNUNET_SERVICE_client_drop (client); |
1662 | teardown_service (srv); | 1652 | teardown_service (srv); |
1663 | GNUNET_free (srv->handlers); | 1653 | GNUNET_free_non_null (srv->handlers); |
1664 | GNUNET_free (srv); | 1654 | GNUNET_free (srv); |
1665 | } | 1655 | } |
1666 | 1656 | ||
@@ -1762,17 +1752,7 @@ GNUNET_SERVICE_ruN_ (int argc, | |||
1762 | sh.connect_cb = connect_cb; | 1752 | sh.connect_cb = connect_cb; |
1763 | sh.disconnect_cb = disconnect_cb; | 1753 | sh.disconnect_cb = disconnect_cb; |
1764 | sh.cb_cls = cls; | 1754 | sh.cb_cls = cls; |
1765 | if (NULL != handlers) | 1755 | sh.handlers = GNUNET_MQ_copy_handlers (handlers); |
1766 | { | ||
1767 | unsigned int i; | ||
1768 | |||
1769 | for (i=0;NULL != handlers[i].cb; i++) ; | ||
1770 | sh.handlers = GNUNET_new_array (i + 1, | ||
1771 | struct GNUNET_MQ_MessageHandler); | ||
1772 | GNUNET_memcpy (sh.handlers, | ||
1773 | handlers, | ||
1774 | i * sizeof (struct GNUNET_MQ_MessageHandler)); | ||
1775 | } | ||
1776 | sh.service_name = service_name; | 1756 | sh.service_name = service_name; |
1777 | 1757 | ||
1778 | /* setup subsystems */ | 1758 | /* setup subsystems */ |
@@ -1903,7 +1883,7 @@ shutdown: | |||
1903 | } | 1883 | } |
1904 | #endif | 1884 | #endif |
1905 | teardown_service (&sh); | 1885 | teardown_service (&sh); |
1906 | GNUNET_free (sh.handlers); | 1886 | GNUNET_free_non_null (sh.handlers); |
1907 | GNUNET_SPEEDUP_stop_ (); | 1887 | GNUNET_SPEEDUP_stop_ (); |
1908 | GNUNET_CONFIGURATION_destroy (cfg); | 1888 | GNUNET_CONFIGURATION_destroy (cfg); |
1909 | GNUNET_free_non_null (logfile); | 1889 | GNUNET_free_non_null (logfile); |