Hello,
I'm seeing an increasing amount of spurious timeouts on my proxies.
Even though the proxy receives a "100 Trying" response immediately
after relaying the request, tm will send retransmits and times out
eventually. Below is a commented log snippet. The timeout occurs on
the proxy named 'balancer1'. Both are on the same host.
I verified that the 100 Trying response is received in a t_on_reply
block, so it is recognized by tm as belonging to a transaction.
When needed, I'll provide a debug log when it occurs again.
Meanwhile, any idea what is causing this?
This is on kamailio 1.5+svn5768
fr_timer = 10
fr_timer_avp = 2
# Initial request received on balancer
May 15 12:32:01 balancer1[24170]: [2 INVITE] - New request. <sip:uac@domain> => <sip:uas@domain>
May 15 12:32:01 balancer1[24170]: [2 INVITE] Relaying
# Initial request received on proxy
May 15 12:32:01 proxy1[23803]: [2 INVITE] - New request. <sip:uac@domain> => <sip:uas@domain>
# Balancer receives 100 response
May 15 12:32:01 balancer1[24166]: [2 INVITE] - Reply. 100 Trying
# Proxy relays request
May 15 12:32:01 proxy1[23803]: [2 INVITE] Relaying
# Proxy receives retransmission from balancer ???
May 15 12:32:02 proxy1[23804]: [2 INVITE] - New request. <sip:uac@domain> => <sip:uas@domain>
# Balancer times out ???
May 15 12:32:02 balancer1[24171]: [2 INVITE] Failure (Status: 408)
May 15 12:32:02 balancer1[24171]: [2 INVITE] No more gateways
May 15 12:32:02 proxy1[23804]: [2 CANCEL] - New request. <sip:uac@domain> => <sip:uas@domain>
--
Greetings,
Alex Hermann
Hello,
when i push create button, I get the following:
Grails Runtime Exception
Error Details
Message: org.apache.commons.codec.digest.DigestUtils
Caused by: java.lang.NoClassDefFoundError:
org.apache.commons.codec.digest.DigestUtils
Class: UserController
At Line: [226]
Code Snippet:
Stack Trace
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.NoClassDefFoundError:
org.apache.commons.codec.digest.DigestUtils
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:384)
at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:183)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError:
org.apache.commons.codec.digest.DigestUtils
at UserController$_closure11.class$(UserController.groovy)
at UserController$_closure11.doCall(UserController.groovy:226)
at UserController$_closure11.doCall(UserController.groovy)
... 28 more
Unfortunately, i am not familiar with such java stuff.
It would be great if one of you can give me a hint or something. I dont have
any idea how to solve this problem.
Thanks for any comment!
Best regards,
Fred
Hi all
I have specify the wanted db type (DBENGINE=MYSQL) in the
/usr/local/etc/kamailio/kamctlrc
then I using "/usr/local/sbin/kamdbctl create" to create MySQL database,
but I got this error:
ERROR: database engine not specified, please setup one in the config script
root@acer:/usr/local/src/kamailio-1.5.0/sip-server# vim
/usr/local/etc/kamailio/kamctlrc
root@acer:/usr/local/src/kamailio-1.5.0/sip-server# /usr/local/sbin/kamdbctl
create
MySQL password for root:
INFO: test server charset
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
/usr/local/lib/kamailio/kamctl/kamdbctl.mysql: line 112: [: =: unary
operator expected
INFO: creating database openser ...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
ERROR: Creating core database and grant privileges failed!
Cheers,
vivi
Hi, I use the Munin plugin I did in various servers running Kamailio
1.5 (Debian 64 bits).
The munin plugins performs the Mi command:
kamctl fifo get_statistics inuse_transactions
In one of them the installed revision is 5834 and the plugin works
perfectly, no errors in 3 months with high traffic.
However in the other server (revision 5925) there are no traffic yet
but the plugin fails sometimes (maybe once each 2-3 days). Sometimes
it gets an error:
ERROR:mi_fifo:mi_fifo_server: fifo command must begin with :: early_dialogs
and sometimes it gets wrong value:
kamctl fifo get_statistics inuse_transactions => 2819624 (with no
traffic !!!)
In the second case the Munin grapsh gets corrupted due to so high value.
Could it be a bug in dialog module?
Should I upgrade to revision 5939 in which I see a change for
modules/dialog/dlg_handlers.c:
-------------------------------------------------------------------------------------------------------------------------
~# svn diff -r HEAD modules/dialog/dlg_handlers.c
Index: modules/dialog/dlg_handlers.c
===================================================================
--- modules/dialog/dlg_handlers.c (revisión: 5939)
+++ modules/dialog/dlg_handlers.c (copia de trabajo)
@@ -824,14 +824,13 @@
if(dlg->toroute>0 && dlg->toroute<RT_NO)
{
+ dlg_set_ctx_dialog(dlg);
fmsg = faked_msg_next();
if (exec_pre_req_cb(fmsg)>0)
{
- dlg_set_ctx_dialog(dlg);
LM_DBG("executing route %d on timeout\n", dlg->toroute);
set_route_type(REQUEST_ROUTE);
run_top_route(rlist[dlg->toroute], fmsg);
- dlg_set_ctx_dialog(0);
exec_post_req_cb(fmsg);
}
}
------------------------------------------------------------------------------------------------------------------------
I see some differences between the dialog module versions running in
both servers, but I think the main difference is a bug fix for the
case in which there is empty Record-Route in the response (Kamailio
crashed before the fix):
-----------------------------------------------------------------------------------------------------------------------
# svn diff -r 5834:5925 modules/dialog/dlg_handlers.c
Index: modules/dialog/dlg_handlers.c
===================================================================
--- modules/dialog/dlg_handlers.c (revisión: 5834)
+++ modules/dialog/dlg_handlers.c (revisión: 5925)
@@ -163,10 +163,10 @@
int populate_leg_info( struct dlg_cell *dlg, struct sip_msg *msg,
struct cell* t, unsigned int leg, str *tag)
{
- unsigned int skip_recs;
- str cseq;
- str contact;
- str rr_set;
+ unsigned int skip_recs = 0;
+ str cseq = {0, 0};
+ str contact = {0, 0};
+ str rr_set = {0, 0};
/* extract the cseq number as string */
if (leg==DLG_CALLER_LEG) {
@@ -184,48 +184,41 @@
/* extract the contact address */
if (!msg->contact&&(parse_headers(msg,HDR_CONTACT_F,0)<0||!msg->contact)){
LM_ERR("bad sip message or missing Contact hdr\n");
- goto error0;
+ } else {
+ if ( parse_contact(msg->contact)<0 ||
+ ((contact_body_t
*)msg->contact->parsed)->contacts==NULL ||
+ ((contact_body_t
*)msg->contact->parsed)->contacts->next!=NULL ) {
+ LM_ERR("bad Contact HDR\n");
+ } else {
+ contact = ((contact_body_t
*)msg->contact->parsed)->contacts->uri;
+ }
}
- if ( parse_contact(msg->contact)<0 ||
- ((contact_body_t *)msg->contact->parsed)->contacts==NULL ||
- ((contact_body_t *)msg->contact->parsed)->contacts->next!=NULL ) {
- LM_ERR("bad Contact HDR\n");
- goto error0;
- }
- contact = ((contact_body_t *)msg->contact->parsed)->contacts->uri;
-
/* extract the RR parts */
if(!msg->record_route && (parse_headers(msg,HDR_RECORDROUTE_F,0)<0) ){
LM_ERR("failed to parse record route header\n");
- goto error0;
- }
-
- if (leg==DLG_CALLER_LEG) {
- skip_recs = 0;
} else {
- /* was the 200 OK received or local generated */
- skip_recs = dlg->from_rr_nb +
- ((t->relaied_reply_branch>=0)?
- (t->uac[t->relaied_reply_branch].added_rr):0);
- }
+ if (leg==DLG_CALLEE_LEG) {
+ /* was the 200 OK received or local generated */
+ skip_recs = dlg->from_rr_nb +
+ ((t->relaied_reply_branch>=0)?
+
(t->uac[t->relaied_reply_branch].added_rr):0);
+ }
- if(msg->record_route){
- if( print_rr_body(msg->record_route, &rr_set, leg,
- &skip_recs) != 0 ){
- LM_ERR("failed to print route records \n");
- goto error0;
+ if(msg->record_route){
+ if( print_rr_body(msg->record_route, &rr_set, leg,
+
&skip_recs) != 0 ){
+ LM_ERR("failed to print route records \n");
+ }
}
- } else {
- rr_set.s = 0;
- rr_set.len = 0;
}
if(leg==DLG_CALLER_LEG)
dlg->from_rr_nb = skip_recs;
LM_DBG("route_set %.*s, contact %.*s, cseq %.*s and bind_addr %.*s\n",
- rr_set.len, rr_set.s, contact.len, contact.s,
- cseq.len, cseq.s,
+ rr_set.len, (rr_set.len)?rr_set.s:"",
+ contact.len, (contact.len)?contact.s:"",
+ cseq.len, (cseq.len)?cseq.s:"",
msg->rcv.bind_address->sock_str.len,
msg->rcv.bind_address->sock_str.s);
-----------------------------------------------------------------------------------------------------------------------
Perhaps a regression in rev 5925 so I should upgrade?
Thanks.
--
Iñaki Baz Castillo
<ibc(a)aliax.net>
if i have understood correctly, if uac_replace_from() is called
in "auto" mode, encoded from uri is added into an extra param of r-r
header when the request is forwarded towards uas.
does the module check that reply to the request from uas really includes
the added parameter in its r-r header or is correct operation of
in-dialog requests at the mercy of the uas?
-- juha
it turned out that the problems ricardo reported on gw selection in
lcr module were due to the fact that he has the same gw (same in terms of
ip address) in more than one gw group and in each group the gw has
different trip/tag attributes.
load_gws() function tries the same gateway only once, but it is not
currently well defined from which group gw's attributes are taken
when request is sent to the gateway. currently the attributes are taken
from the gw group, which happens to be the first in in-memory gw table.
one could think that this is a feature, i.e., if the same gw is in many gw
groups, it must have the same attributes in every group. the other
alternative is that this is a bug, i.e., same gw's attributes can differ
from group to group and the ones that are used must be the ones of the
chosen group.
i have a fix written for sr_3.0 lcr module, but i'm hesitating to introduce
the fix also to version 1.5, because the fix has not been tested well yet.
any opinions on what should be done?
-- juha
Hi!
I've tried to make Debian packages for latest Kamailio, but some issues
arised.
First, packages are named ser-stuff, shouldn't they be called
kamailio-stuff even though Kamailio now uses SIP-Router core?
Also, Debian package making seems to be broken:
# install the *.sql files for ser_mysql.sh
script cp -f
scripts/mysql/*.sql /home/kmphlb/src/kamailio-3.0.0/kamailio/debian/ser/usr/lib/ser/
cp: target
«/home/kmphlb/src/kamailio-3.0.0/kamailio/debian/ser/usr/lib/ser/» is
not a directory make[1]: *** [install] Error 1
Directories are named 'ser'. Shouldn't it be just 'kamailio'?
Regards,
--
Kim Philby
Hello,
We have a problem with route on header.
I receive an ack from X.X.X.X (asterisk) on Y.Y.Y.Y (kamailio 1.5.3).
Y.Y.Y.Y relay ACK to Z.Z.Z.Z
Y.Y.Y.Y this route from X.X.X.X:
<sip:Y.Y.Y.Y;lr=on;ftag=as7e58db45>,<sip:11dc0d7918b56374@Z.Z.Z.Z;lr>
And forward as the same to Z.Z.Z.Z.
The route header must be :
<sip:11dc0d7918b56374@Z.Z.Z.Z;lr>
I think my kamailio must delete the first part of the route header,
like this explaination:
http://www.tech-invite.com/Ti-sip-dialog.html#inv-ack
Could you help me?
Regards,
--
alex
I'm having some issues getting kam to log correctly to syslog after it
daemonizes. I get all the initialization entries in the proper logfile
but nothing after that - I have xlog statements throughout the config
which only show up in syslog if fork=no. I've tested my syslog config
with the system logger which works correctly executed as the kamailio
user. If I run syslog in debug I don't see it receiving anything from
kam after initialization. Any ideas?
log_stderror=no
log_facility=LOG_LOCAL1
debug=7
fork=yes
children=4
/etc/syslog.conf (with tabs)
local1.debug
/var/log/globeop/kamailio.log
This is the correct format of syslog in solaris. It only uses wildcard
(*) in facility not levels. Specifying debug will include everything at
higher levels. From the man page:
For a given facility and level, syslogd matches all messages
for that
level and all higher levels. For example, an entry that
specifies a
level of crit also logs messages at the alert and emerg levels.
This config is working correctly on sol 10 with openser 1.3.
ykt1sipprd2# tail -f /var/log/globeop/kamailio.log
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 951507 local1.debug]
DBG:core:grep_aliases: comparing host [2:loghost:5060] with us
[1:loghost:5060]
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 951507 local1.debug]
DBG:core:grep_aliases: comparing host [2:loghost:5060] with us
[1:ykt1sipprd2:5060]
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 793175 local1.debug]
DBG:core:grep_aliases: no match for: [2:loghost:5060]
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 634971 local1.debug]
DBG:core:socket2str: <tcp:172.20.151.148:5060>
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 797031 local1.debug]
DBG:core:fm_malloc_init: F_OPTIMIZE=16384, /ROUNDTO=2048
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 596959 local1.debug]
DBG:core:fm_malloc_init: F_HASH_SIZE=2067, fm_block size=16560
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 362601 local1.debug]
DBG:core:fm_malloc_init: params (fc400000, 33554432), start=fc400000
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 551434 local1.debug]
DBG:core:shm_mem_init_mallocs: success
Oct 27 09:50:46 ykt1sipprd2 kamailio[3813]: [ID 123545 local1.info]
INFO:core:init_tcp: using /dev/poll as the TCP io watch method (auto
detected)
Oct 27 09:50:46 ykt1sipprd2 kamailio[3815]: [ID 721503 local1.warning]
WARNING:core:daemonize: pid file contains old pid, replacing pid
--------------------------------------------------------------------------
This email with all information contained herein or attached hereto may contain confidential and/or privileged information intended for the addressee(s) only. If you have received this email in error, please contact the sender and immediately delete this email in its entirety and any attachments thereto.