1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 00:45:42 +02:00

api: fix connection to servers with hook_connect() on Windows 10 with Windows subsystem for Linux (issue #770)

The test on socketpair() function is now made when hooks are
initialized (instead of doing the test at compilation time).
This commit is contained in:
Sébastien Helleu
2016-08-19 20:06:04 +02:00
parent 091ef992dd
commit c2ea70c3e9
4 changed files with 189 additions and 160 deletions
+1
View File
@@ -36,6 +36,7 @@ Improvements::
Bug fixes::
* core, irc, xfer: refresh domain name and name server addresses before connection to servers (issue #771)
* api: fix connection to servers with hook_connect() on Windows 10 with Windows subsystem for Linux (issue #770)
* api: fix crash in function string_split_command() when the separator is not a semicolon (issue #731)
* irc: fix NULL pointer dereference in 734 command callback (issue #738)
* relay: return an empty hdata when the requested hdata or pointer is not found (issue #767)
+63 -25
View File
File diff suppressed because it is too large Load Diff
+3 -12
View File
@@ -27,17 +27,8 @@
#include <gnutls/gnutls.h>
#endif
#if defined(__CYGWIN__) || defined(__APPLE__) || defined(__MACH__)
/*
* For the connect hook, when this is defined an array of sockets will
* be passed from the parent process to the child process instead of using
* SCM_RIGHTS to pass a socket back from the child process to parent process.
*
* This allows connections to work on Windows but it limits the number of
* IPs that can be attempted each time.
*/
/* used if socketpair() function is NOT available */
#define HOOK_CONNECT_MAX_SOCKETS 4
#endif
struct t_gui_bar;
struct t_gui_buffer;
@@ -285,10 +276,9 @@ struct t_hook_connect
struct t_hook *handshake_hook_timer; /* timer for handshake timeout */
int handshake_fd_flags; /* socket flags saved for handshake */
char *handshake_ip_address; /* ip address (used for handshake) */
#ifdef HOOK_CONNECT_MAX_SOCKETS
/* sockets used if socketpair() is NOT available */
int sock_v4[HOOK_CONNECT_MAX_SOCKETS]; /* IPv4 sockets for connecting */
int sock_v6[HOOK_CONNECT_MAX_SOCKETS]; /* IPv6 sockets for connecting */
#endif /* HOOK_CONNECT_MAX_SOCKETS */
};
/* hook print */
@@ -454,6 +444,7 @@ extern struct t_hook *weechat_hooks[];
extern struct t_hook *last_weechat_hook[];
extern int hooks_count[];
extern int hooks_count_total;
extern int hook_socketpair_ok;
/* hook functions */
+122 -123
View File
File diff suppressed because it is too large Load Diff