Software /
code /
prosody
Changeset
10699:fd77b6cec38d 0.11
mod_admin_telnet: Handle unavailable cipher info (fixes #1510)
The LuaSec :info() method gathers info using the OpenSSL function
SSL_get_current_cipher(). Documentation for this function states that it
may return NULL if no session has been established (yet). If so, the
LuaSec functions wrapping this return nil, triggering a nil-indexing
error in mod_admin_telnet.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 22 Mar 2020 17:35:26 +0100 |
parents | 10690:27d15097c235 |
children | 10700:3fce670e0733 |
files | plugins/mod_admin_telnet.lua |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_admin_telnet.lua Thu Mar 12 20:32:07 2020 +0000 +++ b/plugins/mod_admin_telnet.lua Sun Mar 22 17:35:26 2020 +0100 @@ -528,11 +528,14 @@ common_info(session, line); if session.secure then local sock = session.conn and session.conn.socket and session.conn:socket(); - if sock and sock.info then - local info = sock:info(); - line[#line+1] = ("(%s with %s)"):format(info.protocol, info.cipher); - else - line[#line+1] = "(cipher info unavailable)"; + if sock then + local info = sock.info and sock:info(); + if info then + line[#line+1] = ("(%s with %s)"):format(info.protocol, info.cipher); + else + -- TLS session might not be ready yet + line[#line+1] = "(cipher info unavailable)"; + end end else line[#line+1] = "(insecure)";