SOCKS: fix "on_connecting" callback

This commit is contained in:
Přemysl Eric Janouch 2015-07-23 04:17:15 +02:00
parent 4a89572089
commit 9686e55215

View File

@ -364,6 +364,7 @@ struct socks_target
{
LIST_HEADER (struct socks_target)
char *address_str; ///< Target address as a string
struct socks_addr address; ///< Target address
uint16_t port; ///< Target service port
};
@ -822,9 +823,10 @@ socks_connector_on_connecting (void *user_data, const char *via)
if (!self->on_connecting)
return;
// TODO: reconstruct the address from the current target iterator,
// or just store it in unprocessed form
char *address = format_host_port_pair ("", "");
struct socks_target *target = self->targets_iter;
char *port = xstrdup_printf ("%u", target->port);
char *address = format_host_port_pair (target->address_str, port);
free (port);
self->on_connecting (self->user_data, address, via,
self->protocol_iter ? "SOCKS4A" : "SOCKS5");
free (address);
@ -1005,6 +1007,7 @@ socks_connector_free (struct socks_connector *self)
LIST_FOR_EACH (struct socks_target, iter, self->targets)
{
socks_addr_free (&iter->address);
free (iter->address_str);
free (iter);
}
@ -1037,6 +1040,7 @@ socks_connector_add_target (struct socks_connector *self,
}
target->port = port;
target->address_str = xstrdup (host);
LIST_APPEND_WITH_TAIL (self->targets, self->targets_tail, target);
return true;
}