aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-communicator-tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/gnunet-communicator-tcp.c')
-rw-r--r--src/transport/gnunet-communicator-tcp.c29
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 */
2122static char * 2122static void
2123extract_address (const char *bindto) 2123extract_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 {