Hi Herman,
sorry for delay - please apply the attached patch and run again the call
- send me the debug log.
Thanks and regards,
Bogdan
Herman Bastiaens wrote:
Hi Bogdan,
yes, I see these messages in the log. You can also find them in the
log I've sent you on monday (09-03). Because the DID was not present
(due to the record_route_preset bug), the matching mode falls back to
matching based on SIP elements.
Best Regards,
Herman
Bogdan-Andrei Iancu wrote:
Hi Herman,
yes, that is correct. When you use mode 2 (no did), for ACK and BYE,
do you get something like this in the logs: "no dialog callid=" ?
Regards,
Bogdan
Herman Bastiaens wrote:
Hi Bogdan,
the issue is resolved when using the DID for dialog matching, but if
I use dlg_match_mode 2, the error still occurs. Is there a problem
with the matching of messages to dialogs if there is no DID present?
Best Regards,
Herman
Bogdan-Andrei Iancu wrote:
Hi Herman,
Thanks for the files you sent me. I found out that the problem was
in record_route_preset() - the function was simply ignoring
whatever parameter you were adding from script or from other
modules. This is why the DIALOG module was not recognizing the
sequential requests.
The fix is available on 1.5 - if you could give it another try and
let me know, it will be great.
Regards,
Bogdan
Herman Bastiaens wrote:
Hi Bogdan,
xxxxx
The problem only occurs:
- if there is another server in the loop, if I test with a client
that's registered to xxxxxx (instead of the demo server), the
issue does not occur
- if I record_route_preset instead of record_route. As you'll see,
when I record_route_preset, there is no did present in the route
header. I believe it should fall back to "default" dialog
matching, but perhaps there's a problem with this mechanism?
Hope we can sort this out. Thanks for your replies!
Bogdan-Andrei Iancu wrote:
Hi Herman,
Sorry for the mixing :).
Please get the logs (with debug=6) and the SIP trace (ngrep) for
such a call and sent them to me (you can send them off-list if
larger than 40K).
I cannot make any assumption yet without first looking at the logs.
Thanks and regards,
Bogdan
Herman Bastiaens wrote:
Bogdan,
I didn't post the log on the forum, that was someone else. I
just added my comment to the thread because it seemed like the
same problem. I can get a log of the scenario tomorrow if that's
helpful.
Do you have any idea why the record_route_preset could by
messing up this scenario?
Do you have any idea what could explain the 5 second threshold?
Thanks a lot for your replies, hope we can sort this out.
Herman,
The log you posted on the forum did not show any usage of
loose_route() - if you look on the log, for ACK and BYE there
is no mesage from "rr" or "dialog" module. Can you confirm this?
Regards,
Bogdan
Herman Bastiaens wrote:
Hi Bogdan,
I'm pretty sure I do a loose_route for the ACK and BYE, but
I'm still seeing this error.
I've tested the most basic scenario, starting from an example,
and this problem seems to occur when I start using a
record_route_preset("..."). Perhaps the dialog module can't
handle this? (just to be clear, the bug is still only
occurring if the call is shut down during the first few
seconds after the ACK).
I've attached the script in which I see the error occurring.
The IP of my server is 172.17.10.44
Hi Herman,
And the bell rang! :)
I went over the logs you posted on the forum and I noticed
(both script and logs) that you are not using loose_route()
for sequential requests. You do record_route() for the
initial INVITE, but no loose_route for ACK, BYE. And
loose_route() is the function that updates the dialog state.
So, in your case, the dialog does not "see" the ACK and BYE
and still keeps in the CONFIRMED_NA (not acknowledged) state.
This is way it is not removed.
See the default opensips.cfg file to see how to use the
loose_route(). I beat it will work after that ;)
Regards,
Bogdan
Herman Bastiaens wrote:
Hi Bodgan,
that's what I'm seeing, time and time again. I was hoping
this might ring a bell, but from your reply I take that it
doesn't :-)
Regards,
Herman
Hi Herman,
just to copy the reply from the forum :) :
So, let me see if I get it right. With the same
configuration, if the call is longer than 5 secs,
everything is ok (dialog is removed when receiving a BYE).
But if the call is shorter than 5 secs, the dialog is not
removed.
Is this what you say?
Regards,
Bogdan
Herman Bastiaens wrote:
Hi,
I've posted this problem on the forum
(https://sourceforge.net/forum/message.php?msg_id=6595314),
but it doesn't seem to be very active, so I'm posting it
here as well.
I'm having a problem with the dialog module of opensips
1.4.2-notls. When a call is set up, and released within
five seconds, the dialog is not removed. I am sure the
call is set up correctly (INVITE - 200 OK - ACK) and the
BYE is sent (with the correct call-id, from and to tag),
but the dialog is not removed.
I do a record_route_preset () for the INVITE and a
loose_route() for the BYE.
Are there any timers, caching, ... that could explain this
behavior? I have tested a number of times, and the problem
only occurs if the call is shut down within the first five
seconds, if the call is running longer, the dialog is
cleaned up correctly when the BYE is sent.
note: a dialog is inserted multiple times in the same
profile, but with different values, I don't know if this
is relevant for the issue
------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - www.avg.com Version: 8.0.237 / Virus
Database: 270.11.6/1981 - Release Date: 03/03/09 07:25:00
------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - www.avg.com Version: 8.0.237 / Virus Database:
270.11.8/1985 - Release Date: 03/05/09 07:54:00
Index: modules/dialog/dlg_hash.c
===================================================================
--- modules/dialog/dlg_hash.c (revision 5441)
+++ modules/dialog/dlg_hash.c (working copy)
@@ -395,8 +395,17 @@
dlg_lock( d_table, d_entry);
+ LM_DBG("input ci=<%.*s>(%d), tt=<%.*s>(%d), ft=<%.*s>(%d)\n",
+ callid->len,callid->s, callid->len,
+ ftag->len, ftag->s, ftag->len,
+ ttag->len, ttag->s, ttag->len);
+
for( dlg = d_entry->first ; dlg ; dlg = dlg->next ) {
/* Check callid / fromtag / totag */
+ LM_DBG("DLG: ci=<%.*s>(%d), tt=<%.*s>(%d), ft=<%.*s>(%d)\n",
+ dlg->callid.len,dlg->callid.s, dlg->callid.len,
+ dlg->tag[0].len,dlg->tag[0].s, dlg->tag[0].len,
+ dlg->tag[1].len,dlg->tag[1].s, dlg->tag[1].len);
if (match_dialog( dlg, callid, ftag, ttag, dir)==1) {
if (dlg->state==DLG_STATE_DELETED) {
dlg_unlock( d_table, d_entry);
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users