aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-22 09:26:55 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-22 09:26:55 +0100
commit925886ed8eea8342c7d7a94b5250fff2f421f60f (patch)
tree14196c364b724351b645566bb0d5a1582fe133c5 /src/transport
parent71d0c6696d2b2f1293bea1fc735d885913da6d8a (diff)
downloadgnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.tar.gz
gnunet-925886ed8eea8342c7d7a94b5250fff2f421f60f.zip
-fixes
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/gnunet-communicator-tcp.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c
index 07eb6db3a..c6c96f03e 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -2119,9 +2119,10 @@ tcp_address_to_sockaddr_port_only (const char *bindto, unsigned int *port)
2119 * @param bindto String we extract the address part from. 2119 * @param bindto String we extract the address part from.
2120 * @return The extracted address string. 2120 * @return The extracted address string.
2121 */ 2121 */
2122static void 2122static char *
2123extract_address (const char *bindto, char **addr) 2123extract_address (const char *bindto)
2124{ 2124{
2125 char *addr;
2125 char *start; 2126 char *start;
2126 char *token; 2127 char *token;
2127 char *cp; 2128 char *cp;
@@ -2146,7 +2147,7 @@ extract_address (const char *bindto, char **addr)
2146 { 2147 {
2147 start++; /* skip over '['*/ 2148 start++; /* skip over '['*/
2148 cp[strlen (cp) - 1] = '\0'; /* eat ']'*/ 2149 cp[strlen (cp) - 1] = '\0'; /* eat ']'*/
2149 *addr = GNUNET_strdup (start); 2150 addr = GNUNET_strdup (start);
2150 } 2151 }
2151 else 2152 else
2152 { 2153 {
@@ -2154,20 +2155,21 @@ extract_address (const char *bindto, char **addr)
2154 if (strlen (bindto) == strlen (token)) 2155 if (strlen (bindto) == strlen (token))
2155 { 2156 {
2156 token = strtok_r (cp, ":", &rest); 2157 token = strtok_r (cp, ":", &rest);
2157 *addr = strdup (token); 2158 addr = GNUNET_strdup (token);
2158 } 2159 }
2159 else 2160 else
2160 { 2161 {
2161 token++; 2162 token++;
2162 res = GNUNET_strdup (token); 2163 res = GNUNET_strdup (token);
2163 *addr = GNUNET_strdup (res); 2164 addr = GNUNET_strdup (res);
2164 } 2165 }
2165 } 2166 }
2166 2167
2167 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 2168 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2168 "tcp address: %s\n", 2169 "tcp address: %s\n",
2169 *addr); 2170 addr);
2170 GNUNET_free (cp); 2171 GNUNET_free (cp);
2172 return addr;
2171} 2173}
2172 2174
2173 2175
@@ -3611,9 +3613,8 @@ run (void *cls,
3611 return; 3613 return;
3612 } 3614 }
3613 3615
3614 start = GNUNET_malloc (sizeof(bindto)); 3616 start = extract_address (bindto);
3615 extract_address (bindto, &start); 3617 // FIXME: check for NULL == start...
3616
3617 if (1 == inet_pton (AF_INET, start, &v4.sin_addr)) 3618 if (1 == inet_pton (AF_INET, start, &v4.sin_addr))
3618 { 3619 {
3619 bind_port = extract_port (bindto); 3620 bind_port = extract_port (bindto);
@@ -3669,17 +3670,19 @@ main (int argc, char *const *argv)
3669 GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG, 3670 GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG,
3670 "transport", 3671 "transport",
3671 "Starting tcp communicator\n"); 3672 "Starting tcp communicator\n");
3672 3673 if (GNUNET_OK !=
3673 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) 3674 GNUNET_STRINGS_get_utf8_args (argc, argv,
3675 &argc, &argv))
3674 return 2; 3676 return 2;
3675 3677
3676 ret = (GNUNET_OK == GNUNET_PROGRAM_run (argc, 3678 ret = (GNUNET_OK ==
3677 argv, 3679 GNUNET_PROGRAM_run (argc,
3678 "gnunet-communicator-tcp", 3680 argv,
3679 _ ("GNUnet TCP communicator"), 3681 "gnunet-communicator-tcp",
3680 options, 3682 _ ("GNUnet TCP communicator"),
3681 &run, 3683 options,
3682 NULL)) 3684 &run,
3685 NULL))
3683 ? 0 3686 ? 0
3684 : 1; 3687 : 1;
3685 GNUNET_free_nz ((void *) argv); 3688 GNUNET_free_nz ((void *) argv);