[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