aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-communicator-tcp.c
diff options
context:
space:
mode:
authort3sserakt <t3ss@posteo.de>2020-07-21 12:26:55 +0200
committert3sserakt <t3ss@posteo.de>2020-07-21 12:26:55 +0200
commit17d84245fdfeeb1a6da4ffb97898903cb55f702c (patch)
tree6e448372a1fb87e21a25e8ea0542fa7f2f327967 /src/transport/gnunet-communicator-tcp.c
parentd63986fa2002fcee65dff17746b2b8154289a543 (diff)
downloadgnunet-17d84245fdfeeb1a6da4ffb97898903cb55f702c.tar.gz
gnunet-17d84245fdfeeb1a6da4ffb97898903cb55f702c.zip
- fixed mem leaks.
Diffstat (limited to 'src/transport/gnunet-communicator-tcp.c')
-rw-r--r--src/transport/gnunet-communicator-tcp.c57
1 files changed, 41 insertions, 16 deletions
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c
index fff699415..9da14dcb0 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -665,7 +665,7 @@ struct PortOnlyIpv4Ipv6
665 /** 665 /**
666 * Length of ipv4 address. 666 * Length of ipv4 address.
667 */ 667 */
668 socklen_t *addr_len_ipv4; 668 socklen_t addr_len_ipv4;
669 669
670 /** 670 /**
671 * Ipv6 address we like to bind to. 671 * Ipv6 address we like to bind to.
@@ -675,7 +675,7 @@ struct PortOnlyIpv4Ipv6
675 /** 675 /**
676 * Length of ipv6 address. 676 * Length of ipv6 address.
677 */ 677 */
678 socklen_t *addr_len_ipv6; 678 socklen_t addr_len_ipv6;
679 679
680}; 680};
681 681
@@ -1700,7 +1700,7 @@ tcp_address_to_sockaddr_port_only (const char *bindto, unsigned int *port)
1700 i4 = GNUNET_malloc (sizeof(struct sockaddr_in)); 1700 i4 = GNUNET_malloc (sizeof(struct sockaddr_in));
1701 po->addr_ipv4 = tcp_address_to_sockaddr_numeric_v4 (&sock_len_ipv4, *i4, 1701 po->addr_ipv4 = tcp_address_to_sockaddr_numeric_v4 (&sock_len_ipv4, *i4,
1702 *port); 1702 *port);
1703 po->addr_len_ipv4 = &sock_len_ipv4; 1703 po->addr_len_ipv4 = sock_len_ipv4;
1704 } 1704 }
1705 else 1705 else
1706 { 1706 {
@@ -1708,14 +1708,19 @@ tcp_address_to_sockaddr_port_only (const char *bindto, unsigned int *port)
1708 i4 = GNUNET_malloc (sizeof(struct sockaddr_in)); 1708 i4 = GNUNET_malloc (sizeof(struct sockaddr_in));
1709 po->addr_ipv4 = tcp_address_to_sockaddr_numeric_v4 (&sock_len_ipv4, *i4, 1709 po->addr_ipv4 = tcp_address_to_sockaddr_numeric_v4 (&sock_len_ipv4, *i4,
1710 *port); 1710 *port);
1711 po->addr_len_ipv4 = &sock_len_ipv4; 1711 po->addr_len_ipv4 = sock_len_ipv4;
1712 1712
1713 i6 = GNUNET_malloc (sizeof(struct sockaddr_in6)); 1713 i6 = GNUNET_malloc (sizeof(struct sockaddr_in6));
1714 po->addr_ipv6 = tcp_address_to_sockaddr_numeric_v6 (&sock_len_ipv6, *i6, 1714 po->addr_ipv6 = tcp_address_to_sockaddr_numeric_v6 (&sock_len_ipv6, *i6,
1715 *port); 1715 *port);
1716 1716
1717 po->addr_len_ipv6 = &sock_len_ipv6; 1717 po->addr_len_ipv6 = sock_len_ipv6;
1718
1719 GNUNET_free (i6);
1718 } 1720 }
1721
1722 GNUNET_free (i4);
1723
1719 return po; 1724 return po;
1720} 1725}
1721 1726
@@ -1758,7 +1763,7 @@ extract_address (const char *bindto)
1758 } 1763 }
1759 } 1764 }
1760 1765
1761 // GNUNET_free(cp); 1766 GNUNET_free (cp);
1762 1767
1763 return start; 1768 return start;
1764} 1769}
@@ -2991,7 +2996,8 @@ init_socket (const struct sockaddr *addr,
2991 GNUNET_ERROR_TYPE_ERROR, 2996 GNUNET_ERROR_TYPE_ERROR,
2992 _ ( 2997 _ (
2993 "Transport service is lacking key configuration settings. Exiting.\n")); 2998 "Transport service is lacking key configuration settings. Exiting.\n"));
2994 GNUNET_RESOLVER_request_cancel (resolve_request_handle); 2999 if (NULL != resolve_request_handle)
3000 GNUNET_RESOLVER_request_cancel (resolve_request_handle);
2995 GNUNET_SCHEDULER_shutdown (); 3001 GNUNET_SCHEDULER_shutdown ();
2996 return GNUNET_SYSERR; 3002 return GNUNET_SYSERR;
2997 } 3003 }
@@ -3022,7 +3028,8 @@ init_socket (const struct sockaddr *addr,
3022 if (NULL == ch) 3028 if (NULL == ch)
3023 { 3029 {
3024 GNUNET_break (0); 3030 GNUNET_break (0);
3025 GNUNET_RESOLVER_request_cancel (resolve_request_handle); 3031 if (NULL != resolve_request_handle)
3032 GNUNET_RESOLVER_request_cancel (resolve_request_handle);
3026 GNUNET_SCHEDULER_shutdown (); 3033 GNUNET_SCHEDULER_shutdown ();
3027 return GNUNET_SYSERR; 3034 return GNUNET_SYSERR;
3028 } 3035 }
@@ -3069,10 +3076,18 @@ nat_register ()
3069 NULL /* FIXME: support reversal: #5529 */, 3076 NULL /* FIXME: support reversal: #5529 */,
3070 NULL /* closure */); 3077 NULL /* closure */);
3071 3078
3079 i = 0;
3080
3081 /*for (i = addrs_lens - 1; i >= 0; i--)
3082 GNUNET_free (saddrs[i]);*/
3083 GNUNET_free_non_null (saddrs);
3084 GNUNET_free_non_null (saddr_lens);
3085
3072 if (NULL == nat) 3086 if (NULL == nat)
3073 { 3087 {
3074 GNUNET_break (0); 3088 GNUNET_break (0);
3075 GNUNET_RESOLVER_request_cancel (resolve_request_handle); 3089 if (NULL != resolve_request_handle)
3090 GNUNET_RESOLVER_request_cancel (resolve_request_handle);
3076 GNUNET_SCHEDULER_shutdown (); 3091 GNUNET_SCHEDULER_shutdown ();
3077 } 3092 }
3078} 3093}
@@ -3169,6 +3184,8 @@ run (void *cls,
3169 char dummy[2]; 3184 char dummy[2];
3170 char *rest = NULL; 3185 char *rest = NULL;
3171 struct PortOnlyIpv4Ipv6 *po; 3186 struct PortOnlyIpv4Ipv6 *po;
3187 socklen_t addr_len_ipv4;
3188 socklen_t addr_len_ipv6;
3172 3189
3173 (void) cls; 3190 (void) cls;
3174 cfg = c; 3191 cfg = c;
@@ -3211,17 +3228,25 @@ run (void *cls,
3211 { 3228 {
3212 po = tcp_address_to_sockaddr_port_only (bindto, &port); 3229 po = tcp_address_to_sockaddr_port_only (bindto, &port);
3213 3230
3214 if (NULL != &po->addr_ipv4) 3231 addr_len_ipv4 = po->addr_len_ipv4;
3232
3233
3234 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3235 "address po %s\n",
3236 GNUNET_a2s (po->addr_ipv4, addr_len_ipv4));
3237
3238 if (NULL != po->addr_ipv4)
3215 { 3239 {
3216 init_socket (po->addr_ipv4, *po->addr_len_ipv4); 3240 init_socket (po->addr_ipv4, addr_len_ipv4);
3217 add_addr (po->addr_ipv4, *po->addr_len_ipv4); 3241 add_addr (po->addr_ipv4, addr_len_ipv4);
3218 } 3242 }
3219 3243
3220 /*if (NULL != &po->addr_ipv6) 3244 if (NULL != po->addr_ipv6)
3221 { 3245 {
3222 init_socket (po->addr_ipv6, *po->addr_len_ipv6); 3246 addr_len_ipv6 = po->addr_len_ipv6;
3223 add_addr (po->addr_ipv6, *po->addr_len_ipv6); 3247 init_socket (po->addr_ipv6, addr_len_ipv6);
3224 }*/ 3248 add_addr (po->addr_ipv6, addr_len_ipv6);
3249 }
3225 3250
3226 nat_register (); 3251 nat_register ();
3227 } 3252 }