net.server: Fix multiple return values

return foo and foo() crops multiple return values to a single one, so
any second return values etc were last, mostly error details.

Introduced in 7e9ebdc75ce4
This commit is contained in:
Kim Alvefur 2022-06-03 17:51:42 +02:00
parent 2048a7a762
commit 88a2c1ffe0
3 changed files with 26 additions and 11 deletions

View file

@ -627,22 +627,26 @@ end
function interface:ssl_info()
local sock = self.conn;
return sock.info and sock:info();
if not sock.info then return nil, "not-implemented"; end
return sock:info();
end
function interface:ssl_peercertificate()
local sock = self.conn;
return sock.getpeercertificate and sock:getpeercertificate();
if not sock.getpeercertificate then return nil, "not-implemented"; end
return sock:getpeercertificate();
end
function interface:ssl_peerverification()
local sock = self.conn;
return sock.getpeerverification and sock:getpeerverification();
if not sock.getpeerverification then return nil, { { "Chain verification not supported" } }; end
return sock:getpeerverification();
end
function interface:ssl_peerfinished()
local sock = self.conn;
return sock.getpeerfinished and sock:getpeerfinished();
if not sock.getpeerfinished then return nil, "not-implemented"; end
return sock:getpeerfinished();
end
function interface:starttls(tls_ctx)

View file

@ -281,19 +281,27 @@ function interface_mt:sslctx()
end
function interface_mt:ssl_info()
return self.conn.info and self.conn:info()
local sock = self.conn;
if not sock.info then return nil, "not-implemented"; end
return sock:info();
end
function interface_mt:ssl_peercertificate()
return self.conn.getpeercertificate and self.conn:getpeercertificate()
local sock = self.conn;
if not sock.getpeercertificate then return nil, "not-implemented"; end
return sock:getpeercertificate();
end
function interface_mt:ssl_peerverification()
return self.conn.getpeerverification and self.conn:getpeerverification()
local sock = self.conn;
if not sock.getpeerverification then return nil, { { "Chain verification not supported" } }; end
return sock:getpeerverification();
end
function interface_mt:ssl_peerfinished()
return self.conn.getpeerfinished and self.conn:getpeerfinished()
local sock = self.conn;
if not sock.getpeerfinished then return nil, "not-implemented"; end
return sock:getpeerfinished();
end
function interface_mt:resume()

View file

@ -363,13 +363,16 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
return socket.info and socket:info()
end
handler.ssl_peercertificate = function( )
return socket.getpeercertificate and socket:getpeercertificate()
if not socket.getpeercertificate then return nil, "not-implemented"; end
return socket:getpeercertificate()
end
handler.ssl_peerverification = function( )
return socket.getpeerverification and socket:getpeerverification()
if not socket.getpeerverification then return nil, { { "Chain verification not supported" } }; end
return socket:getpeerverification();
end
handler.ssl_peerfinished = function( )
return socket.getpeerfinished and socket:getpeerfinished()
if not socket.getpeerfinished then return nil, "not-implemented"; end
return socket:getpeerfinished();
end
handler.send = function( _, data, i, j )
return send( socket, data, i, j )