From db40eba6557868498685e86216c7dd12294b3434 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 12 Sep 2021 15:47:06 +0200 Subject: net.server_epoll: Try to make port number related methods sane Previously it was unclear whether "client port" was the port that the client connected to, or from. I hereby declare that the client port is the source port and the server port is the destination port. Incoming and outgoing connections can be distinguished by looking at the_server reference, which only incoming connections have. --- net/server_epoll.lua | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'net') diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 2841278d..840e799a 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -272,20 +272,24 @@ end -- Get a port number, doesn't matter which function interface:port() - return self.sockport or self.peerport; + return self.peerport or self.sockport; end --- Get local port number +-- Client-side port (usually a random high port) function interface:clientport() - return self.sockport; + if self._server then + return self.peerport; + else + return self.sockport; + end end --- Get remote port +-- Get port on the server function interface:serverport() - if self.sockport then + if self._server then return self.sockport; - elseif self._server then - self._server:port(); + else + return self.peerport; end end -- cgit v1.2.3