diff options
| -rw-r--r-- | client.js | 9 | ||||
| -rw-r--r-- | server.js | 4 |
2 files changed, 11 insertions, 2 deletions
@@ -16,10 +16,17 @@ const HOUR = 60 * 60 * 1000 const _request = (pathOrUrl, opt, cb) => { debug('_request', pathOrUrl, opt) + const { + verifyAlpnId, + } = { + verifyAlpnId: alpnId => alpnId === ALPN_ID, + ...opt, + } + connect(opt, (err, socket) => { if (err) return cb(err) - if (socket.alpnProtocol !== ALPN_ID) { + if (verifyAlpnId(socket.alpnProtocol) !== true) { socket.destroy() return cb(new Error('invalid or missing ALPN protocol')) } @@ -17,15 +17,17 @@ const createGeminiServer = (opt = {}, onRequest) => { const { cert, key, passphrase, tlsOpt, + verifyAlpnId, } = { cert: null, key: null, passphrase: null, tlsOpt: {}, + verifyAlpnId: alpnId => alpnId === ALPN_ID, ...opt, } const onConnection = (socket) => { // todo: clarify if this is desired behavior - if (socket.alpnProtocol !== ALPN_ID) { + if (verifyAlpnId(socket.alpnProtocol) !== true) { socket.destroy() return; } |
