THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
A user has added themself to the list of users assigned to this task.
FS#192 - a74f12d6 (3.2) registrar breaks save(..., 0x4) functionality
User who did this - Walter Doekes (wdoekes)
http://sip-router.org/tracker/index.php?do=details&task_id=192
You are receiving this message because you have requested it from the Flyspray bugtracking system. If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.
Hello,
I've just recognized, that the mediaproxy module does not adjust the SDP
connection info of dialog-confirming ACKs (kamailio 3.2.1).
mediaproxy.c registers for the following dialog req callbacks:
mediaproxy.c:1955 if (dlg_api.register_dlgcb(dlg, DLGCB_REQ_WITHIN,
__dialog_requests, (void*)ice_data, __free_dialog_data) != 0)
But in dlg_handlers.c
1194 if (old_state==DLG_STATE_CONFIRMED_NA) {
1195 LM_DBG("confirming ACK successfully processed\n");
1196
1197 /* confirming ACK request */
1198 run_dlg_callbacks( DLGCB_CONFIRMED, dlg, req, NULL, dir, 0);
1199 } else {
1200 LM_DBG("sequential request successfully processed\n");
1201
1202 /* within dialog request */
1203 run_dlg_callbacks( DLGCB_REQ_WITHIN, dlg, req, NULL, dir, 0);
So DLGCB_REQ_WITHIN does not seem to be called for the dialog-confirming
ACK (because it's no request WITHIN the dlg).
If UA sends such an ACK request with SDP, mediaproxy does not correct
the connection info.
I suggest to change mediaproxy.c:1955 to:
if (dlg_api.register_dlgcb(dlg, DLGCB_REQ_WITHIN | DLGCB_CONFIRMED,
__dialog_requests, (void*)ice_data, __free_dialog_data) != 0)
Regards
Jasmin
Module: sip-router
Branch: master
Commit: 27ab10b4c61593ae544b7c24633840d0deafff92
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=27ab10b…
Author: pd <peter.dunkley(a)crocodile-rcs.com>
Committer: pd <peter.dunkley(a)crocodile-rcs.com>
Date: Sun Dec 18 21:08:45 2011 +0000
modules_k/presence: Added additional return value to pres_auth_status() for polite-block
- pres_auth_status() currently returns just the status of presence relationship.
- However, polite-block consists of a combination of status and reason,
a polite-blocked watcher has ACTIVE status but a reason of polite-block.
This means that even though blocked, when just checking based on status,
polite-blocked watchers appear to be authorised.
- After this change pres_auth_status() returns a magic value of 5 when
a watcher is polite-blocked.
- Feature added by Hugh Waite @ Crocodile RCS.
---
modules_k/presence/presence.c | 2 ++
modules_k/presence/subscribe.h | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/modules_k/presence/presence.c b/modules_k/presence/presence.c
index d573fb6..65b7a75 100644
--- a/modules_k/presence/presence.c
+++ b/modules_k/presence/presence.c
@@ -1465,6 +1465,8 @@ int pres_auth_status(struct sip_msg* msg, str watcher_uri, str presentity_uri)
subs.status);
pkg_free(rules_doc->s);
pkg_free(rules_doc);
+ if ((subs.reason.len == 12) && (strncmp(subs.reason.s, "polite-block", 12) == 0))
+ return POLITE_BLOCK_STATUS;
return subs.status;
err:
diff --git a/modules_k/presence/subscribe.h b/modules_k/presence/subscribe.h
index b216fff..97e5309 100644
--- a/modules_k/presence/subscribe.h
+++ b/modules_k/presence/subscribe.h
@@ -46,6 +46,9 @@ struct pres_ev;
#define PENDING_STATUS 2
#define TERMINATED_STATUS 3
#define WAITING_STATUS 4
+/* Additional value returned from pres_auth_status when the status is ACTIVE
+ and reason is polite-block */
+#define POLITE_BLOCK_STATUS 5
#define INTERNAL_UPDATE_FALSE 0
#define INTERNAL_UPDATE_TRUE 1
How are you? Let us get down to business.
http://www.leonardobieber.it/image/bdfedx.php?xukoprofID=49
Sat, 17 Dec 2011 12:37:35
__________________
"First, she would lay down the cover and put upon it a piece of tin, made to fill papers with, to keep it down smooth." (c) Millandra vollblutpferd