diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2012-06-01 15:15:03 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2012-06-01 15:15:03 +0000 |
commit | 170bd1ef6bbac60604183d4f8d8315f30ac664b7 (patch) | |
tree | 8d68d4079a4e548cfd57ac90e7feba0075ae98a9 /src | |
parent | 49609764504fb1c029d9dc082aedd41b1bf27850 (diff) | |
download | gnunet-170bd1ef6bbac60604183d4f8d8315f30ac664b7.tar.gz gnunet-170bd1ef6bbac60604183d4f8d8315f30ac664b7.zip |
-fixes, socks done
Diffstat (limited to 'src')
-rw-r--r-- | src/gns/gnunet-gns-proxy.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c index bc91ae8df..dd75c2efa 100644 --- a/src/gns/gnunet-gns-proxy.c +++ b/src/gns/gnunet-gns-proxy.c | |||
@@ -121,7 +121,7 @@ do_write_remote (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
121 | 121 | ||
122 | if ((NULL != tc->read_ready) && | 122 | if ((NULL != tc->read_ready) && |
123 | (GNUNET_NETWORK_fdset_isset (tc->write_ready, s5r->remote_sock)) && | 123 | (GNUNET_NETWORK_fdset_isset (tc->write_ready, s5r->remote_sock)) && |
124 | (len = GNUNET_NETWORK_socket_send (s5r->remote_sock, &s5r->rbuf, | 124 | (len = GNUNET_NETWORK_socket_send (s5r->remote_sock, s5r->rbuf, |
125 | s5r->rbuf_len))) | 125 | s5r->rbuf_len))) |
126 | { | 126 | { |
127 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 127 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -161,14 +161,14 @@ static void | |||
161 | do_write (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 161 | do_write (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
162 | { | 162 | { |
163 | struct Socks5Request *s5r = cls; | 163 | struct Socks5Request *s5r = cls; |
164 | unsigned int len = s5r->wbuf_len; | 164 | unsigned int len; |
165 | 165 | ||
166 | s5r->wtask = GNUNET_SCHEDULER_NO_TASK; | 166 | s5r->wtask = GNUNET_SCHEDULER_NO_TASK; |
167 | 167 | ||
168 | if ((NULL != tc->read_ready) && | 168 | if ((NULL != tc->read_ready) && |
169 | (GNUNET_NETWORK_fdset_isset (tc->write_ready, s5r->sock)) && | 169 | (GNUNET_NETWORK_fdset_isset (tc->write_ready, s5r->sock)) && |
170 | (len = GNUNET_NETWORK_socket_send (s5r->sock, &s5r->wbuf, | 170 | (len = GNUNET_NETWORK_socket_send (s5r->sock, s5r->wbuf, |
171 | len))) | 171 | s5r->wbuf_len))) |
172 | { | 172 | { |
173 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 173 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
174 | "Successfully sent %d bytes to socket\n", | 174 | "Successfully sent %d bytes to socket\n", |
@@ -191,7 +191,8 @@ do_write (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
191 | return; | 191 | return; |
192 | } | 192 | } |
193 | 193 | ||
194 | if (s5r->state == SOCKS5_DATA_TRANSFER) | 194 | if ((s5r->state == SOCKS5_DATA_TRANSFER) && |
195 | (s5r->fwdrtask == GNUNET_SCHEDULER_NO_TASK)) | ||
195 | s5r->fwdrtask = | 196 | s5r->fwdrtask = |
196 | GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, | 197 | GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, |
197 | s5r->remote_sock, | 198 | s5r->remote_sock, |
@@ -212,16 +213,9 @@ do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
212 | s5r->fwdrtask = GNUNET_SCHEDULER_NO_TASK; | 213 | s5r->fwdrtask = GNUNET_SCHEDULER_NO_TASK; |
213 | 214 | ||
214 | 215 | ||
215 | GNUNET_assert (NULL != tc->write_ready); | ||
216 | GNUNET_assert (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->remote_sock)); | ||
217 | |||
218 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
219 | "Read reason %d\n", | ||
220 | tc->reason); | ||
221 | |||
222 | if ((NULL != tc->write_ready) && | 216 | if ((NULL != tc->write_ready) && |
223 | (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->remote_sock)) && | 217 | (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->remote_sock)) && |
224 | (s5r->wbuf_len = GNUNET_NETWORK_socket_recv (s5r->remote_sock, &s5r->wbuf, | 218 | (s5r->wbuf_len = GNUNET_NETWORK_socket_recv (s5r->remote_sock, s5r->wbuf, |
225 | sizeof (s5r->wbuf)))) | 219 | sizeof (s5r->wbuf)))) |
226 | { | 220 | { |
227 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 221 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -235,10 +229,13 @@ do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
235 | "0 bytes received from remote... graceful shutdown!\n"); | 229 | "0 bytes received from remote... graceful shutdown!\n"); |
236 | if (s5r->fwdwtask != GNUNET_SCHEDULER_NO_TASK) | 230 | if (s5r->fwdwtask != GNUNET_SCHEDULER_NO_TASK) |
237 | GNUNET_SCHEDULER_cancel (s5r->fwdwtask); | 231 | GNUNET_SCHEDULER_cancel (s5r->fwdwtask); |
238 | s5r->fwdwtask = GNUNET_SCHEDULER_NO_TASK; | 232 | if (s5r->rtask != GNUNET_SCHEDULER_NO_TASK) |
233 | GNUNET_SCHEDULER_cancel (s5r->rtask); | ||
239 | 234 | ||
240 | GNUNET_NETWORK_socket_close (s5r->remote_sock); | 235 | GNUNET_NETWORK_socket_close (s5r->remote_sock); |
241 | s5r->remote_sock = NULL; | 236 | s5r->remote_sock = NULL; |
237 | GNUNET_NETWORK_socket_close (s5r->sock); | ||
238 | GNUNET_free(s5r); | ||
242 | 239 | ||
243 | return; | 240 | return; |
244 | } | 241 | } |
@@ -278,7 +275,7 @@ do_read (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
278 | 275 | ||
279 | if ((NULL != tc->write_ready) && | 276 | if ((NULL != tc->write_ready) && |
280 | (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->sock)) && | 277 | (GNUNET_NETWORK_fdset_isset (tc->read_ready, s5r->sock)) && |
281 | (s5r->rbuf_len = GNUNET_NETWORK_socket_recv (s5r->sock, &s5r->rbuf, | 278 | (s5r->rbuf_len = GNUNET_NETWORK_socket_recv (s5r->sock, s5r->rbuf, |
282 | sizeof (s5r->rbuf)))) | 279 | sizeof (s5r->rbuf)))) |
283 | { | 280 | { |
284 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 281 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -287,8 +284,11 @@ do_read (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
287 | } | 284 | } |
288 | else | 285 | else |
289 | { | 286 | { |
290 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "read"); | 287 | if (s5r->rbuf_len != 0) |
291 | //Really!?!?!? | 288 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "read"); |
289 | else | ||
290 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "client disco!\n"); | ||
291 | |||
292 | if (s5r->fwdrtask != GNUNET_SCHEDULER_NO_TASK) | 292 | if (s5r->fwdrtask != GNUNET_SCHEDULER_NO_TASK) |
293 | GNUNET_SCHEDULER_cancel (s5r->fwdrtask); | 293 | GNUNET_SCHEDULER_cancel (s5r->fwdrtask); |
294 | if (s5r->wtask != GNUNET_SCHEDULER_NO_TASK) | 294 | if (s5r->wtask != GNUNET_SCHEDULER_NO_TASK) |
@@ -334,7 +334,8 @@ do_read (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
334 | "Processing SOCKS5 request\n"); | 334 | "Processing SOCKS5 request\n"); |
335 | c_req = (struct socks5_client_request*)&s5r->rbuf; | 335 | c_req = (struct socks5_client_request*)&s5r->rbuf; |
336 | s_resp = (struct socks5_server_response*)&s5r->wbuf; | 336 | s_resp = (struct socks5_server_response*)&s5r->wbuf; |
337 | s5r->wbuf_len = sizeof (struct socks5_server_response); | 337 | //Only 10byte for ipv4 response! |
338 | s5r->wbuf_len = 10;//sizeof (struct socks5_server_response); | ||
338 | 339 | ||
339 | GNUNET_assert (c_req->addr_type == 3); | 340 | GNUNET_assert (c_req->addr_type == 3); |
340 | 341 | ||