diff --git a/lib/middleware.js b/lib/middleware.js index f996012..0fe6724 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -194,8 +194,8 @@ module.exports = (srf, logger, opts) => { logger.info(`received outbound INVITE to ${req.uri} from server at ${req.server.hostport}`); const uri = parseUri(req.uri); const desiredRouting = req.get('X-Jambonz-Routing'); - - if (!uri || !uri.user || !uri.host) { + const validUri = uri && uri.user && uri.host; + if (['user', 'sip'].includes(desiredRouting) && !validUri) { logger.info({uri: req.uri}, 'invalid request-uri on outbound call, rejecting'); res.send(400, { headers: { diff --git a/test/scenarios/uac-pcap-carrier-success-k8s.xml b/test/scenarios/uac-pcap-carrier-success-k8s.xml new file mode 100644 index 0000000..ec25b61 --- /dev/null +++ b/test/scenarios/uac-pcap-carrier-success-k8s.xml @@ -0,0 +1,91 @@ + + + + + + + ;tag=[pid]SIPpTag09[call_number] + To: + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + X-Account-Sid: ed649e33-e771-403a-8c99-1780eabbc803 + X-Call-Sid: fff49e33-e771-403a-8c99-1780eabbc803 + X-Jambonz-Routing: phone + Subject: uac-pcap-carrier-success + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[local_ip_type] [local_ip] + t=0 0 + m=audio [auto_media_port] RTP/AVP 8 101 + a=rtpmap:8 PCMA/8000 + a=rtpmap:101 telephone-event/8000 + a=fmtp:101 0-11,16 + + ]]> + + + + + + + + + + + + + ;tag=[pid]SIPpTag09[call_number] + To: [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Subject: uac-pcap-carrier-success + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag09[call_number] + To: [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Max-Forwards: 70 + Subject: uac-pcap-carrier-success + Content-Length: 0 + + ]]> + + + + + + diff --git a/test/sip-tests.js b/test/sip-tests.js index c9160c8..3efe967 100644 --- a/test/sip-tests.js +++ b/test/sip-tests.js @@ -42,7 +42,11 @@ test('sbc-outbound tests', async(t) => { /* call to PSTN with no lcr configured */ await sippUac('uac-pcap-carrier-success.xml'); - t.pass('successfully completed outbound call to configured sip trunk'); + t.pass('successfully completed outbound call to sip trunk'); + + /* call to PSTN with request uri se see in kubernetes */ + await sippUac('uac-pcap-carrier-success-k8s.xml'); + t.pass('successfully completed outbound call to sip trunk (k8S req uri'); // re-rack test data execSync(`mysql -h 127.0.0.1 -u root --protocol=tcp -D jambones_test < ${__dirname}/db/jambones-sql.sql`);