diff options
author | Phil <phil.buschmann@tum.de> | 2018-01-11 10:21:52 +0100 |
---|---|---|
committer | Phil <phil.buschmann@tum.de> | 2018-01-11 10:21:52 +0100 |
commit | 60c963315271ce4314b708bef519eb4fb64f0979 (patch) | |
tree | 93e5b2a48279b32568531485eed21229b3c374c5 /src/rest | |
parent | afb2171eb752d82918048b393fda6f01f863b49a (diff) | |
parent | bca8edf17fc90862e7267ff22b70a1b7dc94ec96 (diff) | |
download | gnunet-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.c | 49 |
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); | |||
154 | static void | 154 | static void |
155 | run_mhd_now () | 155 | run_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 = |