From 0f6efa9be2e67618f3390e5ec58705c224db7aa4 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Tue, 10 Jul 2007 08:16:12 +0000 Subject: [PATCH] handles failed sendInvite properly git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@393 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- core/AmSession.cpp | 4 ++-- core/AmSession.h | 2 +- core/AmSessionContainer.cpp | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/AmSession.cpp b/core/AmSession.cpp index b16d1dab..6938b17d 100644 --- a/core/AmSession.cpp +++ b/core/AmSession.cpp @@ -690,7 +690,7 @@ void AmSession::sendReinvite(bool updateSDP) } } -void AmSession::sendInvite() +int AmSession::sendInvite() { // set local IP first, so that IP is set when // getLocalPort/setLocalPort may bind @@ -698,7 +698,7 @@ void AmSession::sendInvite() // generate SDP string sdp_body; sdp.genRequest(AmConfig::LocalIP,rtp_str.getLocalPort(),sdp_body); - dlg.invite("", "application/sdp", sdp_body); + return dlg.invite("", "application/sdp", sdp_body); } void AmSession::setOnHold(bool hold) diff --git a/core/AmSession.h b/core/AmSession.h index 4a9236f1..6c010467 100644 --- a/core/AmSession.h +++ b/core/AmSession.h @@ -266,7 +266,7 @@ public: /** send a Re-INVITE (if connected) */ void sendReinvite(bool updateSDP = true); /** send an INVITE */ - void sendInvite(); + int sendInvite(); /** set the session on/off hold */ void setOnHold(bool hold); diff --git a/core/AmSessionContainer.cpp b/core/AmSessionContainer.cpp index 07e77993..bcc11eb1 100644 --- a/core/AmSessionContainer.cpp +++ b/core/AmSessionContainer.cpp @@ -186,7 +186,13 @@ AmSession* AmSessionContainer::startSessionUAC(AmSipRequest& req, AmArg* session session->setCallgroup(req.from_tag); session->setNegotiateOnReply(true); - session->sendInvite(); + if (int err = session->sendInvite()) { + ERROR("INVITE could not be sent: error code = %d.\n", + err); + delete session; + as_mut.unlock(); + return NULL; + } session->start(); addSession_unsafe(req.callid,req.from_tag,req.from_tag,session);