aboutsummaryrefslogtreecommitdiff
path: root/src/gns/gnunet-gns-proxy.c
diff options
context:
space:
mode:
authorlurchi <lurchi@strangeplace.net>2018-01-08 20:24:52 +0100
committerlurchi <lurchi@strangeplace.net>2018-01-08 20:24:52 +0100
commit5e233bcb4b48593af84c551738369fe89bc77251 (patch)
tree329db72696175f1b7b977bbff9f4fa3f7a156d31 /src/gns/gnunet-gns-proxy.c
parent05813c03feaf4e0513f813c424b566d74fbe9795 (diff)
downloadgnunet-5e233bcb4b48593af84c551738369fe89bc77251.tar.gz
gnunet-5e233bcb4b48593af84c551738369fe89bc77251.zip
always set task NULL when cancel; make sure SCHEDULER_add* doesn't get invalid input
Diffstat (limited to 'src/gns/gnunet-gns-proxy.c')
-rw-r--r--src/gns/gnunet-gns-proxy.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c
index 3af571eba..25092dcf0 100644
--- a/src/gns/gnunet-gns-proxy.c
+++ b/src/gns/gnunet-gns-proxy.c
@@ -1957,8 +1957,10 @@ mhd_log_callback (void *cls,
1957 } 1957 }
1958 s5r->url = GNUNET_strdup (url); 1958 s5r->url = GNUNET_strdup (url);
1959 if (NULL != s5r->timeout_task) 1959 if (NULL != s5r->timeout_task)
1960 {
1960 GNUNET_SCHEDULER_cancel (s5r->timeout_task); 1961 GNUNET_SCHEDULER_cancel (s5r->timeout_task);
1961 s5r->timeout_task = NULL; 1962 s5r->timeout_task = NULL;
1963 }
1962 GNUNET_assert (s5r->state == SOCKS5_SOCKET_WITH_MHD); 1964 GNUNET_assert (s5r->state == SOCKS5_SOCKET_WITH_MHD);
1963 return s5r; 1965 return s5r;
1964} 1966}
@@ -2060,7 +2062,10 @@ schedule_httpd (struct MhdHttpList *hd)
2060 wws = NULL; 2062 wws = NULL;
2061 } 2063 }
2062 if (NULL != hd->httpd_task) 2064 if (NULL != hd->httpd_task)
2065 {
2063 GNUNET_SCHEDULER_cancel (hd->httpd_task); 2066 GNUNET_SCHEDULER_cancel (hd->httpd_task);
2067 hd->httpd_task = NULL;
2068 }
2064 if ( (MHD_YES != haveto) && 2069 if ( (MHD_YES != haveto) &&
2065 (-1 == max) && 2070 (-1 == max) &&
2066 (hd != httpd) ) 2071 (hd != httpd) )
@@ -2108,8 +2113,7 @@ do_httpd (void *cls)
2108static void 2113static void
2109run_mhd_now (struct MhdHttpList *hd) 2114run_mhd_now (struct MhdHttpList *hd)
2110{ 2115{
2111 if (NULL != 2116 if (NULL != hd->httpd_task)
2112 hd->httpd_task)
2113 GNUNET_SCHEDULER_cancel (hd->httpd_task); 2117 GNUNET_SCHEDULER_cancel (hd->httpd_task);
2114 hd->httpd_task = GNUNET_SCHEDULER_add_now (&do_httpd, 2118 hd->httpd_task = GNUNET_SCHEDULER_add_now (&do_httpd,
2115 hd); 2119 hd);
@@ -2891,18 +2895,17 @@ do_accept (void *cls)
2891 struct GNUNET_NETWORK_Handle *s; 2895 struct GNUNET_NETWORK_Handle *s;
2892 struct Socks5Request *s5r; 2896 struct Socks5Request *s5r;
2893 2897
2894 if (lsock == lsock4) 2898 GNUNET_assert (NULL != lsock);
2895 ltask4 = NULL;
2896 else
2897 ltask6 = NULL;
2898 if (lsock == lsock4) 2899 if (lsock == lsock4)
2899 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 2900 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
2900 lsock, 2901 lsock,
2901 &do_accept, lsock); 2902 &do_accept, lsock);
2902 else 2903 else if (lsock == lsock6)
2903 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 2904 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
2904 lsock, 2905 lsock,
2905 &do_accept, lsock); 2906 &do_accept, lsock);
2907 else
2908 GNUNET_assert (0);
2906 s = GNUNET_NETWORK_socket_accept (lsock, NULL, NULL); 2909 s = GNUNET_NETWORK_socket_accept (lsock, NULL, NULL);
2907 if (NULL == s) 2910 if (NULL == s)
2908 { 2911 {