Hi All,
I was wondering if there was an existing pattern is Kamailio to deal with
long-running code being executed on a callback. If we take, for example,
usrloc. Lets say the domains are synced every 60 seconds. Assume there are
going to be 200 expired contacts at the next fire. Now imagine the callback
for each expired contact having to do some long IO (viz talking to DB, in
IMS case doing diameter, etc). Under load, some of these task can be in
excess of 100ms. In this specific case your timer (albeit most likely a
slow timer in this case) will be "stuck" running the callbacks for a good
(100ms x 200) = 20 seconds :-/
I can only think of using some form of async model to get around this. I
know there would be the pain of most likely having to use reference
counting, for example in usrloc on urecords and ucontacts.
Does anyone have any ideas around this? Is there a gap to look at some core
functionality for handling async callbacks? does it already exist and I
have missed it?
ideas/comments welcome.
cheers
jason
THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
The following task is now closed:
FS#235 - is_gruu() test fails
User who did this - Daniel-Constantin Mierla (miconda)
Reason for closing: Fixed
Additional comments about closing: Committed in master branch as GIT#1e5b711a88eb2c4a5d656d4e8f24729e04924518
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=235
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.
THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
Daniel-Constantin Mierla has taken ownership of the following task:
FS#235 - is_gruu() test fails
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=235
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.
Module: sip-router
Branch: master
Commit: f5a60cb91ecb701681b7ef0a29d5f1b0bb503908
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=f5a60cb…
Author: Jon Bonilla <manwe(a)aholab.ehu.es>
Committer: Jon Bonilla <manwe(a)aholab.ehu.es>
Date: Wed May 30 01:44:50 2012 +0200
pkd/deb Remove lua and Add redis to wheezy build
---
pkg/kamailio/deb/wheezy/control | 40 +++++++++++++++++++-------------------
pkg/kamailio/deb/wheezy/rules | 2 +-
2 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/pkg/kamailio/deb/wheezy/control b/pkg/kamailio/deb/wheezy/control
index a3a894b..8ae44e0 100644
--- a/pkg/kamailio/deb/wheezy/control
+++ b/pkg/kamailio/deb/wheezy/control
@@ -2,7 +2,7 @@ Source: kamailio
Section: net
Priority: optional
Maintainer: Jon Bonilla <manwe(a)aholab.ehu.es>
-Build-Depends: debhelper (>= 5), dpatch, libmysqlclient-dev, libexpat1-dev, libxml2-dev, libpq-dev, libradiusclient-ng-dev, flex, bison, zlib1g-dev, unixodbc-dev, libxmlrpc-c3-dev, libperl-dev, libsnmp-dev, dpkg-dev (>= 1.13.19), libdb-dev (>= 4.6.19), xsltproc, libconfuse-dev, libldap2-dev, libssl-dev, libcurl3-openssl-dev, python, libpcre3-dev, docbook-xml, libmemcache-dev, libreadline-dev, liblua5.1-0-dev, python-dev, libsasl2-dev, libgeoip-dev (>= 1.4.5), libsqlite3-dev, libjson0-dev, libevent-dev, libncurses5-dev
+Build-Depends: debhelper (>= 5), dpatch, libmysqlclient-dev, libexpat1-dev, libxml2-dev, libpq-dev, libradiusclient-ng-dev, flex, bison, zlib1g-dev, unixodbc-dev, libxmlrpc-c3-dev, libperl-dev, libsnmp-dev, dpkg-dev (>= 1.13.19), libdb-dev (>= 4.6.19), xsltproc, libconfuse-dev, libldap2-dev, libssl-dev, libcurl3-openssl-dev, python, libpcre3-dev, docbook-xml, libmemcache-dev, libreadline-dev, python-dev, libsasl2-dev, libgeoip-dev (>= 1.4.5), libsqlite3-dev, libjson0-dev, libevent-dev, libncurses5-dev, libhiredis-dev (>= 0.10.0)
Standards-Version: 3.8.0
Homepage: http://www.kamailio.org/
@@ -235,16 +235,16 @@ Description: contains the TLS kamailio transport module
This has been split out of the main kamailio package, so that kamailio will not
depend on openssl. This module will enable you to use the TLS transport.
-Package: kamailio-lua-modules
-Architecture: any
-Depends: ${shlibs:Depends}, kamailio (= ${Source-Version})
-Description: contains the app_lua module
- Kamailio is a very fast and flexible SIP (RFC3261)
- proxy server. Written entirely in C, Kamailio can handle thousands calls
- per second even on low-budget hardware.
- .
- This package provides the app_lua module, an extension allowing to
- execute embedded Lua applications within configuration file.
+#Package: kamailio-lua-modules
+#Architecture: any
+#Depends: ${shlibs:Depends}, kamailio (= ${Source-Version})
+#Description: contains the app_lua module
+# Kamailio is a very fast and flexible SIP (RFC3261)
+# proxy server. Written entirely in C, Kamailio can handle thousands calls
+# per second even on low-budget hardware.
+# .
+# This package provides the app_lua module, an extension allowing to
+# execute embedded Lua applications within configuration file.
Package: kamailio-python-modules
Architecture: any
@@ -268,15 +268,15 @@ Description: contains the geoip module
This package provides the geoip module, an extension allowing to
use GeoIP API within configuration file.
-#Package: kamailio-redis-modules
-#Architecture: any
-#Depends: ${shlibs:Depends}, kamailio (= ${binary:Version}), libhiredis0.10
-#Description: Redis database connectivity module for Kamailio
-# Kamailio is a very fast and flexible SIP (RFC3261)
-# proxy server. Written entirely in C, Kamailio can handle thousands calls
-# per second even on low-budget hardware.
-# .
-# This package provides the Redis NOSQL database driver for Kamailio.
+Package: kamailio-redis-modules
+Architecture: any
+Depends: ${shlibs:Depends}, kamailio (= ${binary:Version}), libhiredis0.10
+Description: Redis database connectivity module for Kamailio
+ Kamailio is a very fast and flexible SIP (RFC3261)
+ proxy server. Written entirely in C, Kamailio can handle thousands calls
+ per second even on low-budget hardware.
+ .
+ This package provides the Redis NOSQL database driver for Kamailio.
Package: kamailio-sqlite-modules
Architecture: any
diff --git a/pkg/kamailio/deb/wheezy/rules b/pkg/kamailio/deb/wheezy/rules
index 723e344..2e1a9eb 100755
--- a/pkg/kamailio/deb/wheezy/rules
+++ b/pkg/kamailio/deb/wheezy/rules
@@ -42,7 +42,7 @@ MODULES_SP=
# on which other depend first)
PACKAGE_GROUPS=mysql postgres berkeley unixodbc radius presence \
ldap xml perl utils memcached tls \
- snmpstats carrierroute xmpp cpl lua python geoip\
+ snmpstats carrierroute xmpp cpl redis python geoip\
sqlite json
# name of libdir in the path for libraries (e.g., lib for 32b, lib64 for 64b)
THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
A new Flyspray task has been opened. Details are below.
User who did this - Juha Heinanen (jh)
Attached to Project - sip-router
Summary - is_gruu() test fails
Task Type - Bug Report
Category - Module
Status - New
Assigned To -
Operating System - All
Severity - Low
Priority - Normal
Reported Version - Development
Due in Version - Undecided
Due Date - Undecided
Details - as i indicated on the mailing list, is_gruu() test is not working. this piece of config code
if (!is_gruu()) {
xlog("L_INFO", "Request URI $ru is NOT gruu\n");
};
if (is_gruu($ru)) {
xlog("L_INFO", "Request URI $ru IS gruu\n");
};
produces this to syslog:
Jun 5 22:30:03 siika /usr/sbin/sip-proxy[16681]: INFO: Request URI sip:test@test.fi;gr=urn:uuid:447ff092-6236-47d9-bc0a-a3c6856aacf2 is NOT gruu
Jun 5 22:30:03 siika /usr/sbin/sip-proxy[16681]: INFO: Request URI sip:test@test.fi;gr=urn:uuid:447ff092-6236-47d9-bc0a-a3c6856aacf2 IS gruu
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=235
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.
Hi guys,
I've had a discussion with Daniel Mierla at Linuxtag last week, and we
were talking about the future of rtpproxy and its control protocol.
The current state of affairs is that it has a number of mandatory
parameters and a couple of trailing optional ones. Since the protocol
relies on the position of the parameters, it's really difficult to add
new ones because you somehow need to fill up the optional positions in
between, which would cause quite some headache.
For example, one thing we did for upcoming 3.3 was adding via branch to
the call-id separated by a semi-colon and let the rtpproxy daemon parse
it if it's capable to do so, which is a pretty hackish approach. Another
thing we'd like to get into 3.4 is to let rtpproxy pass back media
statistics in the response of a delete-command.
My proposal is to change the control protocol to some kind of key/value
style format, which would allow to easily add such additions. A good way
in my opinion would be to use an esablished format like JSON, so an
rtpproxy request like this:
20477_10 USII mycallid;myviabranch 192.168.51.1 5016 myfromtag;1
would become something like this:
{ cookie:"20477_10", method:"update", flags:"SII", callid:"mycallid",
viabranch:"myviabranch", ipv4addr:"192.168.51.1", port:"5016",
fromtag:"myfromtag", streamnum:1}
The "flags" option could also be split up, and adding more parameters is
straight-forward, so we're pretty flexible here.
From a reply perspective, it's also easier to pass back errors instead
of the "0" port approach.
Any comments on that approach?
Andreas
Hi guys,
When I implemented the Path module 6 years ago, I chose to enclose the
received-URI in double-quotes, like this:
Path: <sip:1.2.3.4:5060;received="sip:1.2.3.5:1234;transport=tcp">
This Path value is stored in usrloc by registrar module, and is
converted to a Route in a subsequent request. This worked fine so far,
because there's the logic in parser/parse_param.c to handle
double-quoted parameters.
Now while doing some interop tests with another platform, it turned out
that double-quotes are not allowed in URI params (see
https://lists.cs.columbia.edu/pipermail/sip-implementors/2008-May/019335.ht…,
and in the grammar the allowed chars in the "unreserved" definition are
"alphanum" and "mark", where "mark" is only "-" / "_" / "." / "!" / "~"
/ "*" / "'" / "(" / ")" ).
Anyways, to fully comply with RFC3261, I'd like to push a bugfix to path
module to use single-quotes instead, however it also needs a change in
the parser to use parse_quoted_param() also in case of single-quoted
params (which hasn't been handled at all until now).
My question now is if there are any concerns on your side with handling
single-quoted URI params the way we handle double-quoted ones? If we
were strict, we'd actually need to remove the handling for double-quoted
ones, but for backwards-compatibility I'd rather keep it there.
Comments?
Andreas