aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-07-01 11:46:31 +0000
committerChristian Grothoff <christian@grothoff.org>2010-07-01 11:46:31 +0000
commit5beda76f6dfc4019fc640ee63a84b1495f782175 (patch)
tree94d7f59db19e9212cc159cc06c2ba68270eab89e /src
parent6a739314d814c1d5a12d4b632599159207a01887 (diff)
downloadgnunet-5beda76f6dfc4019fc640ee63a84b1495f782175.tar.gz
gnunet-5beda76f6dfc4019fc640ee63a84b1495f782175.zip
fixing 'resolver' double free issue
Diffstat (limited to 'src')
-rw-r--r--src/util/gnunet-service-resolver.c1
-rw-r--r--src/util/server_tc.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/util/gnunet-service-resolver.c b/src/util/gnunet-service-resolver.c
index 5739571ae..306cf9cec 100644
--- a/src/util/gnunet-service-resolver.c
+++ b/src/util/gnunet-service-resolver.c
@@ -168,6 +168,7 @@ get_ip_as_string (struct GNUNET_SERVER_Client *client,
168 if (salen < sizeof (struct sockaddr)) 168 if (salen < sizeof (struct sockaddr))
169 { 169 {
170 GNUNET_break (0); 170 GNUNET_break (0);
171 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
171 return; 172 return;
172 } 173 }
173 now = GNUNET_TIME_absolute_get (); 174 now = GNUNET_TIME_absolute_get ();
diff --git a/src/util/server_tc.c b/src/util/server_tc.c
index 7514b0cd3..b7158dadb 100644
--- a/src/util/server_tc.c
+++ b/src/util/server_tc.c
@@ -82,6 +82,7 @@ transmit_response (void *cls, size_t size, void *buf)
82 if (buf == NULL) 82 if (buf == NULL)
83 { 83 {
84 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR); 84 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
85 GNUNET_SERVER_client_drop (tc->client);
85 GNUNET_free_non_null (tc->buf); 86 GNUNET_free_non_null (tc->buf);
86 GNUNET_free (tc); 87 GNUNET_free (tc);
87 return 0; 88 return 0;
@@ -95,6 +96,7 @@ transmit_response (void *cls, size_t size, void *buf)
95 if (tc->total == tc->off) 96 if (tc->total == tc->off)
96 { 97 {
97 GNUNET_SERVER_receive_done (tc->client, GNUNET_OK); 98 GNUNET_SERVER_receive_done (tc->client, GNUNET_OK);
99 GNUNET_SERVER_client_drop (tc->client);
98 GNUNET_free_non_null (tc->buf); 100 GNUNET_free_non_null (tc->buf);
99 GNUNET_free (tc); 101 GNUNET_free (tc);
100 } 102 }
@@ -111,6 +113,7 @@ transmit_response (void *cls, size_t size, void *buf)
111 { 113 {
112 GNUNET_break (0); 114 GNUNET_break (0);
113 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR); 115 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
116 GNUNET_SERVER_client_drop (tc->client);
114 GNUNET_free_non_null (tc->buf); 117 GNUNET_free_non_null (tc->buf);
115 GNUNET_free (tc); 118 GNUNET_free (tc);
116 } 119 }
@@ -133,6 +136,7 @@ GNUNET_SERVER_transmit_context_create (struct GNUNET_SERVER_Client *client)
133 136
134 GNUNET_assert (client != NULL); 137 GNUNET_assert (client != NULL);
135 tc = GNUNET_malloc (sizeof (struct GNUNET_SERVER_TransmitContext)); 138 tc = GNUNET_malloc (sizeof (struct GNUNET_SERVER_TransmitContext));
139 GNUNET_SERVER_client_keep (client);
136 tc->client = client; 140 tc->client = client;
137 return tc; 141 return tc;
138} 142}
@@ -213,6 +217,7 @@ GNUNET_SERVER_transmit_context_run (struct GNUNET_SERVER_TransmitContext *tc,
213 { 217 {
214 GNUNET_break (0); 218 GNUNET_break (0);
215 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR); 219 GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
220 GNUNET_SERVER_client_drop (tc->client);
216 GNUNET_free_non_null (tc->buf); 221 GNUNET_free_non_null (tc->buf);
217 GNUNET_free (tc); 222 GNUNET_free (tc);
218 } 223 }