diff options
author | t3sserakt <t3ss@posteo.de> | 2020-07-21 12:26:55 +0200 |
---|---|---|
committer | t3sserakt <t3ss@posteo.de> | 2020-07-21 12:26:55 +0200 |
commit | 17d84245fdfeeb1a6da4ffb97898903cb55f702c (patch) | |
tree | 6e448372a1fb87e21a25e8ea0542fa7f2f327967 /src/transport/gnunet-communicator-tcp.c | |
parent | d63986fa2002fcee65dff17746b2b8154289a543 (diff) | |
download | gnunet-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.c | 57 |
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 | } |