From 400372666dd13986fb1708d9bee8c21c9309c7eb Mon Sep 17 00:00:00 2001
From: Michael Jerris <mike@jerris.com>
Date: Sat, 10 Feb 2007 23:16:43 +0000
Subject: [PATCH] add some better returns to invite failures.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4195 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/endpoints/mod_sofia/mod_sofia.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
index a9a31f6a98..83528e5af6 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.c
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
@@ -4215,6 +4215,7 @@ static void sip_i_invite(nua_t *nua,
 
     if (!(sip && sip->sip_contact && sip->sip_contact->m_url)) {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO CONTACT!\n");
+		nua_respond(nh, 400, "Missing Contact Header", TAG_END());
         return;
     }
 
@@ -4226,12 +4227,13 @@ static void sip_i_invite(nua_t *nua,
 
     if (!(session = switch_core_session_request(&sofia_endpoint_interface, NULL))) {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Session Alloc Failed!\n");
-        return;
+		nua_respond(nh, SIP_503_SERVICE_UNAVAILABLE, TAG_END());
+		return;
     }
 
     if (!(tech_pvt = (private_object_t *) switch_core_session_alloc(session, sizeof(private_object_t)))) {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Hey where is my memory pool?\n");
-        terminate_session(&session, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER, __LINE__);
+        terminate_session(&session, SWITCH_CAUSE_SWITCH_CONGESTION, __LINE__);
         return;
     }