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