Hello,
I have had mixed success with Groundwire PUSH proxy with PJSIP. Sometimes, i get no audio on both sides, while at other occasions calls work fine. For the latter case, i have noticed that the PUSH server takes itself out of the signalling path,
-- PJSIP/202-0000006a is ringing
-- Added contact 'sips:[email protected]:57018;transport=TLS;rinstance=7E640171' to AOR '202' with expiration of 600 seconds
-- Removed contact 'sips:[email protected]:59030;transport=TLS;rinstance=3256F4C9;x-ast-orig-host=10.65.11.4:59030' from AOR '202' due to remove existing
== Contact 202/sips:[email protected]:59030;transport=TLS;rinstance=3256F4C9;x-ast-orig-host=10.65.11.4:59030 has been deleted
== Endpoint 202 is now Unreachable
== Endpoint 202 is now Reachable
-- Contact 202/sips:[email protected]:57018;transport=TLS;rinstance=7E640171 is now Reachable. RTT: 152.468 msec
Once you accept the Push Notification, Acrobits Softphone or Groundwire will open and SIPIS will connect the call to your device. At this point SIP Traffic will continue to be routed through SIPIS, while audio will go directly to the device.
Anybody using Groundwire wants to weigh in what is the expected behavior?
When Groundwire is pushed (or manually opened) to the foreground, the app registers and the push server unregisters. However, the SIP dialog with the push server for the incoming call has already opened at that point, so it can (and does) continue even though the registration is gone. You should be able to confirm that with pjsip logger.
However, to get Groundwire to be really reliable, I had to set Max Contacts for the extension to 4 (there were occasionally ghost registrations from another push server) and also had to whitelist all the push server addresses in FreePBX Firewall (requests would occasionally fail to meet the Responsive Firewall criteria and get blocked).
I see problem when both sender (fixed Yealink deskphone) and receiver (Groundwire) are on the LAN.
When I make a call from Yealink to Groundwire, pickup Groundwire and then hang up, i dont see an instant BYE from Groundwire to my PBX. The call continues to linger and eventually drops with Reason: Q.850;cause=44.
Yes, at least part of the problem. Line 347 is apparently not causing trouble (RTP managed to work correctly), but line 331 (Contact header) is also a private address and that’s where the BYE would be sent. However, even that wouldn’t be a problem because BYE would normally be sent over the same TLS connection, but the NOTIFY starting on line 1142 (which looks like a perfectly good voicemail update to me) got rejected starting on line 1161 (I don’t understand why), which resulted in the TLS connection being closed.
I think it was my firewall which was coming in the way of RTP. My asterisk PBX and the Groundwire client are on different VLANS (PBX on VOIP and Groundwire on LAN vlan). Previously, i had a firewall denying all traffic initiating from VOIP to LAN vlan. This was never a problem with other sip clients, as the traffic was always initiated by the LAN vlan.
However with Groundwire (PUSH) the PBX initiates connection when the PUSH server is taken out of signalling. So, i had to open the firewall from VOIP to the Groundwire client.
Here is what my pfsense router rule looks like now,