PJSIP outbound calls disconnect after 15 minutes

The 15 min failure is one of those numbers that jump out when debugging SIP. When an INVITE is sent from the PBX to a registered endpoint, it will carry a Session-Expires header of 1800 (by default). (An INVITE sent from the client may have a different expiry, or none at all - fire up sngrep if you want to see for yourself). So the session will last a maximum of 1800 seconds or 30 min. At the half way mark, a reINVITE is sent to update the expiry time, which requires a 200 OK and an ACK. If the reinvite signaling fails, depending on the nature of the failure, the call can end immediately at the 15 minute mark, or continue the full 1800 seconds until the expiry is reached and fail then.