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
--- a/net/server_epoll.lua Sun Dec 06 22:04:43 2020 +0100
+++ b/net/server_epoll.lua Fri Jun 03 17:51:42 2022 +0200
@@ -627,22 +627,26 @@
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)
--- a/net/server_event.lua Sun Dec 06 22:04:43 2020 +0100
+++ b/net/server_event.lua Fri Jun 03 17:51:42 2022 +0200
@@ -281,19 +281,27 @@
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()
--- a/net/server_select.lua Sun Dec 06 22:04:43 2020 +0100
+++ b/net/server_select.lua Fri Jun 03 17:51:42 2022 +0200
@@ -363,13 +363,16 @@
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 )