diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-12-25 00:35:59 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-12-25 00:35:59 +0100 |
commit | 21fbcd668581c72ebb7bdc01908a4cdb11ad3d25 (patch) | |
tree | 5998dd72634c3208e65c37164506676511efc9c3 | |
parent | 96b233995e41e0b6be65734ec5f29108ee017d31 (diff) | |
download | gnunet-21fbcd668581c72ebb7bdc01908a4cdb11ad3d25.tar.gz gnunet-21fbcd668581c72ebb7bdc01908a4cdb11ad3d25.zip |
fix upnpc invocation for port mapping with upnpc
-rw-r--r-- | src/nat/gnunet-service-nat.c | 31 | ||||
-rw-r--r-- | src/nat/gnunet-service-nat_mini.c | 5 |
2 files changed, 34 insertions, 2 deletions
diff --git a/src/nat/gnunet-service-nat.c b/src/nat/gnunet-service-nat.c index bf3867ff2..9ad8db45a 100644 --- a/src/nat/gnunet-service-nat.c +++ b/src/nat/gnunet-service-nat.c | |||
@@ -1059,10 +1059,31 @@ upnp_addr_change_cb (void *cls, | |||
1059 | break; | 1059 | break; |
1060 | case GNUNET_NAT_ERROR_UPNPC_FAILED: | 1060 | case GNUNET_NAT_ERROR_UPNPC_FAILED: |
1061 | case GNUNET_NAT_ERROR_UPNPC_TIMEOUT: | 1061 | case GNUNET_NAT_ERROR_UPNPC_TIMEOUT: |
1062 | case GNUNET_NAT_ERROR_IPC_FAILURE: | ||
1062 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1063 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1063 | "Running upnpc failed: %d\n", | 1064 | "Running upnpc failed: %d\n", |
1064 | result); | 1065 | result); |
1065 | return; | 1066 | return; |
1067 | case GNUNET_NAT_ERROR_EXTERNAL_IP_UTILITY_NOT_FOUND: | ||
1068 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1069 | "external-ip binary not found\n"); | ||
1070 | return; | ||
1071 | case GNUNET_NAT_ERROR_EXTERNAL_IP_UTILITY_FAILED: | ||
1072 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1073 | "external-ip binary could not be run\n"); | ||
1074 | return; | ||
1075 | case GNUNET_NAT_ERROR_UPNPC_PORTMAP_FAILED: | ||
1076 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1077 | "upnpc failed to create port mapping\n"); | ||
1078 | return; | ||
1079 | case GNUNET_NAT_ERROR_EXTERNAL_IP_UTILITY_OUTPUT_INVALID: | ||
1080 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1081 | "Invalid output from upnpc\n"); | ||
1082 | return; | ||
1083 | case GNUNET_NAT_ERROR_EXTERNAL_IP_ADDRESS_INVALID: | ||
1084 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1085 | "Invalid address returned by upnpc\n"); | ||
1086 | return; | ||
1066 | default: | 1087 | default: |
1067 | GNUNET_break (0); /* should not be possible */ | 1088 | GNUNET_break (0); /* should not be possible */ |
1068 | return; | 1089 | return; |
@@ -1823,6 +1844,16 @@ shutdown_task (void *cls) | |||
1823 | GNUNET_SCHEDULER_cancel (se->timeout_task); | 1844 | GNUNET_SCHEDULER_cancel (se->timeout_task); |
1824 | GNUNET_free (se); | 1845 | GNUNET_free (se); |
1825 | } | 1846 | } |
1847 | if (NULL != probe_external_ip_task) | ||
1848 | { | ||
1849 | GNUNET_SCHEDULER_cancel (probe_external_ip_task); | ||
1850 | probe_external_ip_task = NULL; | ||
1851 | } | ||
1852 | if (NULL != probe_external_ip_op) | ||
1853 | { | ||
1854 | GNUNET_NAT_mini_get_external_ipv4_cancel_ (probe_external_ip_op); | ||
1855 | probe_external_ip_op = NULL; | ||
1856 | } | ||
1826 | if (NULL != scan_task) | 1857 | if (NULL != scan_task) |
1827 | { | 1858 | { |
1828 | GNUNET_SCHEDULER_cancel (scan_task); | 1859 | GNUNET_SCHEDULER_cancel (scan_task); |
diff --git a/src/nat/gnunet-service-nat_mini.c b/src/nat/gnunet-service-nat_mini.c index efdc0988b..e5b9d021b 100644 --- a/src/nat/gnunet-service-nat_mini.c +++ b/src/nat/gnunet-service-nat_mini.c | |||
@@ -139,7 +139,7 @@ read_external_ipv4 (void *cls) | |||
139 | eh->buf, | 139 | eh->buf, |
140 | &addr)) | 140 | &addr)) |
141 | { | 141 | { |
142 | if (0 != addr.s_addr) | 142 | if (0 == addr.s_addr) |
143 | eh->ret = GNUNET_NAT_ERROR_EXTERNAL_IP_ADDRESS_INVALID; /* got 0.0.0.0 */ | 143 | eh->ret = GNUNET_NAT_ERROR_EXTERNAL_IP_ADDRESS_INVALID; /* got 0.0.0.0 */ |
144 | else | 144 | else |
145 | eh->ret = GNUNET_NAT_ERROR_SUCCESS; | 145 | eh->ret = GNUNET_NAT_ERROR_SUCCESS; |
@@ -578,7 +578,8 @@ process_map_output (void *cls, | |||
578 | if (GNUNET_YES != mini->did_map) | 578 | if (GNUNET_YES != mini->did_map) |
579 | mini->ac (mini->ac_cls, | 579 | mini->ac (mini->ac_cls, |
580 | GNUNET_SYSERR, | 580 | GNUNET_SYSERR, |
581 | NULL, 0, | 581 | NULL, |
582 | 0, | ||
582 | GNUNET_NAT_ERROR_UPNPC_PORTMAP_FAILED); | 583 | GNUNET_NAT_ERROR_UPNPC_PORTMAP_FAILED); |
583 | if (NULL == mini->refresh_task) | 584 | if (NULL == mini->refresh_task) |
584 | mini->refresh_task | 585 | mini->refresh_task |