diff options
Diffstat (limited to 'src/transport/gnunet-communicator-tcp.c')
-rw-r--r-- | src/transport/gnunet-communicator-tcp.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c index 025326de7..0bf919787 100644 --- a/src/transport/gnunet-communicator-tcp.c +++ b/src/transport/gnunet-communicator-tcp.c | |||
@@ -2119,10 +2119,9 @@ 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 char * | 2122 | static void |
2123 | extract_address (const char *bindto) | 2123 | extract_address (const char *bindto, char **addr) |
2124 | { | 2124 | { |
2125 | |||
2126 | char *start; | 2125 | char *start; |
2127 | char *token; | 2126 | char *token; |
2128 | char *cp; | 2127 | char *cp; |
@@ -2147,6 +2146,7 @@ extract_address (const char *bindto) | |||
2147 | { | 2146 | { |
2148 | start++; /* skip over '['*/ | 2147 | start++; /* skip over '['*/ |
2149 | cp[strlen (cp) - 1] = '\0'; /* eat ']'*/ | 2148 | cp[strlen (cp) - 1] = '\0'; /* eat ']'*/ |
2149 | *addr = GNUNET_strdup (start); | ||
2150 | } | 2150 | } |
2151 | else | 2151 | else |
2152 | { | 2152 | { |
@@ -2154,23 +2154,20 @@ extract_address (const char *bindto) | |||
2154 | if (strlen (bindto) == strlen (token)) | 2154 | if (strlen (bindto) == strlen (token)) |
2155 | { | 2155 | { |
2156 | token = strtok_r (cp, ":", &rest); | 2156 | token = strtok_r (cp, ":", &rest); |
2157 | *addr = strdup (token); | ||
2157 | } | 2158 | } |
2158 | else | 2159 | else |
2159 | { | 2160 | { |
2160 | token++; | 2161 | token++; |
2161 | res = GNUNET_strdup (token); | 2162 | res = GNUNET_strdup (token); |
2162 | GNUNET_free (cp); | 2163 | *addr = GNUNET_strdup (res); |
2163 | return res; | ||
2164 | } | 2164 | } |
2165 | } | 2165 | } |
2166 | 2166 | ||
2167 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2167 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2168 | "extract address 3\n"); | 2168 | "tcp address: %s\n", |
2169 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2169 | *addr); |
2170 | "extract address with start %s\n", | 2170 | GNUNET_free (cp); |
2171 | start); | ||
2172 | |||
2173 | return GNUNET_strdup (start); | ||
2174 | } | 2171 | } |
2175 | 2172 | ||
2176 | 2173 | ||
@@ -2241,6 +2238,7 @@ extract_port (const char *addr_and_port) | |||
2241 | GNUNET_free (cp); | 2238 | GNUNET_free (cp); |
2242 | return 0; | 2239 | return 0; |
2243 | } | 2240 | } |
2241 | GNUNET_free (cp); | ||
2244 | } | 2242 | } |
2245 | else | 2243 | else |
2246 | { | 2244 | { |
@@ -2250,7 +2248,6 @@ extract_port (const char *addr_and_port) | |||
2250 | port = 0; | 2248 | port = 0; |
2251 | } | 2249 | } |
2252 | 2250 | ||
2253 | |||
2254 | return port; | 2251 | return port; |
2255 | } | 2252 | } |
2256 | 2253 | ||
@@ -2269,10 +2266,11 @@ tcp_address_to_sockaddr (const char *bindto, socklen_t *sock_len) | |||
2269 | unsigned int port; | 2266 | unsigned int port; |
2270 | struct sockaddr_in v4; | 2267 | struct sockaddr_in v4; |
2271 | struct sockaddr_in6 v6; | 2268 | struct sockaddr_in6 v6; |
2272 | char *start; | 2269 | char *start = GNUNET_malloc (sizeof(bindto)); |
2273 | 2270 | ||
2274 | // cp = GNUNET_strdup (bindto); | 2271 | // cp = GNUNET_strdup (bindto); |
2275 | start = extract_address (bindto); | 2272 | start = GNUNET_malloc (sizeof(bindto)); |
2273 | extract_address (bindto, &start); | ||
2276 | 2274 | ||
2277 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2275 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2278 | "start %s\n", | 2276 | "start %s\n", |
@@ -3604,7 +3602,8 @@ run (void *cls, | |||
3604 | return; | 3602 | return; |
3605 | } | 3603 | } |
3606 | 3604 | ||
3607 | start = extract_address (bindto); | 3605 | start = GNUNET_malloc (sizeof(bindto)); |
3606 | extract_address (bindto, &start); | ||
3608 | 3607 | ||
3609 | if (1 == inet_pton (AF_INET, start, &v4.sin_addr)) | 3608 | if (1 == inet_pton (AF_INET, start, &v4.sin_addr)) |
3610 | { | 3609 | { |