Software /
code /
prosody
File
util/jsonpointer.lua @ 12206:77ac0d96ac24
mod_s2s: Enable outgoing Direct TLS connections
Makes it faster by cutting out the roundtrips involved in <starttls/>,
at the cost of making an additional SRV lookup.
Since we already ignore a missing <starttls/> offer and try anyway there
is not much difference in security. The fact that XMPP is used and the
hostnames involved might still be visible until the future Encrypted
ClientHello extension allows hiding those too.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 21 Jan 2022 17:59:19 +0100 |
parent | 12131:b4c0efff8dd3 |
child | 12496:87c3d45208ef |
line wrap: on
line source
local function unescape_token(escaped_token) local unescaped = escaped_token:gsub("~1", "/"):gsub("~0", "~") return unescaped end local function resolve_json_pointer(ref, path) local ptr_len = #path + 1 for part, pos in path:gmatch("/([^/]*)()") do local token = unescape_token(part) if not (type(ref) == "table") then return nil end local idx = next(ref) local new_ref if type(idx) == "string" then new_ref = ref[token] elseif math.type(idx) == "integer" then local i = tonumber(token) if token == "-" then i = #ref + 1 end new_ref = ref[i] else return nil, "invalid-table" end if pos == ptr_len then return new_ref elseif type(new_ref) == "table" then ref = new_ref elseif not (type(ref) == "table") then return nil, "invalid-path" end end return ref end return { resolve = resolve_json_pointer }