aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2012-06-01 15:15:03 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2012-06-01 15:15:03 +0000
commit170bd1ef6bbac60604183d4f8d8315f30ac664b7 (patch)
tree8d68d4079a4e548cfd57ac90e7feba0075ae98a9 /src
parent49609764504fb1c029d9dc082aedd41b1bf27850 (diff)
downloadgnunet-170bd1ef6bbac60604183d4f8d8315f30ac664b7.tar.gz
gnunet-170bd1ef6bbac60604183d4f8d8315f30ac664b7.zip
-fixes, socks done
Diffstat (limited to 'src')
-rw-r--r--src/gns/gnunet-gns-proxy.c37
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
161do_write (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 161do_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