From patchwork Wed Nov 15 13:45:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "its_Giaan (Code Review)" X-Patchwork-Id: 3442 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7300:3c06:b0:f2:62eb:61c1 with SMTP id e6csp2926277dys; Wed, 15 Nov 2023 05:46:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IGwCo/6t/abtidaG3/JD344NXZy3WumaFoqiwZ9ed20mgeiAOL0tbVii45dmG9uneeRN6wy X-Received: by 2002:a17:90b:888:b0:283:2897:91a4 with SMTP id bj8-20020a17090b088800b00283289791a4mr5146527pjb.2.1700055974547; Wed, 15 Nov 2023 05:46:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700055974; cv=none; d=google.com; s=arc-20160816; b=OCrQsGnehOI7INwLBOaaFQf+IZwiLCVopoW3QNxZvv2pvdI6AUfYW4wXCHC4c6mhiO SsIsIqRQbpLSZFsDmqAH5UJNKuxZePoGiIGZ8SA8wmWZCfVR3/vBUHIhM6NKkjWnfcpD 7OqvaAjrCdEId+FPu/DUu+s0hwTSIXAFQR/aOkn/RoICLFEnPT2gesAQD2/s6g4pGm5r zmPCbyKZRDv0NfzbexC/AorEgIZUCBuigeZG61RidY2yLLMRgTN+SZmmRTr1MjuyJuKk amRY3CDoX5nYQhGzYDagIKAmur9KMni2YiEbyb3Q2M6X+D+WbI1bGAkWrXW/YJS/6084 Fy1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:cc:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:user-agent :mime-version:message-id:references:auto-submitted:to:date:from :dkim-signature:dkim-signature:dkim-signature; bh=tHo7NG4RGGIwglKAxcehdkSJyK99SvVYkqWySOtfqyI=; fh=U7wEyxtwz2o5+UdevFSA47vNeG9knhWH0KV//QhD5a0=; b=amaj8C/kzheFmjaxWcuTKjFvdV13Hmsr8qcxyi4T96D59nAS3S9J2yeM/675OnW1Np 5AsPbyG1JGGdViexocp+m/6IIJydpnYoNjDbcpRPNWXzSugdwb7sRyvA0gA45UT8VSI+ 0D0r3jRFkhS2C6kwNFkNnbeLv284xKy4XKmObQ20qdUJ4+35vRc9QTVkep/ArTI4cJI3 GeO4iZbydCjLto1w+lDhu+V6hr/aHl+IxrIhTo27K0M8/aR1+/7/ePfOu6Cw5voM7mpR nraubbfTOwRnAUev4W//lV1lxh57448fMuxX45CINaHy743oPbPzRZLcNj5YUIfJizOi 5WqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=m0t8K8Ij; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=LxrR9NOj; dkim=neutral (body hash did not verify) header.i=@openvpn.net header.s=google header.b=PD7Z59iI; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=openvpn.net Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id om7-20020a17090b3a8700b00276571c0d34si10942113pjb.6.2023.11.15.05.46.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Nov 2023 05:46:14 -0800 (PST) Received-SPF: pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) client-ip=216.105.38.7; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=m0t8K8Ij; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=LxrR9NOj; dkim=neutral (body hash did not verify) header.i=@openvpn.net header.s=google header.b=PD7Z59iI; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=openvpn.net Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1r3GCp-0008Hl-RV; Wed, 15 Nov 2023 13:45:22 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r3GCn-0008HF-6G for openvpn-devel@lists.sourceforge.net; Wed, 15 Nov 2023 13:45:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Type:Content-Transfer-Encoding:MIME-Version :Message-ID:Reply-To:References:Subject:List-Unsubscribe:List-Id:Cc:To:Date: From:Sender:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:List-Help: List-Subscribe:List-Post:List-Owner:List-Archive; bh=zGD3guYfDo/zo+e5zqOdZQd2zDksItzf1dlPMKmc474=; b=m0t8K8IjQQK1fH8vrlHK5aqRWL MCWwPauMmrljEmnJrs36ZlGn/uLJPTXpEqbNBnP00k8dO/Tbo9b03bFdhiaigMtxFvNX+1yf5cgy9 QPGDHwxKCRyw7U9es1hnNUq4nqed1/2GJ4w0U0zytEVwNCmdFSPKURgEaQEyMxH4FBGw=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Type:Content-Transfer-Encoding:MIME-Version:Message-ID:Reply-To: References:Subject:List-Unsubscribe:List-Id:Cc:To:Date:From:Sender:Content-ID :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To: Resent-Cc:Resent-Message-ID:In-Reply-To:List-Help:List-Subscribe:List-Post: List-Owner:List-Archive; bh=zGD3guYfDo/zo+e5zqOdZQd2zDksItzf1dlPMKmc474=; b=L xrR9NOjUYCjANLvagFwDwjljIlG/S44R+MfHy2UdmxqhjRJYoZ44nWWnW4ySJMjpX32aZb16ds1XL Ti0p0ZBgW4P5bBsqdJej1TSkC3ya/nqecmAegBMi2T059GTbaJWpa2py+VvLPt87VobL3NImD0B+6 kiblHKaRXSjAabsE=; Received: from mail-wm1-f43.google.com ([209.85.128.43]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1r3GCg-0000Nd-9i for openvpn-devel@lists.sourceforge.net; Wed, 15 Nov 2023 13:45:19 +0000 Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4084b0223ccso53115105e9.2 for ; Wed, 15 Nov 2023 05:45:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvpn.net; s=google; t=1700055908; x=1700660708; darn=lists.sourceforge.net; h=user-agent:content-disposition:content-transfer-encoding :mime-version:message-id:reply-to:references:subject :list-unsubscribe:list-id:auto-submitted:cc:to:date:from:from:to:cc :subject:date:message-id:reply-to; bh=zGD3guYfDo/zo+e5zqOdZQd2zDksItzf1dlPMKmc474=; b=PD7Z59iIyialdXJMDb7egVNvK3YviTlMRLx1yWEZFCS4kbTm3H3oGlKuq0HrkQFJao qKNBkHPV3sf9r72zp6RVh45u7+ghNXhQETZr6PfV1MDQJip1F2Q1icsomkbIdSJwVDSV FI4dLFaACBQpefqn0akizZq/K3bShQklFfDqXQYP4vD+GuZ3PZeTU/SsKGmPuAMHMz1Z 5+LQkl6eK3MXuPlhXP7vE1ufTyUMybhc1fBHjyS3UgqFVbYVT2+4PC85iuGpcTCh+/TE 6QwbkXzPAMxD1EPU93wov862faPspA8iFF9zxWfF/Eqowl/VxD8Eg/oWtjI5FLvbUH8x hM0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700055908; x=1700660708; h=user-agent:content-disposition:content-transfer-encoding :mime-version:message-id:reply-to:references:subject :list-unsubscribe:list-id:auto-submitted:cc:to:date:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zGD3guYfDo/zo+e5zqOdZQd2zDksItzf1dlPMKmc474=; b=V7h9XoBBt6aMT/lbqi1bM3yhGIShAsYg/4RwwikkVnbw7DDz1tNtInxSWVMHuCuK6D vArVq3hi222oJjqY09pL8aKzA3ELdbwkLiv1/AIt6FYVSu+TgNnKqdI6GG3qCfMfuphE DBCevbtv1LkHg+KlSRTWPsWB1aE9FkECVey5dp/13cv/tcqoY3faYLwl4Rt5ntO6T7M4 kMOP7zDs7/gof12fXM7xq7IeHT0TmFGcjOsxbkojPU3eRqWN2bSB1aKQF+AdUsKo1x0G dosAi84H5nXTIqywpC/qR9YGhJCxaS9/I9X/Xj+eAPqEv50fDbbVqS1p4rsyXdV6y4nH kd0A== X-Gm-Message-State: AOJu0YyVvITq1ZwNRGfkzoUKafFJPCzuwcBy0AugvDcBFVnnGFDKfRMV u6e+nLLbRz2mkFl3c8NGiTwAJg== X-Received: by 2002:a05:600c:154c:b0:401:b53e:6c3b with SMTP id f12-20020a05600c154c00b00401b53e6c3bmr9052886wmg.6.1700055907693; Wed, 15 Nov 2023 05:45:07 -0800 (PST) Received: from gerrit.openvpn.in (ec2-18-159-0-78.eu-central-1.compute.amazonaws.com. [18.159.0.78]) by smtp.gmail.com with ESMTPSA id m37-20020a05600c3b2500b00405959469afsm15248284wms.3.2023.11.15.05.45.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Nov 2023 05:45:07 -0800 (PST) From: "ordex (Code Review)" X-Google-Original-From: "ordex (Code Review)" X-Gerrit-PatchSet: 1 Date: Wed, 15 Nov 2023 13:45:06 +0000 To: plaisthos , flichtenheld Auto-Submitted: auto-generated X-Gerrit-MessageType: newchange X-Gerrit-Change-Id: Id2e06723003a78ee237f0542aa1ab0cb3734e37b X-Gerrit-Change-Number: 431 X-Gerrit-Project: openvpn X-Gerrit-ChangeURL: X-Gerrit-Commit: e59b8430187eb9c7fdfb4ffab1fa1e8426194eb0 References: Message-ID: MIME-Version: 1.0 User-Agent: Gerrit/3.8.2 X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "util-spamd-1.v13.lw.sourceforge.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Attention is currently required from: flichtenheld, plaisthos. Hello plaisthos, flichtenheld, I'd like you to do a code review. Please visit Content analysis details: (-0.2 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.128.43 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.128.43 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 WEIRD_PORT URI: Uses non-standard port number for HTTP 0.0 HTML_MESSAGE BODY: HTML included in message 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 T_KAM_HTML_FONT_INVALID Test for Invalidly Named or Formatted Colors in HTML -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Headers-End: 1r3GCg-0000Nd-9i Subject: [Openvpn-devel] [M] Change in openvpn[master]: pass link_socket object to i/o functions X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: a@unstable.cc, arne-openvpn@rfc2549.org, openvpn-devel@lists.sourceforge.net, frank@lichtenheld.com Cc: openvpn-devel Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1782637893617145934?= X-GMAIL-MSGID: =?utf-8?q?1782637893617145934?= X-getmail-filter-classifier: gerrit message type newchange Attention is currently required from: flichtenheld, plaisthos. Hello plaisthos, flichtenheld, I'd like you to do a code review. Please visit http://gerrit.openvpn.net/c/openvpn/+/431?usp=email to review the following change. Change subject: pass link_socket object to i/o functions ...................................................................... pass link_socket object to i/o functions In order to prepare the code to work with distinct sockets, it is essential that i/o functions do not operate on any hard-coded socket object (i.e. c->c2.link_socket). This patch changes all the low-level i/o functionis to work with a socket specified as argument rather than a fixed one. Change-Id: Id2e06723003a78ee237f0542aa1ab0cb3734e37b Signed-off-by: Antonio Quartulli --- M src/openvpn/event.h M src/openvpn/forward.c M src/openvpn/forward.h M src/openvpn/mtcp.c M src/openvpn/mudp.c M src/openvpn/multi.h M src/openvpn/openvpn.c M src/openvpn/socket.c 8 files changed, 44 insertions(+), 36 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/31/431/1 diff --git a/src/openvpn/event.h b/src/openvpn/event.h index 23a6799..0b1f63d 100644 --- a/src/openvpn/event.h +++ b/src/openvpn/event.h @@ -137,6 +137,7 @@ event_arg_t type; union { struct multi_instance *mi; /* if type = EVENT_ARG_MULTI_INSTANCE */ + struct link_socket *ls; /* if type = EVENT_ARG_LINK_SOCKET */ } u; }; diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c index 0443ca0..88d3fea 100644 --- a/src/openvpn/forward.c +++ b/src/openvpn/forward.c @@ -868,9 +868,9 @@ */ static inline void -socks_postprocess_incoming_link(struct context *c) +socks_postprocess_incoming_link(struct context *c, struct link_socket *ls) { - if (c->c2.link_socket->socks_proxy && c->c2.link_socket->info.proto == PROTO_UDP) + if (ls->socks_proxy && ls->info.proto == PROTO_UDP) { socks_process_incoming_udp(&c->c2.buf, &c->c2.from); } @@ -878,13 +878,14 @@ static inline void socks_preprocess_outgoing_link(struct context *c, + struct link_socket *ls, struct link_socket_actual **to_addr, int *size_delta) { - if (c->c2.link_socket->socks_proxy && c->c2.link_socket->info.proto == PROTO_UDP) + if (ls->socks_proxy && ls->info.proto == PROTO_UDP) { *size_delta += socks_process_outgoing_udp(&c->c2.to_link, c->c2.to_link_addr); - *to_addr = &c->c2.link_socket->socks_relay; + *to_addr = &ls->socks_relay; } } @@ -909,7 +910,7 @@ */ void -read_incoming_link(struct context *c) +read_incoming_link(struct context *c, struct link_socket *ls) { /* * Set up for recvfrom call to read datagram @@ -924,17 +925,17 @@ c->c2.buf = c->c2.buffers->read_link_buf; ASSERT(buf_init(&c->c2.buf, c->c2.frame.buf.headroom)); - status = link_socket_read(c->c2.link_socket, + status = link_socket_read(ls, &c->c2.buf, &c->c2.from); - if (socket_connection_reset(c->c2.link_socket, status)) + if (socket_connection_reset(ls, status)) { #if PORT_SHARE - if (port_share && socket_foreign_protocol_detected(c->c2.link_socket)) + if (port_share && socket_foreign_protocol_detected(ls)) { - const struct buffer *fbuf = socket_foreign_protocol_head(c->c2.link_socket); - const int sd = socket_foreign_protocol_sd(c->c2.link_socket); + const struct buffer *fbuf = socket_foreign_protocol_head(ls); + const int sd = socket_foreign_protocol_sd(ls); port_share_redirect(port_share, fbuf, sd); register_signal(c->sig, SIGTERM, "port-share-redirect"); } @@ -961,7 +962,7 @@ bool dco_win_timeout = tuntap_is_dco_win_timeout(c->c1.tuntap, status); /* check recvfrom status */ - check_status(status, "read", c->c2.link_socket, NULL); + check_status(status, "read", ls, NULL); if (dco_win_timeout) { @@ -969,7 +970,7 @@ } /* Remove socks header if applicable */ - socks_postprocess_incoming_link(c); + socks_postprocess_incoming_link(c, ls); perf_pop(); } @@ -1206,11 +1207,11 @@ } static void -process_incoming_link(struct context *c) +process_incoming_link(struct context *c, struct link_socket *ls) { perf_push(PERF_PROC_IN_LINK); - struct link_socket_info *lsi = get_link_socket_info(c); + struct link_socket_info *lsi = &ls->info; const uint8_t *orig_buf = c->c2.buf.data; process_incoming_link_part1(c, lsi, false); @@ -1720,7 +1721,7 @@ */ void -process_outgoing_link(struct context *c) +process_outgoing_link(struct context *c, struct link_socket *ls) { struct gc_arena gc = gc_new(); int error_code = 0; @@ -1763,7 +1764,7 @@ #if PASSTOS_CAPABILITY /* Set TOS */ - link_socket_set_tos(c->c2.link_socket); + link_socket_set_tos(ls); #endif /* Log packet send */ @@ -1774,7 +1775,7 @@ } #endif msg(D_LINK_RW, "%s WRITE [%d] to %s: %s", - proto2ascii(c->c2.link_socket->info.proto, c->c2.link_socket->info.af, true), + proto2ascii(ls->info.proto, ls->info.af, true), BLEN(&c->c2.to_link), print_link_socket_actual(c->c2.to_link_addr, &gc), PROTO_DUMP(&c->c2.to_link, &gc)); @@ -1785,10 +1786,12 @@ int size_delta = 0; /* If Socks5 over UDP, prepend header */ - socks_preprocess_outgoing_link(c, &to_addr, &size_delta); + socks_preprocess_outgoing_link(c, ls, &to_addr, &size_delta); /* Send packet */ - size = link_socket_write(c->c2.link_socket, &c->c2.to_link, to_addr); + size = link_socket_write(ls, + &c->c2.to_link, + to_addr); /* Undo effect of prepend */ link_socket_write_post_size_adjust(&size, size_delta, &c->c2.to_link); @@ -1817,7 +1820,7 @@ /* Check return status */ error_code = openvpn_errno(); - check_status(size, "write", c->c2.link_socket, NULL); + check_status(size, "write", ls, NULL); if (size > 0) { @@ -2253,7 +2256,7 @@ } void -process_io(struct context *c) +process_io(struct context *c, struct link_socket *ls) { const unsigned int status = c->c2.event_set_status; @@ -2268,7 +2271,7 @@ /* TCP/UDP port ready to accept write */ if (status & SOCKET_WRITE) { - process_outgoing_link(c); + process_outgoing_link(c, ls); } /* TUN device ready to accept write */ else if (status & TUN_WRITE) @@ -2278,10 +2281,10 @@ /* Incoming data on TCP/UDP port */ else if (status & SOCKET_READ) { - read_incoming_link(c); + read_incoming_link(c, ls); if (!IS_SIG(c)) { - process_incoming_link(c); + process_incoming_link(c, ls); } } /* Incoming data on TUN device */ diff --git a/src/openvpn/forward.h b/src/openvpn/forward.h index e19115e..fdc9f0e 100644 --- a/src/openvpn/forward.h +++ b/src/openvpn/forward.h @@ -72,7 +72,8 @@ void pre_select(struct context *c); -void process_io(struct context *c); +void process_io(struct context *ci, struct link_socket *ls); + /**********************************************************************/ /** @@ -128,10 +129,11 @@ * context associated with the appropriate VPN tunnel for which data is * available to be read. * - * @param c - The context structure which contains the external - * network socket from which to read incoming packets. + * @param c The context structure which contains the external + * network socket from which to read incoming packets. + * @param ls The socket where the packet can be read from. */ -void read_incoming_link(struct context *c); +void read_incoming_link(struct context *c, struct link_socket *ls); /** * Starts processing a packet read from the external network interface. @@ -197,10 +199,11 @@ * * If an error occurs, it is logged and the packet is dropped. * - * @param c - The context structure of the VPN tunnel associated with the - * packet. + * @param c The context structure of the VPN tunnel associated with the + * packet. + * @param ls The socket to be used to send the packet. */ -void process_outgoing_link(struct context *c); +void process_outgoing_link(struct context *c, struct link_socket *ls); /**************************************************************************/ diff --git a/src/openvpn/mtcp.c b/src/openvpn/mtcp.c index 9d383af..b83bdca 100644 --- a/src/openvpn/mtcp.c +++ b/src/openvpn/mtcp.c @@ -485,7 +485,7 @@ ASSERT(mi); ASSERT(mi->context.c2.link_socket); set_prefix(mi); - read_incoming_link(&mi->context); + read_incoming_link(&mi->context, mi->context.c2.link_socket); clear_prefix(); if (!IS_SIG(&mi->context)) { diff --git a/src/openvpn/mudp.c b/src/openvpn/mudp.c index 81625ea..5bd7354 100644 --- a/src/openvpn/mudp.c +++ b/src/openvpn/mudp.c @@ -317,7 +317,7 @@ msg_set_prefix("Connection Attempt"); m->top.c2.to_link = m->hmac_reply; m->top.c2.to_link_addr = m->hmac_reply_dest; - process_outgoing_link(&m->top); + process_outgoing_link(&m->top, &m->top.c2.link_socket[0]); m->hmac_reply_dest = NULL; } } @@ -380,7 +380,7 @@ /* Incoming data on UDP port */ else if (status & SOCKET_READ) { - read_incoming_link(&m->top); + read_incoming_link(&m->top, m->top.c2.link_socket); if (!IS_SIG(&m->top)) { multi_process_incoming_link(m, NULL, mpp_flags); diff --git a/src/openvpn/multi.h b/src/openvpn/multi.h index 7656bac..a736809 100644 --- a/src/openvpn/multi.h +++ b/src/openvpn/multi.h @@ -678,7 +678,7 @@ { bool ret = true; set_prefix(mi); - process_outgoing_link(&mi->context); + process_outgoing_link(&mi->context, mi->context.c2.link_socket); ret = multi_process_post(m, mi, mpp_flags); clear_prefix(); return ret; diff --git a/src/openvpn/openvpn.c b/src/openvpn/openvpn.c index 874facf..060f192 100644 --- a/src/openvpn/openvpn.c +++ b/src/openvpn/openvpn.c @@ -89,7 +89,7 @@ } /* process the I/O which triggered select */ - process_io(c); + process_io(c, c->c2.link_socket); P2P_CHECK_SIG(); perf_pop(); diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c index 8ee14df..0ccddbe 100644 --- a/src/openvpn/socket.c +++ b/src/openvpn/socket.c @@ -1828,6 +1828,7 @@ sock->sd = SOCKET_UNDEFINED; sock->ctrl_sd = SOCKET_UNDEFINED; sock->ev_arg.type = EVENT_ARG_LINK_SOCKET; + sock->ev_arg.u.ls = sock; return sock; }