X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnat%2Fnat_mini.c;h=fbb6e769a7a995622357cb419e33c6ce0f88fa91;hb=70466ec3c34f9a920e9e798e3169f886e9486a59;hp=5a83d7a4fea22e7dd4ce3b013d9d7aee494175b0;hpb=64f93505159d734411000a3097650e8d472c1d9b;p=oweals%2Fgnunet.git diff --git a/src/nat/nat_mini.c b/src/nat/nat_mini.c index 5a83d7a4f..fbb6e769a 100644 --- a/src/nat/nat_mini.c +++ b/src/nat/nat_mini.c @@ -165,18 +165,24 @@ GNUNET_NAT_mini_get_external_ipv4 (struct GNUNET_TIME_Relative timeout, struct GNUNET_NAT_ExternalHandle *eh; if (GNUNET_SYSERR == GNUNET_OS_check_helper_binary ("external-ip")) + { + LOG (GNUNET_ERROR_TYPE_INFO, + _("`external-ip' command not found\n")); return NULL; + } + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Running `external-ip' to determine our external IP\n"); eh = GNUNET_malloc (sizeof (struct GNUNET_NAT_ExternalHandle)); eh->cb = cb; eh->cb_cls = cb_cls; - eh->opipe = GNUNET_DISK_pipe (GNUNET_YES, GNUNET_NO, GNUNET_YES); + eh->opipe = GNUNET_DISK_pipe (GNUNET_YES, GNUNET_YES, GNUNET_NO, GNUNET_YES); if (NULL == eh->opipe) { GNUNET_free (eh); return NULL; } eh->eip = - GNUNET_OS_start_process (NULL, eh->opipe, "external-ip", "external-ip", + GNUNET_OS_start_process (GNUNET_NO, 0, NULL, eh->opipe, "external-ip", "external-ip", NULL); if (NULL == eh->eip) { @@ -202,7 +208,7 @@ void GNUNET_NAT_mini_get_external_ipv4_cancel (struct GNUNET_NAT_ExternalHandle *eh) { (void) GNUNET_OS_process_kill (eh->eip, SIGKILL); - GNUNET_OS_process_close (eh->eip); + GNUNET_OS_process_destroy (eh->eip); GNUNET_DISK_pipe_close (eh->opipe); if (GNUNET_SCHEDULER_NO_TASK != eh->task) GNUNET_SCHEDULER_cancel (eh->task); @@ -378,7 +384,7 @@ process_refresh_output (void *cls, const char *line) if (NULL == strstr (s, pstr)) return; /* skip */ if (1 != - sscanf (line, + SSCANF (line, (mini->is_tcp) ? "%*u TCP %u->%*s:%*u %*s" : "%*u UDP %u->%*s:%*u %*s", &nport)) return; /* skip */ @@ -408,6 +414,8 @@ do_refresh (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct GNUNET_NAT_MiniHandle *mini = cls; + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Running `upnpc' to check if our mapping still exists\n"); mini->refresh_task = GNUNET_SCHEDULER_NO_TASK; mini->found = GNUNET_NO; mini->refresh_cmd = @@ -446,7 +454,7 @@ process_map_output (void *cls, const char *line) */ if ((NULL == (ipaddr = strstr (line, " "))) || (NULL == (pstr = strstr (ipaddr, ":"))) || - (1 != sscanf (pstr + 1, "%u", &port))) + (1 != SSCANF (pstr + 1, "%u", &port))) { return; /* skip line */ } @@ -492,7 +500,13 @@ GNUNET_NAT_mini_map_start (uint16_t port, int is_tcp, char pstr[6]; if (GNUNET_SYSERR == GNUNET_OS_check_helper_binary ("upnpc")) + { + LOG (GNUNET_ERROR_TYPE_INFO, + _("`upnpc' command not found\n")); return NULL; + } + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Running `upnpc' to install mapping\n"); ret = GNUNET_malloc (sizeof (struct GNUNET_NAT_MiniHandle)); ret->ac = ac; ret->ac_cls = ac_cls; @@ -524,9 +538,7 @@ process_unmap_output (void *cls, const char *line) if (NULL == line) { -#if DEBUG_NAT LOG (GNUNET_ERROR_TYPE_DEBUG, "UPnP unmap done\n"); -#endif GNUNET_OS_command_stop (mini->unmap_cmd); mini->unmap_cmd = NULL; GNUNET_free (mini); @@ -577,10 +589,8 @@ GNUNET_NAT_mini_map_stop (struct GNUNET_NAT_MiniHandle *mini) * often are the same, but it might... */ GNUNET_snprintf (pstr, sizeof (pstr), "%u", (unsigned int) ntohs (mini->current_addr.sin_port)); -#if DEBUG_NAT LOG (GNUNET_ERROR_TYPE_DEBUG, "Unmapping port %u with UPnP\n", ntohs (mini->current_addr.sin_port)); -#endif mini->unmap_cmd = GNUNET_OS_command_run (&process_unmap_output, mini, UNMAP_TIMEOUT, "upnpc", "upnpc", "-d", pstr,