aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/transport/plugin_transport_http.c39
-rw-r--r--src/transport/test_plugin_transport_http.c29
2 files changed, 61 insertions, 7 deletions
diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c
index 1b5f5ed11..8828e3438 100644
--- a/src/transport/plugin_transport_http.c
+++ b/src/transport/plugin_transport_http.c
@@ -1199,11 +1199,42 @@ static int
1199http_plugin_address_suggested (void *cls, 1199http_plugin_address_suggested (void *cls,
1200 void *addr, size_t addrlen) 1200 void *addr, size_t addrlen)
1201{ 1201{
1202 /* struct Plugin *plugin = cls; */ 1202 struct IPv4HttpAddress *v4;
1203 struct IPv6HttpAddress *v6;
1203 1204
1204 /* check if the address is plausible; if so, 1205 if ((addrlen != sizeof (struct IPv4HttpAddress)) &&
1205 add it to our list! */ 1206 (addrlen != sizeof (struct IPv6HttpAddress)))
1206 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"HTTP Plugin: http_plugin_address_suggested\n"); 1207 {
1208 GNUNET_break_op (0);
1209 return GNUNET_SYSERR;
1210 }
1211 if (addrlen == sizeof (struct IPv4HttpAddress))
1212 {
1213 v4 = (struct IPv4HttpAddress *) addr;
1214
1215 v4->u_port = ntohs (v4->u_port);
1216 if (v4->u_port != plugin->port_inbound)
1217 {
1218 GNUNET_break_op (0);
1219 return GNUNET_SYSERR;
1220 }
1221 }
1222 else
1223 {
1224 v6 = (struct IPv6HttpAddress *) addr;
1225 if (IN6_IS_ADDR_LINKLOCAL (&v6->ipv6_addr))
1226 {
1227 GNUNET_break_op (0);
1228 return GNUNET_SYSERR;
1229 }
1230 v6->u6_port = ntohs (v6->u6_port);
1231 if (v6->u6_port != plugin->port_inbound)
1232 {
1233 GNUNET_break_op (0);
1234 return GNUNET_SYSERR;
1235 }
1236
1237 }
1207 return GNUNET_OK; 1238 return GNUNET_OK;
1208} 1239}
1209 1240
diff --git a/src/transport/test_plugin_transport_http.c b/src/transport/test_plugin_transport_http.c
index 728ab7db3..9eb952348 100644
--- a/src/transport/test_plugin_transport_http.c
+++ b/src/transport/test_plugin_transport_http.c
@@ -394,7 +394,7 @@ static void pretty_printer_cb (void *cls,
394{ 394{
395 if (NULL==address) 395 if (NULL==address)
396 return; 396 return;
397 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Plugin returned: `%s'\n",address); 397 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Plugin returnedp pretty address: `%s'\n",address);
398 fail_pretty_printer_count++; 398 fail_pretty_printer_count++;
399} 399}
400 400
@@ -421,6 +421,7 @@ run (void *cls,
421 struct Plugin_Address * tmp; 421 struct Plugin_Address * tmp;
422 const char * addr_str; 422 const char * addr_str;
423 unsigned int count_str_addr; 423 unsigned int count_str_addr;
424 unsigned int suggest_res;
424 425
425 fail_pretty_printer = GNUNET_YES; 426 fail_pretty_printer = GNUNET_YES;
426 fail_notify_address = GNUNET_YES; 427 fail_notify_address = GNUNET_YES;
@@ -485,8 +486,11 @@ run (void *cls,
485 { 486 {
486 cur = addr_head; 487 cur = addr_head;
487 488
488 api->address_pretty_printer(NULL,"http",cur->addr,cur->addrlen,GNUNET_NO,TEST_TIMEOUT,&pretty_printer_cb,NULL); 489 api->address_pretty_printer (NULL,"http",cur->addr,cur->addrlen,GNUNET_NO,TEST_TIMEOUT,&pretty_printer_cb,NULL);
489 addr_str = api->address_to_string(NULL,cur->addr,cur->addrlen); 490 addr_str = api->address_to_string (NULL,cur->addr,cur->addrlen);
491 suggest_res = api->check_address (NULL,cur->addr,cur->addrlen);
492
493 GNUNET_assert (GNUNET_OK == suggest_res);
490 GNUNET_assert (NULL != addr_str); 494 GNUNET_assert (NULL != addr_str);
491 count_str_addr++; 495 count_str_addr++;
492 496
@@ -501,6 +505,25 @@ run (void *cls,
501 fail_pretty_printer=GNUNET_NO; 505 fail_pretty_printer=GNUNET_NO;
502 fail_addr_to_str=GNUNET_NO; 506 fail_addr_to_str=GNUNET_NO;
503 507
508 /* Suggesting addresses with wrong port*/
509 struct IPv4HttpAddress failing_addr;
510 failing_addr.ipv4_addr = INADDR_LOOPBACK;
511 failing_addr.u_port = 0;
512 suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct IPv4HttpAddress));
513 GNUNET_assert (GNUNET_SYSERR == suggest_res);
514
515 /* Suggesting addresses with wrong size*/
516 failing_addr.ipv4_addr = INADDR_LOOPBACK;
517 failing_addr.u_port = 0;
518 suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct IPv6HttpAddress));
519 GNUNET_assert (GNUNET_SYSERR == suggest_res);
520
521 /* Suggesting addresses with wrong address*/
522 failing_addr.ipv4_addr = 0;
523 failing_addr.u_port = 12389;
524 suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct IPv4HttpAddress));
525 GNUNET_assert (GNUNET_SYSERR == suggest_res);
526
504 /* testing finished, shutting down */ 527 /* testing finished, shutting down */
505 if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) && (fail_addr_to_str == GNUNET_NO) ) 528 if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) && (fail_addr_to_str == GNUNET_NO) )
506 fail = 0; 529 fail = 0;