[svn-commits] mmichelson: branch group/CCSS r231056 - /team/group/CCSS/channels/chan_sip.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Nov 24 10:53:23 CST 2009


Author: mmichelson
Date: Tue Nov 24 10:53:21 2009
New Revision: 231056

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=231056
Log:
* Mark a couple of unused functions with __attribute__((unused)) so the compiler
  will shut up already! GOSH!
* Mark the SIP_PUBLISH method as unallowed in handle_response_publish if we get a 405 or 501
* Call handle_response_publish for all replies to PUBLISH instead of adding fifty million
  invocations for each specific response code.
* I ate some pretzels while coding this, but I don't think I'll mention it in the commit message.


Modified:
    team/group/CCSS/channels/chan_sip.c

Modified: team/group/CCSS/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS/channels/chan_sip.c?view=diff&rev=231056&r1=231055&r2=231056
==============================================================================
--- team/group/CCSS/channels/chan_sip.c (original)
+++ team/group/CCSS/channels/chan_sip.c Tue Nov 24 10:53:21 2009
@@ -1759,7 +1759,7 @@
 	return backend ? backend->static_data : NULL;
 }
 
-static struct sip_epa_entry *create_epa_entry(const char * const event_package, const char * const destination)
+static __attribute__((unused)) struct sip_epa_entry *create_epa_entry (const char * const event_package, const char * const destination)
 {
 	struct sip_epa_entry *epa_entry;
 	const struct epa_static_data *static_data;
@@ -2879,7 +2879,7 @@
 static void transmit_fake_auth_response(struct sip_pvt *p, int sipmethod, struct sip_request *req, enum xmittype reliable);
 static int transmit_request(struct sip_pvt *p, int sipmethod, int inc, enum xmittype reliable, int newbranch);
 static int transmit_request_with_auth(struct sip_pvt *p, int sipmethod, int seqno, enum xmittype reliable, int newbranch);
-static int transmit_publish(struct sip_epa_entry *epa_entry, enum sip_publish_type publish_type, const char * body);
+static __attribute__((unused)) int transmit_publish(struct sip_epa_entry *epa_entry, enum sip_publish_type publish_type, const char * body);
 static int transmit_invite(struct sip_pvt *p, int sipmethod, int sdp, int init);
 static int transmit_reinvite_with_sdp(struct sip_pvt *p, int t38version, int oldsdp);
 static int transmit_info_with_digit(struct sip_pvt *p, const char digit, unsigned int duration);
@@ -11744,6 +11744,8 @@
 
 	initreqprep(&req, pvt, SIP_PUBLISH);
 
+	ast_set_flag(&pvt->flags[0], SIP_OUTGOING);
+
 	if (pvt->options && pvt->options->auth) {
 		add_header(&req, pvt->options->authheader, pvt->options->auth);
 	}
@@ -18883,7 +18885,12 @@
 		}
 	}
 
+	if (resp == 501 || resp == 405) {
+		mark_method_unallowed(&p->allowed_methods, SIP_PUBLISH);
+	}
+
 	if (resp == 200) {
+		p->authtries = 0;
 		/* If I've read section 6, item 6 of RFC 3903 correctly,
 		 * an ESC will only generate a new etag when it sends a 200 OK
 		 */
@@ -19784,6 +19791,11 @@
 		   need to hang around for something more "definitive" */
 		if (resp != 100)
 			handle_response_peerpoke(p, resp, req);
+	} else if (sipmethod == SIP_PUBLISH) {
+		/* SIP PUBLISH transcends this morass of doodoo and instead
+		 * we just always call the response handler. Good gravy!
+		 */
+		handle_response_publish(p, resp, rest, req, seqno);
 	} else if (ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
 		switch(resp) {
 		case 100:	/* 100 Trying */




More information about the svn-commits mailing list