1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-01 15:26:37 +02:00

Fix bug with option xfer.network.own_ip when sending DCC file

This commit is contained in:
Sebastien Helleu
2008-12-15 10:13:37 +01:00
parent 891d2e3c51
commit 507adbe42e
2 changed files with 14 additions and 5 deletions
+1
View File
@@ -946,6 +946,7 @@ irc_command_dcc (void *data, struct t_gui_buffer *buffer, int argc,
snprintf (str_address, sizeof (str_address),
"%lu", address);
weechat_infolist_new_var_string (item, "address", str_address);
weechat_infolist_new_var_integer (item, "socket", ptr_server->sock);
weechat_hook_signal_send ("xfer_add",
WEECHAT_HOOK_SIGNAL_POINTER,
infolist);
+13 -5
View File
@@ -835,6 +835,10 @@ xfer_add_cb (void *data, const char *signal, const char *type_data, void *signal
/* get local IP address */
sscanf (weechat_infolist_string (infolist, "address"), "%lu", &local_addr);
memset (&addr, 0, sizeof (struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl (local_addr);
/* look up the IP address from network_own_ip, if set */
if (weechat_config_string(xfer_config_network_own_ip)
&& weechat_config_string(xfer_config_network_own_ip)[0])
@@ -844,6 +848,15 @@ xfer_add_cb (void *data, const char *signal, const char *type_data, void *signal
{
memcpy (&tmpaddr, host->h_addr_list[0], sizeof(struct in_addr));
local_addr = ntohl (tmpaddr.s_addr);
sock = weechat_infolist_integer (infolist, "socket");
if (sock > 0)
{
memset (&addr, 0, sizeof (struct sockaddr_in));
length = sizeof (addr);
getsockname (sock, (struct sockaddr *) &addr, &length);
addr.sin_family = AF_INET;
}
}
else
{
@@ -868,11 +881,6 @@ xfer_add_cb (void *data, const char *signal, const char *type_data, void *signal
}
/* look for port */
memset (&addr, 0, sizeof (struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl (local_addr);
port = 0;
if (weechat_config_string (xfer_config_network_port_range)