Mercurial > prosody-hg
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 |
| parents | b7f07585ec4c |
| children | 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 |
