diff options
Diffstat (limited to 'src/transport/gnunet-communicator-tcp.c')
-rw-r--r-- | src/transport/gnunet-communicator-tcp.c | 39 |
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 | */ |
2122 | static void | 2122 | static char * |
2123 | extract_address (const char *bindto, char **addr) | 2123 | extract_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); |