Hello,
last midnight was the term to freeze the development for next major
release v4.0.0. For a while, the GIT must branch should get only commits
related to bug fixes, documentation improvements and updates of the
additional tools.
If any developer needs to store code of new features in the repository,
use personal branches (or temporary branches in tmp/ when many
developers work on the same code). After unfreeze, these branches can be
merged in the master branch.
For 1-2 months from now on, the main focus with the master branch is
testing. The v4.0.0 will be out after mid of February, exact date to be
set later based on the results during testing phase.
There were many additions, so any kind of help testing is very
appreciated. Fortunately the core and most of the very used classic
modules were not changed much, ensuring good stability. But there are
old very used pieces such as usrloc/registrar that got touched as well,
so try to test as much as possible the components you are using in your
configs.
Provide any kind of feedback on sr-dev mailing list or the bug tracker.
Cheers,
Daniel
--
Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, April 16-17, 2013, Berlin
- http://conference.kamailio.com -
Module: sip-router
Branch: master
Commit: 5a78a8b8ec104550a37d8e2ae9005bf87d21e00f
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5a78a8b…
Author: Anca Vamanu <anca.vamanu(a)1and1.ro>
Committer: Anca Vamanu <anca.vamanu(a)1and1.ro>
Date: Fri Jan 11 11:07:45 2013 +0200
dialog: fix bug when detect_spirals enabled
If detect_spirals enabled and the caller sent an Invite which received a
negative response and then immediately sent another Invite with the
same callid and tag, the module did not create a dialog record for the
second Invite. It wrongly concluded that the Invite is spiraled. This
resulted in missing CDR for that call.
Behavior observed if the first Invite has a small Session-Timer interval
and receives a 422 reply. When the phone sent the second Invite with a
larger Session-Timer, which could have been successful, it was not recorded
by the dialog module.
---
modules_k/dialog/dlg_handlers.c | 24 ++++++++++++++----------
1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c
index b350ba7..f98f36b 100644
--- a/modules_k/dialog/dlg_handlers.c
+++ b/modules_k/dialog/dlg_handlers.c
@@ -805,16 +805,20 @@ int dlg_new_dialog(sip_msg_t *req, struct cell *t, const int run_initial_cbs)
dlg = get_dlg(&callid, &ftag, &ttag, &dir);
if (dlg)
{
- LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
- callid.len, callid.s);
- spiral_detected = 1;
-
- if (run_initial_cbs)
- run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
- DLG_DIR_DOWNSTREAM, 0);
- /* get_dlg() has incremented the ref count by 1
- * - it's ok, dlg will be unref at the end of function */
- goto finish;
+ if ( dlg->state != DLG_STATE_DELETED )
+ {
+ LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
+ callid.len, callid.s);
+ spiral_detected = 1;
+
+ if (run_initial_cbs)
+ run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
+ DLG_DIR_DOWNSTREAM, 0);
+ /* get_dlg() has incremented the ref count by 1
+ * - it's ok, dlg will be unref at the end of function */
+ goto finish;
+ }
+ dlg_release(dlg);
}
}
spiral_detected = 0;
Module: sip-router
Branch: 3.2
Commit: c750f1b978563c751a884fadb23de062f9092aab
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c750f1b…
Author: Anca Vamanu <anca.vamanu(a)1and1.ro>
Committer: Anca Vamanu <anca.vamanu(a)1and1.ro>
Date: Fri Jan 11 11:07:45 2013 +0200
dialog: fix bug when detect_spirals enabled
If detect_spirals enabled and the caller sent an Invite which received a
negative response and then immediately sent another Invite with the
same callid and tag, the module did not create a dialog record for the
second Invite. It wrongly concluded that the Invite is spiraled. This
resulted in missing CDR for that call.
Behavior observed if the first Invite has a small Session-Timer interval
and receives a 422 reply. When the phone sent the second Invite with a
larger Session-Timer, which could have been successful, it was not recorded
by the dialog module.
(cherry picked from commit 5a78a8b8ec104550a37d8e2ae9005bf87d21e00f)
---
modules_k/dialog/dlg_handlers.c | 24 ++++++++++++++----------
1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c
index 2a1e494..10b8ebc 100644
--- a/modules_k/dialog/dlg_handlers.c
+++ b/modules_k/dialog/dlg_handlers.c
@@ -774,16 +774,20 @@ int dlg_new_dialog(struct sip_msg *req, struct cell *t, const int run_initial_cb
dlg = get_dlg(&callid, &ftag, &ttag, &dir);
if (dlg)
{
- LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
- callid.len, callid.s);
- spiral_detected = 1;
-
- if (run_initial_cbs)
- run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
- DLG_DIR_DOWNSTREAM, 0);
- /* get_dlg() has incremented the ref count by 1
- * - it's ok, dlg will be unref at the end of function */
- goto finish;
+ if ( dlg->state != DLG_STATE_DELETED )
+ {
+ LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
+ callid.len, callid.s);
+ spiral_detected = 1;
+
+ if (run_initial_cbs)
+ run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
+ DLG_DIR_DOWNSTREAM, 0);
+ /* get_dlg() has incremented the ref count by 1
+ * - it's ok, dlg will be unref at the end of function */
+ goto finish;
+ }
+ dlg_release(dlg);
}
}
spiral_detected = 0;
Module: sip-router
Branch: 3.3
Commit: b1398b2faa5a01b652a8c265b93c4846e35f97d9
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=b1398b2…
Author: Anca Vamanu <anca.vamanu(a)1and1.ro>
Committer: Anca Vamanu <anca.vamanu(a)1and1.ro>
Date: Fri Jan 11 11:07:45 2013 +0200
dialog: fix bug when detect_spirals enabled
If detect_spirals enabled and the caller sent an Invite which received a
negative response and then immediately sent another Invite with the
same callid and tag, the module did not create a dialog record for the
second Invite. It wrongly concluded that the Invite is spiraled. This
resulted in missing CDR for that call.
Behavior observed if the first Invite has a small Session-Timer interval
and receives a 422 reply. When the phone sent the second Invite with a
larger Session-Timer, which could have been successful, it was not recorded
by the dialog module.
(cherry picked from commit 5a78a8b8ec104550a37d8e2ae9005bf87d21e00f)
---
modules_k/dialog/dlg_handlers.c | 24 ++++++++++++++----------
1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c
index b350ba7..f98f36b 100644
--- a/modules_k/dialog/dlg_handlers.c
+++ b/modules_k/dialog/dlg_handlers.c
@@ -805,16 +805,20 @@ int dlg_new_dialog(sip_msg_t *req, struct cell *t, const int run_initial_cbs)
dlg = get_dlg(&callid, &ftag, &ttag, &dir);
if (dlg)
{
- LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
- callid.len, callid.s);
- spiral_detected = 1;
-
- if (run_initial_cbs)
- run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
- DLG_DIR_DOWNSTREAM, 0);
- /* get_dlg() has incremented the ref count by 1
- * - it's ok, dlg will be unref at the end of function */
- goto finish;
+ if ( dlg->state != DLG_STATE_DELETED )
+ {
+ LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
+ callid.len, callid.s);
+ spiral_detected = 1;
+
+ if (run_initial_cbs)
+ run_dlg_callbacks( DLGCB_SPIRALED, dlg, req, NULL,
+ DLG_DIR_DOWNSTREAM, 0);
+ /* get_dlg() has incremented the ref count by 1
+ * - it's ok, dlg will be unref at the end of function */
+ goto finish;
+ }
+ dlg_release(dlg);
}
}
spiral_detected = 0;
Module: sip-router
Branch: 3.1
Commit: 176b8320934d9e05613fe909ea7960d2de54c965
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=176b832…
Author: Anca Vamanu <anca.vamanu(a)1and1.ro>
Committer: Anca Vamanu <anca.vamanu(a)1and1.ro>
Date: Fri Jan 11 11:50:26 2013 +0200
dialog: fix bug when detect_spirals enabled
If detect_spirals enabled and the caller sent an Invite which received a
negative response and then immediately sent another Invite with the
same callid and tag, the module did not create a dialog record for the
second Invite. It wrongly concluded that the Invite is spiraled. This
resulted in missing CDR for that call.
Behavior observed if the first Invite has a small Session-Timer interval
and receives a 422 reply. When the phone sent the second Invite with a
larger Session-Timer, which could have been successful, it was not recorded
by the dialog module.
(manual cherry picked from commit 5a78a8b8ec104550a37d8e2ae9005bf87d21e00f)
---
modules_k/dialog/dlg_handlers.c | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c
index bc79f7b..c506699 100644
--- a/modules_k/dialog/dlg_handlers.c
+++ b/modules_k/dialog/dlg_handlers.c
@@ -693,15 +693,18 @@ int dlg_new_dialog(struct sip_msg *msg, struct cell *t)
dlg = get_dlg(&callid, &ftag, &ttag, &dir);
if (dlg)
{
- LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
- callid.len, callid.s);
- spiral_detected = 1;
+ if ( dlg->state!=DLG_STATE_DELETED ) {
+ LM_DBG("Callid '%.*s' found, must be a spiraled request\n",
+ callid.len, callid.s);
+ spiral_detected = 1;
- run_dlg_callbacks( DLGCB_SPIRALED, dlg, msg, DLG_DIR_DOWNSTREAM, 0);
+ run_dlg_callbacks( DLGCB_SPIRALED, dlg, msg, DLG_DIR_DOWNSTREAM, 0);
- // get_dlg with del==0 has incremented the ref count by 1
+ // get_dlg with del==0 has incremented the ref count by 1
+ unref_dlg(dlg, 1);
+ goto finish;
+ }
unref_dlg(dlg, 1);
- goto finish;
}
}
spiral_detected = 0;