Hello Daniel
I do have quite a few core files, please send me the gdb commands.
Regards
Panagiotis.
Daniel-Constantin Mierla wrote:
> Hello Panagiotis,
>
> On 03/16/2010 02:21 PM, Panagiotis Skoulikaritis wrote:
>> Hello Daniel
>>
>> I will need time to recreate the problem,
>> attached are the only traces I kept.
>> on the amaze-4.cap the calls are originated by a softphone registered
>> on the kamailio
>> on the crash.cap the calls are originated from the "PSTN".
>>
>> we do account the $pd and the $pn
>>
>> I reply to you directly since i don't want to give the traces on the
>> mailing list, I hope you will understand.
>
> I asked to be sent private, it is ok.
>
>>
>> Also for workaround Alex took out the PDT module from the route and
>> the kamailio do not crash anymore.
>
> Hmm, so you say pdt module is related? That is pretty small and old
> module...
>
> Do you still have the core file? I can send you some gdb commands to
> get more details out of it.
>
> Thanks,
> Daniel
>
>>
>> Regards
>>
>> Panagiotis
>>
>>
>> Daniel-Constantin Mierla wrote:
>>> Hello,
>>>
>>> can you send me ngrep/pcap file with ip addresses so I can match
>>> which 200ok is causing the problem (coming from B or coming from
>>> Asterisk)? The backtrace shows ip while the sip trace is masked.
>>>
>>> Also, I would need a bit more info from the core file. Please keep
>>> one around. The issue seems to be related to P-Asserted-Identity
>>> header, but I couldn't find any such header in the sip trace you sent.
>>>
>>> Are you accounting the PAI header?
>>>
>>> Thanks,
>>> Daniel
>>>
>>> On 03/10/2010 03:30 PM, Panagiotis Skoulikaritis wrote:
>>>> Dear Marius
>>>>
>>>> The scenario is as follows:
>>>>
>>>> 1. A Call is placed by a sip subscriber "A"
>>>> 2. kamailio forwards the call to the asterisk server
>>>> 3. Asterisk plays an IVR message on the subscriber "A", creates a
>>>> new call to a "virtual" number which is forwarded to the kamailio
>>>> server, and plays an ivr to this leg as well when the call is
>>>> answered, then it connects the two calls.
>>>> 4. Kamailio translates the "virtual" number to the pstn number of
>>>> subscriber B
>>>>
>>>>
>>>> I have attached a picture of the above scenario.
>>>>
>>>> The modules that are loaded are:
>>>>
>>>> loadmodule "db_mysql.so"
>>>> loadmodule "mi_fifo.so"
>>>> loadmodule "mi_datagram.so"
>>>> loadmodule "sl.so"
>>>> loadmodule "tm.so"
>>>> loadmodule "rr.so"
>>>> loadmodule "pv.so"
>>>> loadmodule "maxfwd.so"
>>>> loadmodule "usrloc.so"
>>>> loadmodule "registrar.so"
>>>> loadmodule "textops.so"
>>>> loadmodule "uri_db.so"
>>>> loadmodule "siputils.so"
>>>> loadmodule "xlog.so"
>>>> loadmodule "acc.so"
>>>> loadmodule "dispatcher.so"
>>>> loadmodule "pdt.so"
>>>> loadmodule "dialplan.so"
>>>> loadmodule "siptrace.so"
>>>> loadmodule "dialog.so"
>>>> loadmodule "sqlops.so"
>>>> loadmodule "userblacklist.so"
>>>> loadmodule "htable.so"
>>>> loadmodule "uac.so"
>>>>
>>>>
>>>> The config that does all the routing is :
>>>>
>>>> route[10] {
>>>>
>>>> xlog("alx ------- This is Route 10 -------");
>>>>
>>>> if($rU =~ "^.*%+")
>>>> {
>>>> xlog("alx ------- The number contains %23 ");
>>>> $rU = $(rU{re.subst,/^(.*)%23(.*)/\1\2/});
>>>> #$rU = $(rU{s.unescape.user}); #It changes the %23
>>>> to # !!
>>>> xlog("alx ------- The perl $rU ------- ");
>>>> }
>>>>
>>>> if($rU =~ "^.*#+")
>>>> {
>>>> xlog("alx ------- The number contains #");
>>>> $rU = $(rU{re.subst,/^(.*)#(.*)/\1\2/});
>>>> #$rU = $(rU{s.unescape.user}); #It changes the %23
>>>> to # !!
>>>> xlog("alx ------- The perl $rU ------- ");
>>>> }
>>>>
>>>> if(prefix2domain("2", "0")) {
>>>>
>>>> $var(dial_grp) = $(rd{s.select,0,.}{s.int}); #
>>>> Dialplan group prefix for routing
>>>> $var(num_pr) = $(rd{s.select,1,.}{s.int}); # The
>>>> number of digits that prefix has
>>>> $var(num_translation) =
>>>> $(rd{s.select,2,.}{s.int}); # Called number translation
>>>> $avp(s:port_translation) =
>>>> $(rd{s.select,3,.}{s.int}); # Port number translation
>>>> #$var(test_var) = $(rd{s.select,4,.}{s.int}); #
>>>> Future property
>>>>
>>>> $avp(s:cust_prefix) = $(rU{s.substr,0,$var(num_pr)});
>>>> $rU = $(rU{s.substr,$var(num_pr),0});
>>>>
>>>> xlog("alx ------- The new rU is $rU and properties $rd
>>>> -------");
>>>>
>>>> if($var(num_translation) == 1)
>>>> {
>>>> if($sht(a=>$rU)!=null){
>>>>
>>>> $rU = $sht(a=>$rU);
>>>> xlog("alx ------- Translation Done. DST
>>>> num=$rU ----------");
>>>>
>>>> } else {
>>>> xlog("alx ------- Translation NOT Done
>>>> ----------");
>>>> }
>>>>
>>>>
>>>> #xlog("alx ------- We have DST number
>>>> translation for user fU $avp(s:frm_user_name) ----------");
>>>> #if(dp_translate("31", "$rU/$rU"))
>>>> #{
>>>> # xlog("alx ------- Translation Done.
>>>> DST num=$rU ----------");
>>>> #} else {
>>>> # xlog("alx ------- Translation NOT
>>>> Done ----------");
>>>> #}
>>>> }
>>>>
>>>> if(dp_translate("$var(dial_grp)", "$rU/$rU"))
>>>> {
>>>> xlog("alx ------- The $rU and with
>>>> attributes :$avp(s:dest) -------\n");
>>>>
>>>> $var(i) = 0;
>>>> while($(avp(s:dest){s.select,$var(i),.})!="#")
>>>> {
>>>> $avp(s:dstgrp) =
>>>> $(avp(s:dest){s.select,$var(i),.}{s.int});
>>>> $var(i) = $var(i) + 1;
>>>> xlog("alx ------- The
>>>> avp(s:dstgrp)=$avp(s:dstgrp) var(i)=$var(i) -------");
>>>> }
>>>>
>>>> # backup the username so we can use
>>>> different prefixes
>>>> $avp(s:user) = $rU;
>>>>
>>>> # select destination from first group
>>>>
>>>> if(ds_select_domain("$avp(s:dstgrp)", "4"))
>>>> {
>>>>
>>>> if($(ru{uri.param,prefix})!=null)
>>>> {
>>>> $ru
>>>> = "sip:" + $(ru{uri.param,prefix}) + $avp(s:user) + "@" + $rd;
>>>>
>>>> } else {
>>>> $ru
>>>> = "sip:" + $avp(s:user) + "@" + $rd;
>>>> }
>>>> }
>>>>
>>>> $avp(s:dstgrp) = null;
>>>> xlog("alx ------- The final
>>>> RURI is $ru ------- ");
>>>> if($avp(s:port_translation)
>>>> == 1)
>>>> {
>>>> rewriteport("5061");
>>>> }
>>>> t_on_failure("3");
>>>> t_relay();
>>>> exit;
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>> }
>>>>
>>>>
>>>> }
>>>>
>>>> Attached is the trace
>>>>
>>>> Regards.
>>>>
>>>> P.
>>>>
>>>> marius zbihlei wrote:
>>>>> Panagiotis Skoulikaritis wrote:
>>>>>> Hello Daniel
>>>>>>
>>>>>> the kamailio version is 1.5.3
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> P.
>>>>> Hello,
>>>>>
>>>>> Can you give us more details like the sip message that generates
>>>>> the coredump (or if every sip message received generates the
>>>>> core), if your config does something more out of the
>>>>> ordinary(let's say exotic). Can we reproduce it ?
>>>>>
>>>>> It would also be helpful if you specify the list of modules you
>>>>> have loaded.
>>>>>
>>>>> Cheers,
>>>>> Marius
>>>>>>
>>>>>> Daniel-Constantin Mierla wrote:
>>>>>>> Hello,
>>>>>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>
>>>> _______________________________________________
>>>> Kamailio (OpenSER) - Users mailing list
>>>> Users(a)lists.kamailio.org
>>>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>>
>>> --
>>> Daniel-Constantin Mierla
>>> Kamailio SIP Router Masterclass, Berlin, March 22-26, 2010
>>> * http://www.asipto.com/index.php/sip-router-masterclass/
>>>
>
> --
> Daniel-Constantin Mierla
> Kamailio SIP Router Masterclass, Berlin, March 22-26, 2010
> * http://www.asipto.com/index.php/sip-router-masterclass/
>
Hello,
First of all, i apologize for double posting on Kamilio users and
sr-dev. I wrongly posted Kamailio users mailing list.
We're making initial modifications to rtpproxy to support high channel
capacity transcoding and encryption.
At this point we want to get some general idea of the scope of changes
needed for rtpproxy and Kamailio... so we're starting with small steps.
We've been studying rtpproxy source and our current thinking is to add a
sub-structure to the existing rtpp_session structure (defined in
rtpp_session.h). The new sub-structure would include:
-encryption options (type, key length,
salt size, type of key mgt protocol, etc)
-encode / decode options (type, VAD/CNG,
VIF size, etc)
Any comments or advice on this approach appreciated.
Not sure whether to start a separate thread, but also there is the issue
of what changes are necessary to Kamailio to support sending updated
commands to rtpproxy. Would modifying Nathelper alone be sufficient?
Thanks and Regards,
Vikram.
PS : I'm posting on Kamailio's mailing list because it seems that both
Kamailio and rtpproxy developers closely follow this list.
Module: sip-router
Branch: andrei/rve_f_params
Commit: fd1d749e86c269533577924313a951d88fa80429
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=fd1d749…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Tue Mar 16 19:33:44 2010 +0100
core: ut.* - BSD licence
---
ut.c | 40 +++++++++++++++-------------------------
ut.h | 31 +++++++++++--------------------
2 files changed, 26 insertions(+), 45 deletions(-)
diff --git a/ut.c b/ut.c
index e323071..2dec13f 100644
--- a/ut.c
+++ b/ut.c
@@ -5,35 +5,25 @@
*
* Copyright (C) 2001-2003 FhG Fokus
*
- * This file is part of ser, a free SIP server.
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
*
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info(a)iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
-/*!
- * \file
- * \brief SIP-router core ::
- * \ingroup core
- * Module: \ref core
+/** various general purpose/helper functions.
+ * @file
+ * @ingroup core
+ * Module: @ref core
*/
#include <sys/types.h>
diff --git a/ut.h b/ut.h
index d8c4cf2..18dc46e 100644
--- a/ut.h
+++ b/ut.h
@@ -5,26 +5,17 @@
*
* Copyright (C) 2001-2003 FhG Fokus
*
- * This file is part of ser, a free SIP server.
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
*
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info(a)iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* History
* ------
@@ -45,7 +36,7 @@
* 2009-03-16 added sint2strbuf() and incremented INST2STR_MAX_LEN to account
* for sign (andrei)
*/
-/** various helper functions.
+/** various general purpose/helper functions.
* @file
*/
Module: sip-router
Branch: andrei/rve_f_params
Commit: e9380311afbab7366c55cc3f143f10547e6f40ff
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=e938031…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Tue Mar 16 19:28:36 2010 +0100
core: ut.h: added sint2strbuf()
- added sint2strbuf() that works like sint2str(), but isntead of
using a static buffer, requires a buffer to be provided by the
called (hence being much safer).
- increased INST2STR_MAX_LEN to accommodate for sign.
---
ut.h | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 64 insertions(+), 11 deletions(-)
diff --git a/ut.h b/ut.h
index 2328824..d8c4cf2 100644
--- a/ut.h
+++ b/ut.h
@@ -42,6 +42,11 @@
* 2007-05-14 added get_sys_ver() (andrei)
* 2007-06-05 added MAX_UVAR_VALUE(), MAX_int(a,b) MIN_int(a,b) (andrei)
* 2008-05-21 added ushort2sbuf(), ushort2str() (andrei)
+ * 2009-03-16 added sint2strbuf() and incremented INST2STR_MAX_LEN to account
+ * for sign (andrei)
+ */
+/** various helper functions.
+ * @file
*/
@@ -245,7 +250,8 @@ static inline int btostr( char *p, unsigned char val)
}
-#define INT2STR_MAX_LEN (19+1+1) /* 2^64~= 16*10^18 => 19+1 digits + \0 */
+#define INT2STR_MAX_LEN (19+1+1+1) /* 2^64~= 16*10^18 =>
+ 19+1 digits + sign + \0 */
/*
* returns a pointer to a static buffer containing l in asciiz (with base "base") & sets len
@@ -292,9 +298,19 @@ static inline char* int2str_base(unsigned int l, int* len, int base)
-/* print int to asciiz in a string buffer
- * - be sure result buffer is at least INT2STR_MAX_LEN in size */
-static inline char* int2strbuf(unsigned int l, char *r, int r_size, int* len)
+/** unsigned long to str conversion using a provided buffer.
+ * Converts/prints an unsigned long to a string. The result buffer must be
+ * provided and its length must be at least INT2STR_MAX_LEN.
+ * @param l - unsigned long to be converted
+ * @param r - pointer to result buffer
+ * @param r_size - result buffer size, must be at least INT2STR_MAX_LEN.
+ * @param *len - length of the written string, _without_ the terminating 0.
+ * @return pointer _inside_ r, to the converted string (note: the string
+ * is written from the end of the buffer and not from the start and hence
+ * the returned pointer will most likely not be equal to r). In case of error
+ * it returns 0 (the only error being insufficient provided buffer size).
+ */
+static inline char* int2strbuf(unsigned long l, char *r, int r_size, int* len)
{
int i;
@@ -318,33 +334,70 @@ static inline char* int2strbuf(unsigned int l, char *r, int r_size, int* len)
}
extern char ut_buf_int2str[INT2STR_MAX_LEN];
-/* returns a pointer to a static buffer containing l in asciiz & sets len */
+/** interger(long) to string conversion.
+ * This version uses a static buffer (shared with sint2str()).
+ * WARNING: other function calls might overwrite the static buffer, so
+ * either always save the result immediately or use int2strbuf(...).
+ * @param l - unsigned long to be converted/printed.
+ * @param *len - will be filled with the final length (without the terminating
+ * 0).
+ * @return a pointer to a static buffer containing l in asciiz & sets len.
+ */
static inline char* int2str(unsigned long l, int* len)
{
return int2strbuf(l, ut_buf_int2str, INT2STR_MAX_LEN, len);
}
-/* Signed INTeger-TO-STRing: convers a long to a string
- * returns a pointer to a static buffer containing l in asciiz & sets len */
-static inline char* sint2str(long l, int* len)
+
+
+/** signed long to str conversion using a provided buffer.
+ * Converts a long to a signed string. The result buffer must be provided
+ * and its length must be at least INT2STR_MAX_LEN.
+ * @param l - long to be converted
+ * @param r - pointer to result buffer
+ * @param r_size - result buffer size, must be at least INT2STR_MAX_LEN.
+ * @param *len - length of the written string, _without_ the terminating 0.
+ * @return pointer _inside_ r, to the converted string (note: the string
+ * is written from the end of the buffer and not from the start and hence
+ * the returned pointer will most likely not be equal to r). In case of error
+ * it returns 0 (the only error being insufficient provided buffer size).
+ */
+static inline char* sint2strbuf(long l, char* r, int r_size, int* len)
{
int sign;
char *p;
+ int p_len;
sign = 0;
if(l<0) {
sign = 1;
l = -l;
}
- p = int2str((unsigned long)l, len);
- if(sign && *len<(INT2STR_MAX_LEN-1)) {
+ p = int2strbuf((unsigned long)l, r, r_size, &p_len);
+ if(sign && *len<(r_size-1)) {
*(--p) = '-';
- if (len) (*len)++;
+ p_len++;;
}
+ if (likely(len))
+ *len = p_len;
return p;
}
+/** Signed INTeger-TO-STRing: converts a long to a string.
+ * This version uses a static buffer, shared with int2str().
+ * WARNING: other function calls might overwrite the static buffer, so
+ * either always save the result immediately or use sint2strbuf(...).
+ * @param l - long to be converted/printed.
+ * @param *len - will be filled with the final length (without the terminating
+ * 0).
+ * @return a pointer to a static buffer containing l in asciiz & sets len.
+ */
+static inline char* sint2str(long l, int* len)
+{
+ return sint2strbuf(l, ut_buf_int2str, INT2STR_MAX_LEN, len);
+}
+
#define USHORT2SBUF_MAX_LEN 5 /* 65535*/
Revision: 5994
http://openser.svn.sourceforge.net/openser/?rev=5994&view=rev
Author: miconda
Date: 2010-03-16 11:08:17 +0000 (Tue, 16 Mar 2010)
Log Message:
-----------
- use load_tm_api()
- sync'ed with devel, simpler binding to tm
- patch by Stephen Young (styoung)
Modified Paths:
--------------
branches/1.5/modules/dispatcher/dispatcher.c
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
The following task has a new comment added:
FS#25 - Strange symbols in NOTIFY dialog-info+xml body
User who did this - Klaus Darilion (klaus3000)
----------
no fix, no follow up. I re-read the code but couldn't spot a bug.
----------
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=25#comment39
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.