From: Gianmarco De Gregori <[email protected]> On Windows, multi-socket support failed with mixed protocols due to repeated socket_set() calls, which caused accept() to be triggered before having an event to process. This fix skips socket_set() calls for non-UDP sockets in MODE_SERVER inside multi_io_process_flags().
Change-Id: Ia389fcec50fb2bbc0aa5ad41a2c23c17c04e6e9b Signed-off-by: Gianmarco De Gregori <[email protected]> Acked-by: Lev Stipakov <[email protected]> --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1174 This mail reflects revision 3 of this Change. Acked-by according to Gerrit (reflected above): Lev Stipakov <[email protected]> diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c index 03b6a0c..5d22fa3 100644 --- a/src/openvpn/forward.c +++ b/src/openvpn/forward.c @@ -2121,10 +2121,15 @@ /* * Configure event wait based on socket, tuntap flags. + * (for TCP server sockets this happens in + * socket_set_listen_persistent()). */ for (int i = 0; i < c->c1.link_sockets_num; i++) { - socket_set(c->c2.link_sockets[i], es, socket, &c->c2.link_sockets[i]->ev_arg, NULL); + if ((c->options.mode != MODE_SERVER) || (proto_is_dgram(c->c2.link_sockets[i]->info.proto))) + { + socket_set(c->c2.link_sockets[i], es, socket, &c->c2.link_sockets[i]->ev_arg, NULL); + } } tun_set(c->c1.tuntap, es, tuntap, (void *)tun_shift, NULL); _______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
