Software /
code /
prosody
Comparison
net/server_epoll.lua @ 12513:6efbcd52db21
net.server_epoll: Move call to refresh remote IP address out of wrapper
Reduces the side effects of wrapsocket()
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 16 Jul 2021 00:56:45 +0200 |
parent | 12512:b7f07585ec4c |
child | 12514:194469fb46f9 |
comparison
equal
deleted
inserted
replaced
12512:b7f07585ec4c | 12513:6efbcd52db21 |
---|---|
763 if extra.servername then | 763 if extra.servername then |
764 conn.servername = extra.servername; | 764 conn.servername = extra.servername; |
765 end | 765 end |
766 end | 766 end |
767 | 767 |
768 conn:updatenames(); | |
769 return conn; | 768 return conn; |
770 end | 769 end |
771 | 770 |
772 function interface:updatenames() | 771 function interface:updatenames() |
773 local conn = self.conn; | 772 local conn = self.conn; |
789 self:debug("Error accepting new client: %s, server will be paused for %ds", err, cfg.accept_retry_interval); | 788 self:debug("Error accepting new client: %s, server will be paused for %ds", err, cfg.accept_retry_interval); |
790 self:pausefor(cfg.accept_retry_interval); | 789 self:pausefor(cfg.accept_retry_interval); |
791 return; | 790 return; |
792 end | 791 end |
793 local client = wrapsocket(conn, self, nil, self.listeners); | 792 local client = wrapsocket(conn, self, nil, self.listeners); |
793 client:updatenames(); | |
794 client:debug("New connection %s on server %s", client, self); | 794 client:debug("New connection %s on server %s", client, self); |
795 client:defaultoptions(); | 795 client:defaultoptions(); |
796 client._writable = cfg.opportunistic_writes; | 796 client._writable = cfg.opportunistic_writes; |
797 if self.tls_direct then | 797 if self.tls_direct then |
798 client:add(true, true); | 798 client:add(true, true); |
933 end | 933 end |
934 | 934 |
935 -- COMPAT | 935 -- COMPAT |
936 local function wrapclient(conn, addr, port, listeners, read_size, tls_ctx, extra) | 936 local function wrapclient(conn, addr, port, listeners, read_size, tls_ctx, extra) |
937 local client = wrapsocket(conn, nil, read_size, listeners, tls_ctx, extra); | 937 local client = wrapsocket(conn, nil, read_size, listeners, tls_ctx, extra); |
938 client:updatenames(); | |
938 if not client.peername then | 939 if not client.peername then |
939 client.peername, client.peerport = addr, port; | 940 client.peername, client.peerport = addr, port; |
940 end | 941 end |
941 local ok, err = client:init(); | 942 local ok, err = client:init(); |
942 if not ok then return ok, err; end | 943 if not ok then return ok, err; end |
972 pcall(conn.setoption, conn, "tcp-fastopen-connect", 1); | 973 pcall(conn.setoption, conn, "tcp-fastopen-connect", 1); |
973 end | 974 end |
974 local ok, err = conn:setpeername(addr, port); | 975 local ok, err = conn:setpeername(addr, port); |
975 if not ok and err ~= "timeout" then return ok, err; end | 976 if not ok and err ~= "timeout" then return ok, err; end |
976 local client = wrapsocket(conn, nil, read_size, listeners, tls_ctx, extra) | 977 local client = wrapsocket(conn, nil, read_size, listeners, tls_ctx, extra) |
978 client:updatenames(); | |
977 local ok, err = client:init(); | 979 local ok, err = client:init(); |
978 if not client.peername then | 980 if not client.peername then |
979 -- otherwise not set until connected | 981 -- otherwise not set until connected |
980 client.peername, client.peerport = addr, port; | 982 client.peername, client.peerport = addr, port; |
981 end | 983 end |