aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r--src/transport/plugin_transport_tcp.c20
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);