aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authormnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-06 17:04:04 +0000
committermnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-06 17:04:04 +0000
commit37c7dfa43b903c8c721f1edbc556ec0b16d9020c (patch)
tree38965037d24e96e92fba28de033eaaf1b13576bc /channels
parent164ae3bc40005e6322de586bcf030b6a1d780da7 (diff)
revert revision 173964
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@173965 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c63
1 files changed, 1 insertions, 62 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e0047e70f..38fd597d5 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2170,7 +2170,6 @@ static int init_req(struct sip_request *req, int sipmethod, const char *recip);
static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, int seqno, int newbranch);
static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod);
static int init_resp(struct sip_request *resp, const char *msg);
-static inline int resp_needs_contact(const char *msg, enum sipmethod method);
static int respprep(struct sip_request *resp, struct sip_pvt *p, const char *msg, const struct sip_request *req);
static const struct sockaddr_in *sip_real_dst(const struct sip_pvt *p);
static void build_via(struct sip_pvt *p);
@@ -7845,66 +7844,6 @@ static int init_req(struct sip_request *req, int sipmethod, const char *recip)
return 0;
}
-/*! \brief Test if this response needs a contact header */
-static inline int resp_needs_contact(const char *msg, enum sipmethod method) {
- /* Requirements for Contact header inclusion in responses generated
- * from the header tables found in the following RFCs. Where the
- * Contact header was marked mandatory (m) or optional (o) this
- * function returns 1.
- *
- * - RFC 3261 (ACK, BYE, CANCEL, INVITE, OPTIONS, REGISTER)
- * - RFC 2976 (INFO)
- * - RFC 3262 (PRACK)
- * - RFC 3265 (SUBSCRIBE, NOTIFY)
- * - RFC 3311 (UPDATE)
- * - RFC 3428 (MESSAGE)
- * - RFC 3515 (REFER)
- * - RFC 3903 (PUBLISH)
- */
-
- switch (method) {
- /* 1xx, 2xx, 3xx, 485 */
- case SIP_INVITE:
- case SIP_UPDATE:
- case SIP_SUBSCRIBE:
- case SIP_NOTIFY:
- if ((msg[0] >= '1' && msg[0] <= '3') || !strncmp(msg, "485", 3))
- return 1;
- break;
-
- /* 2xx, 3xx, 485 */
- case SIP_REGISTER:
- case SIP_OPTIONS:
- if (msg[0] == '2' || msg[0] == '3' || !strncmp(msg, "485", 3))
- return 1;
- break;
-
- /* 3xx, 485 */
- case SIP_BYE:
- case SIP_PRACK:
- case SIP_MESSAGE:
- case SIP_PUBLISH:
- if (msg[0] == '3' || !strncmp(msg, "485", 3))
- return 1;
- break;
-
- /* 2xx, 3xx, 4xx, 5xx, 6xx */
- case SIP_REFER:
- if (msg[0] >= '2' && msg[0] <= '6')
- return 1;
- break;
-
- /* contact will not be included for everything else */
- case SIP_ACK:
- case SIP_CANCEL:
- case SIP_INFO:
- case SIP_PING:
- default:
- return 0;
- }
- return 0;
-}
-
/*! \brief Prepare SIP response packet */
static int respprep(struct sip_request *resp, struct sip_pvt *p, const char *msg, const struct sip_request *req)
@@ -7958,7 +7897,7 @@ static int respprep(struct sip_request *resp, struct sip_pvt *p, const char *msg
snprintf(contact, sizeof(contact), "%s;expires=%d", p->our_contact, p->expiry);
add_header(resp, "Contact", contact); /* Not when we unregister */
}
- } else if (!ast_strlen_zero(p->our_contact) && resp_needs_contact(msg, p->method)) {
+ } else if (msg[0] != '4' && !ast_strlen_zero(p->our_contact)) {
add_header(resp, "Contact", p->our_contact);
}