[asterisk-commits] irroot: branch irroot/distrotech-customers-1.8 r322169 - /team/irroot/distrot...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jun 6 22:51:33 CDT 2011


Author: irroot
Date: Mon Jun  6 22:51:27 2011
New Revision: 322169

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=322169
Log:
Add RB:1253 Make handle_request_publish do dialog expiration and destruction.

Modified:
    team/irroot/distrotech-customers-1.8/channels/chan_sip.c

Modified: team/irroot/distrotech-customers-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/distrotech-customers-1.8/channels/chan_sip.c?view=diff&rev=322169&r1=322168&r2=322169
==============================================================================
--- team/irroot/distrotech-customers-1.8/channels/chan_sip.c (original)
+++ team/irroot/distrotech-customers-1.8/channels/chan_sip.c Mon Jun  6 22:51:27 2011
@@ -23553,11 +23553,13 @@
 
 	if (ast_strlen_zero(event)) {
 		transmit_response(p, "489 Bad Event", req);
+		pvt_set_needdestroy(p, "missing Event: header");
 		return -1;
 	}
 
 	if (!(esc = get_esc(event))) {
 		transmit_response(p, "489 Bad Event", req);
+		pvt_set_needdestroy(p, "unknown event package in publish");
 		return -1;
 	}
 
@@ -23582,6 +23584,15 @@
 	}
 
 	publish_type = determine_sip_publish_type(req, event, etag, expires_str, &expires_int);
+
+	if (expires_int > max_expiry) {
+		expires_int = max_expiry;
+	} else if (expires_int < min_expiry && expires_int > 0) {
+		transmit_response_with_minexpires(p, "423 Interval too small", req);
+		pvt_set_needdestroy(p, "Expires is less that the min expires allowed.");
+		return 0;
+	}
+	p->expiry = expires_int;
 
 	/* It is the responsibility of these handlers to formulate any response
 	 * sent for a PUBLISH
@@ -23606,6 +23617,11 @@
 		transmit_response(p, "400 Impossible Condition", req);
 		break;
 	}
+	if (!handler_result && p->expiry > 0) {
+		sip_scheddestroy(p, (p->expiry + 10) * 1000);
+	} else {
+		pvt_set_needdestroy(p, "forcing expiration");
+	}
 
 	return handler_result;
 }
@@ -23988,8 +24004,7 @@
 			ast_log(LOG_WARNING, "Received subscription for extension \"%s\" context \"%s\" "
 				"with Expire header less that 'minexpire' limit. Received \"Expire: %d\" min is %d\n",
 				p->exten, p->context, p->expiry, min_expiry);
-			p->expiry = min_expiry;
-			pvt_set_needdestroy(p, "Expires is less that the min expires allowed. ");
+			pvt_set_needdestroy(p, "Expires is less that the min expires allowed.");
 			return 0;
 		}
 




More information about the asterisk-commits mailing list