diff options
author | mnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-02-06 17:04:04 +0000 |
---|---|---|
committer | mnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-02-06 17:04:04 +0000 |
commit | 37c7dfa43b903c8c721f1edbc556ec0b16d9020c (patch) | |
tree | 38965037d24e96e92fba28de033eaaf1b13576bc /channels | |
parent | 164ae3bc40005e6322de586bcf030b6a1d780da7 (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.c | 63 |
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); } |