[S] Change in openvpn[master]: Multisocket: use event engine rwflags for UDP I/O
"its_Giaan (Code Review)" <[email protected]>
| Newsgroups | gmane.network.openvpn.devel |
|---|---|
| Message-ID | <e9c9e6a29650ee65ccafcbadfe8418377a251d30-EmailReplacePatchSet-HTML@gerrit.openvpn.net> |
Attention is currently required from: its_Giaan, ordex, plaisthos.
Hello ordex, plaisthos,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/1635?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Code-Review-1 by ordex
Change subject: Multisocket: use event engine rwflags for UDP I/O
......................................................................
Multisocket: use event engine rwflags for UDP I/O
udp_flags does not guarantee correct association with the socket being
processed. Use the rwflags returned by the event engine together with the
event to ensure proper per-socket I/O handling.
Remove udp_flags entirely.
This change is based on an investigation triggered by a report from
Joshua Rogers using ZeroPath.
Change-Id: I6b303805a3688b6f6363140c76853a58badecd8f
Signed-off-by: Gianmarco De Gregori <[email protected]>
---
M src/openvpn/forward.c
M src/openvpn/mudp.c
M src/openvpn/mudp.h
M src/openvpn/multi_io.c
M src/openvpn/multi_io.h
5 files changed, 5 insertions(+), 10 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/35/1635/2
diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c
index 27cfd36..3937942 100644
--- a/src/openvpn/forward.c
+++ b/src/openvpn/forward.c
@@ -2153,7 +2153,6 @@
unsigned int out_socket;
multi_io_process_flags(c, multi_io->es, flags, &out_socket, NULL);
- multi_io->udp_flags = (out_socket << SOCKET_SHIFT);
}
/*
diff --git a/src/openvpn/mudp.c b/src/openvpn/mudp.c
index 432c79a..beec57a 100644
--- a/src/openvpn/mudp.c
+++ b/src/openvpn/mudp.c
@@ -336,18 +336,17 @@
* Process a UDP socket event.
*/
void
-multi_process_io_udp(struct multi_context *m, struct link_socket *sock)
+multi_process_io_udp(struct multi_context *m, struct link_socket *sock, unsigned int rwflags)
{
- const unsigned int status = m->multi_io->udp_flags;
const unsigned int mpp_flags = (MPP_PRE_SELECT | MPP_CLOSE_ON_SIGNAL);
/* UDP port ready to accept write */
- if (status & SOCKET_WRITE)
+ if (rwflags & SOCKET_WRITE)
{
multi_process_outgoing_link(m, mpp_flags);
}
/* Incoming data on UDP port */
- else if (status & SOCKET_READ)
+ else if (rwflags & SOCKET_READ)
{
read_incoming_link(&m->top, sock);
if (!IS_SIG(&m->top))
@@ -355,8 +354,6 @@
multi_process_incoming_link(m, NULL, mpp_flags, sock);
}
}
-
- m->multi_io->udp_flags = ES_ERROR;
}
/*
diff --git a/src/openvpn/mudp.h b/src/openvpn/mudp.h
index 005ee10..1417651 100644
--- a/src/openvpn/mudp.h
+++ b/src/openvpn/mudp.h
@@ -32,7 +32,7 @@
unsigned int p2mp_iow_flags(const struct multi_context *m);
-void multi_process_io_udp(struct multi_context *m, struct link_socket *sock);
+void multi_process_io_udp(struct multi_context *m, struct link_socket *sock, unsigned int rwflags);
/**************************************************************************/
/**
* Get, and if necessary create, the multi_instance associated with a
diff --git a/src/openvpn/multi_io.c b/src/openvpn/multi_io.c
index e6f4e9c..f9af800 100644
--- a/src/openvpn/multi_io.c
+++ b/src/openvpn/multi_io.c
@@ -457,7 +457,7 @@
}
else
{
- multi_process_io_udp(m, ev_arg->u.sock);
+ multi_process_io_udp(m, ev_arg->u.sock, e->rwflags);
mi = m->pending;
}
/* monitor and/or handle events that are
diff --git a/src/openvpn/multi_io.h b/src/openvpn/multi_io.h
index 6b2f59a..d6734bd 100644
--- a/src/openvpn/multi_io.h
+++ b/src/openvpn/multi_io.h
@@ -55,7 +55,6 @@
int n_esr;
int maxevents;
unsigned int tun_rwflags;
- unsigned int udp_flags;
#ifdef ENABLE_MANAGEMENT
unsigned int management_persist_flags;
#endif
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1635?usp=email
To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I6b303805a3688b6f6363140c76853a58badecd8f
Gerrit-Change-Number: 1635
Gerrit-PatchSet: 2
Gerrit-Owner: its_Giaan <[email protected]>
Gerrit-Reviewer: ordex <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: its_Giaan <[email protected]>
Gerrit-Attention: ordex <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel