diff options
author | Belgin Știrbu <belginstirbu@hotmail.com> | 2022-04-15 11:13:22 -0500 |
---|---|---|
committer | Belgin Știrbu <belginstirbu@hotmail.com> | 2022-04-15 11:13:22 -0500 |
commit | 4de3342dfcf1f1ccd25c627f67587569899f0890 (patch) | |
tree | 70b6f5ee24735a7c7cd3f0e24713b398bcde2066 | |
parent | 7f5f333aa5591aff2ca1d93157a76836592cecc0 (diff) | |
download | pidgin-4de3342dfcf1f1ccd25c627f67587569899f0890.tar.gz |
Fix IRC file transfers on Windows
This might also fix some other things, like getsockname
error #10014
Testing Done:
Tested on Windows and Linux. Executed some file transfers over IRC and they worked.
Bugs closed: PIDGIN-17175
Reviewed at https://reviews.imfreedom.org/r/1382/
-rw-r--r-- | libpurple/network.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libpurple/network.c b/libpurple/network.c index 08b07c2975..57bc4fa280 100644 --- a/libpurple/network.c +++ b/libpurple/network.c @@ -441,6 +441,14 @@ purple_network_do_listen(unsigned short port, int socket_family, int socket_type * XXX - Try IPv6 addresses first? */ for (next = res; next != NULL; next = next->ai_next) { +#if _WIN32 + /* + * On Windows, the address family for the transport + * address should always be set to AF_INET. + */ + if(next->ai_family != AF_INET) + continue; +#endif listenfd = socket(next->ai_family, next->ai_socktype, next->ai_protocol); if (listenfd < 0) continue; @@ -598,7 +606,7 @@ void purple_network_listen_cancel(PurpleNetworkListenData *listen_data) unsigned short purple_network_get_port_from_fd(int fd) { - struct sockaddr_in addr; + common_sockaddr_t addr; socklen_t len; g_return_val_if_fail(fd >= 0, 0); @@ -609,7 +617,7 @@ purple_network_get_port_from_fd(int fd) return 0; } - return ntohs(addr.sin_port); + return ntohs(addr.in.sin_port); } #ifdef _WIN32 |