Hello Alan,

About the first issue, when the timeout is in the past and the timestart is 0. Both these values are updated at the 200 Ok received for the dialog. State 1, as shown by dlg_list, means that there was not reply from the callee, not even a provisional one, that's why the timestart is 0. Internally, timeout was also 0, but it got displayed wrong in dlg_list.

About the second issue with the MySQL, the database insertion was done before the lifetime got to be updated, so again the same problem as the dlg_list presented itself. The timestart was properly updated, but the timeout was still internally considered 0.

I have committed a fix for both these issues in trunk, rev 8202.
Please try it out and let me know if now it's ok.


Regards,

--
Vlad Paiu
OpenSIPS Developer



On 08/03/2011 02:21 AM, Alan Frisch wrote:
Originally I came across this issue in 1.6.4 and documented it in http://opensips.org/pipermail/users/2011-January/016358.html

I've seen a few entries in the dialog DB in 1.6.4 where the call was an old zombie because the start_time was ahead of the timeout. Now I have been experimenting with 1.7 and my .CFG is in a semi-working state (trying to get topology hiding working), so I am able to see this behaviour in more detail.

What seems to be happening still in 1.7 is that what get's stored in the Dialog DB and DLG_LIST for the timeout are 2 different values. Initially the timeout value in the DB is earlier than the start_time, the value can be one or two minutes older than the actual dialog start.

Starting a call I see the following in DLG_LIST:

dialog::  hash=1624:161014921
        state:: 1
        user_flags:: 0
        timestart:: 0
        timeout:: 1312326458
 ...

This initial timeout value is in the past(!). A few moments later once the state has changed OpenSIPS now displays:

dialog::  hash=1624:161014921
        state:: 3
        user_flags:: 0
        timestart:: 1312326489
        timeout:: 1312333989
...

Which seems to be a proper start time and timeout, the difference is 7500 seconds (as I specified in my .CFG).

Switching over to the MySQL side of things, even after some time the value for time_start is more or less correct, but the timeout is not updated.

mysql> select id,state,start_time,timeout from dialog;
+----+-------+------------+------------+
| id | state | start_time | timeout    |
+----+-------+------------+------------+
|  1 |     3 | 1312326489 | 1312326459 |
+----+-------+------------+------------+
1 row in set (0.00 sec)

As you can see, the DB has not been updated with the new timeout from the DLG_LIST... it is still the "in the past" initial value of 1312326459.

Not sure if this is one problem or two... but it has bunged up my load balancing on a few occasions with calls hanging around the DB for days (can't remember if I saw them in the DLG_LIST.

Any idea what's happening here?

AF.



_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to