diff options
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r-- | src/transport/plugin_transport_tcp.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index 7ac31ecb6..d39787900 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c | |||
@@ -345,7 +345,7 @@ struct Plugin | |||
345 | /** | 345 | /** |
346 | * The process id of the server process (if behind NAT) | 346 | * The process id of the server process (if behind NAT) |
347 | */ | 347 | */ |
348 | pid_t server_pid; | 348 | GNUNET_OS_Process *server_proc; |
349 | 349 | ||
350 | /** | 350 | /** |
351 | * List of open TCP sessions. | 351 | * List of open TCP sessions. |
@@ -958,7 +958,7 @@ run_gnunet_nat_client (struct Plugin *plugin, const char *addr, size_t addrlen) | |||
958 | char inet4[INET_ADDRSTRLEN]; | 958 | char inet4[INET_ADDRSTRLEN]; |
959 | char *address_as_string; | 959 | char *address_as_string; |
960 | char *port_as_string; | 960 | char *port_as_string; |
961 | pid_t pid; | 961 | GNUNET_OS_Process *proc; |
962 | const struct sockaddr *sa = (const struct sockaddr *)addr; | 962 | const struct sockaddr *sa = (const struct sockaddr *)addr; |
963 | 963 | ||
964 | #if DEBUG_TCP_NAT | 964 | #if DEBUG_TCP_NAT |
@@ -995,10 +995,12 @@ run_gnunet_nat_client (struct Plugin *plugin, const char *addr, size_t addrlen) | |||
995 | #endif | 995 | #endif |
996 | 996 | ||
997 | /* Start the client process */ | 997 | /* Start the client process */ |
998 | pid = GNUNET_OS_start_process(NULL, NULL, "gnunet-nat-client", "gnunet-nat-client", plugin->external_address, address_as_string, port_as_string, NULL); | 998 | proc = GNUNET_OS_start_process(NULL, NULL, "gnunet-nat-client", "gnunet-nat-client", plugin->external_address, address_as_string, port_as_string, NULL); |
999 | GNUNET_free(address_as_string); | 999 | GNUNET_free(address_as_string); |
1000 | GNUNET_free(port_as_string); | 1000 | GNUNET_free(port_as_string); |
1001 | GNUNET_OS_process_wait (pid); | 1001 | GNUNET_OS_process_wait (proc); |
1002 | GNUNET_OS_process_close (proc); | ||
1003 | proc = NULL; | ||
1002 | } | 1004 | } |
1003 | 1005 | ||
1004 | 1006 | ||
@@ -2201,8 +2203,8 @@ tcp_transport_start_nat_server(struct Plugin *plugin) | |||
2201 | "Starting gnunet-nat-server process cmd: %s %s\n", "gnunet-nat-server", plugin->internal_address); | 2203 | "Starting gnunet-nat-server process cmd: %s %s\n", "gnunet-nat-server", plugin->internal_address); |
2202 | #endif | 2204 | #endif |
2203 | /* Start the server process */ | 2205 | /* Start the server process */ |
2204 | plugin->server_pid = GNUNET_OS_start_process(NULL, plugin->server_stdout, "gnunet-nat-server", "gnunet-nat-server", plugin->internal_address, NULL); | 2206 | plugin->server_proc = GNUNET_OS_start_process(NULL, plugin->server_stdout, "gnunet-nat-server", "gnunet-nat-server", plugin->internal_address, NULL); |
2205 | if (plugin->server_pid == GNUNET_SYSERR) | 2207 | if (plugin->server_proc == NULL) |
2206 | { | 2208 | { |
2207 | #if DEBUG_TCP_NAT | 2209 | #if DEBUG_TCP_NAT |
2208 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2210 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -2603,9 +2605,11 @@ libgnunet_plugin_transport_tcp_done (void *cls) | |||
2603 | 2605 | ||
2604 | if (plugin->behind_nat == GNUNET_YES) | 2606 | if (plugin->behind_nat == GNUNET_YES) |
2605 | { | 2607 | { |
2606 | if (0 != PLIBC_KILL (plugin->server_pid, SIGTERM)) | 2608 | if (0 != GNUNET_OS_process_kill (plugin->server_proc, SIGTERM)) |
2607 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); | 2609 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); |
2608 | GNUNET_OS_process_wait (plugin->server_pid); | 2610 | GNUNET_OS_process_wait (plugin->server_proc); |
2611 | GNUNET_OS_process_close (plugin->server_proc); | ||
2612 | plugin->server_proc = NULL; | ||
2609 | } | 2613 | } |
2610 | GNUNET_free_non_null(plugin->bind_address); | 2614 | GNUNET_free_non_null(plugin->bind_address); |
2611 | GNUNET_free (plugin); | 2615 | GNUNET_free (plugin); |