summaryrefslogtreecommitdiff
path: root/src/rest
diff options
context:
space:
mode:
authorPhil <phil.buschmann@tum.de>2018-01-11 10:21:52 +0100
committerPhil <phil.buschmann@tum.de>2018-01-11 10:21:52 +0100
commit60c963315271ce4314b708bef519eb4fb64f0979 (patch)
tree93e5b2a48279b32568531485eed21229b3c374c5 /src/rest
parentafb2171eb752d82918048b393fda6f01f863b49a (diff)
parentbca8edf17fc90862e7267ff22b70a1b7dc94ec96 (diff)
downloadgnunet-60c963315271ce4314b708bef519eb4fb64f0979.tar.gz
gnunet-60c963315271ce4314b708bef519eb4fb64f0979.zip
Merge remote-tracking branch 'gnunet/master' into identity_oidc
Diffstat (limited to 'src/rest')
-rw-r--r--src/rest/gnunet-rest-server.c49
1 files changed, 37 insertions, 12 deletions
diff --git a/src/rest/gnunet-rest-server.c b/src/rest/gnunet-rest-server.c
index 5415937a7..c14b09819 100644
--- a/src/rest/gnunet-rest-server.c
+++ b/src/rest/gnunet-rest-server.c
@@ -154,11 +154,14 @@ do_httpd (void *cls);
154static void 154static void
155run_mhd_now () 155run_mhd_now ()
156{ 156{
157 if (NULL != 157 if (NULL != httpd_task)
158 httpd_task) 158 {
159 GNUNET_SCHEDULER_cancel (httpd_task); 159 GNUNET_SCHEDULER_cancel (httpd_task);
160 httpd_task = NULL;
161 }
160 httpd_task = GNUNET_SCHEDULER_add_now (&do_httpd, 162 httpd_task = GNUNET_SCHEDULER_add_now (&do_httpd,
161 NULL); 163 NULL);
164
162} 165}
163 166
164/** 167/**
@@ -449,7 +452,18 @@ kill_httpd ()
449 GNUNET_SCHEDULER_cancel (ltask6); 452 GNUNET_SCHEDULER_cancel (ltask6);
450 ltask6 = NULL; 453 ltask6 = NULL;
451 } 454 }
452} 455
456 if (NULL != lsock4)
457 {
458 GNUNET_NETWORK_socket_close (lsock4);
459 lsock4 = NULL;
460 }
461 if (NULL != lsock6)
462 {
463 GNUNET_NETWORK_socket_close (lsock6);
464 lsock6 = NULL;
465 }
466 }
453 467
454 468
455/** 469/**
@@ -499,7 +513,10 @@ schedule_httpd ()
499 wws = NULL; 513 wws = NULL;
500 } 514 }
501 if (NULL != httpd_task) 515 if (NULL != httpd_task)
516 {
502 GNUNET_SCHEDULER_cancel (httpd_task); 517 GNUNET_SCHEDULER_cancel (httpd_task);
518 httpd_task = NULL;
519 }
503 if ( (MHD_YES == haveto) || 520 if ( (MHD_YES == haveto) ||
504 (-1 != max)) 521 (-1 != max))
505 { 522 {
@@ -507,6 +524,7 @@ schedule_httpd ()
507 GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT, 524 GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
508 tv, wrs, wws, 525 tv, wrs, wws,
509 &do_httpd, NULL); 526 &do_httpd, NULL);
527
510 } 528 }
511 if (NULL != wrs) 529 if (NULL != wrs)
512 GNUNET_NETWORK_fdset_destroy (wrs); 530 GNUNET_NETWORK_fdset_destroy (wrs);
@@ -543,18 +561,23 @@ do_accept (void *cls)
543 const struct sockaddr *addr; 561 const struct sockaddr *addr;
544 socklen_t len; 562 socklen_t len;
545 563
564 GNUNET_assert (NULL != lsock);
546 if (lsock == lsock4) 565 if (lsock == lsock4)
547 ltask4 = NULL; 566 {
548 else
549 ltask6 = NULL;
550 if (lsock == lsock4)
551 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 567 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
552 lsock, 568 lsock,
553 &do_accept, lsock); 569 &do_accept, lsock);
554 else 570
571 }
572 else if (lsock == lsock6)
573 {
555 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 574 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
556 lsock, 575 lsock,
557 &do_accept, lsock); 576 &do_accept, lsock);
577
578 }
579 else
580 GNUNET_assert (0);
558 s = GNUNET_NETWORK_socket_accept (lsock, NULL, NULL); 581 s = GNUNET_NETWORK_socket_accept (lsock, NULL, NULL);
559 if (NULL == s) 582 if (NULL == s)
560 { 583 {
@@ -759,6 +782,7 @@ run (void *cls,
759 { 782 {
760 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 783 ltask6 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
761 lsock6, &do_accept, lsock6); 784 lsock6, &do_accept, lsock6);
785
762 } 786 }
763 } 787 }
764 lsock4 = bind_v4 (); 788 lsock4 = bind_v4 ();
@@ -778,6 +802,7 @@ run (void *cls,
778 { 802 {
779 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 803 ltask4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
780 lsock4, &do_accept, lsock4); 804 lsock4, &do_accept, lsock4);
805
781 } 806 }
782 } 807 }
783 if ( (NULL == lsock4) && 808 if ( (NULL == lsock4) &&
@@ -824,10 +849,10 @@ main (int argc, char *const *argv)
824{ 849{
825 struct GNUNET_GETOPT_CommandLineOption options[] = { 850 struct GNUNET_GETOPT_CommandLineOption options[] = {
826 GNUNET_GETOPT_option_ulong ('p', 851 GNUNET_GETOPT_option_ulong ('p',
827 "port", 852 "port",
828 "PORT", 853 "PORT",
829 gettext_noop ("listen on specified port (default: 7776)"), 854 gettext_noop ("listen on specified port (default: 7776)"),
830 &port), 855 &port),
831 GNUNET_GETOPT_OPTION_END 856 GNUNET_GETOPT_OPTION_END
832 }; 857 };
833 static const char* err_page = 858 static const char* err_page =