brandon,
i hope that the http_query crash is now fixed in sr and k 1.5. i added
a check on the actual size of the reply body. and as klaus suggested, the
result is now the whole body if it does not contain a linefeed.
-- juha
Revision: 5906
http://openser.svn.sourceforge.net/openser/?rev=5906&view=rev
Author: juhe
Date: 2009-07-24 16:19:54 +0000 (Fri, 24 Jul 2009)
Log Message:
-----------
modules/utils: added check on size of http_query reply
- Added check on actual size of http_query reply body that fixes possible
crash if body does not contain a linefeed.
- If body does not contain a linefeed, return whole body as result.
Modified Paths:
--------------
branches/1.5/modules/utils/functions.c
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Hello,
First off as always, thanks ahead of time!
I'm testing out the new http_query kamailio method/function, experiencing
some odd behavior.
When I do: http://sub.domain.com/folder/1111111111 <- 1111111111 being a
"file dynamically created", it may pull results i.e. "XYZ".
When I do: http://domain.com/test.txt <--- it may pull "XYZ", only the later
method is being stored inside of the avp/var that I set on http_query.
I've tried everything from adjusting timeout, matching the end result in
the first with second that http serves, etc. The first one is a result that
is pulled dynamically, however the result is instantly rendered (no delay)
so is essentially the same amount of time between the two methods. At this
point the only difference I can see is the URI, one is on a subdomain, and
one is not, and one has two 'forward /' slashes, vs the other only has one
-- Any thoughts?
HTTP HEADERS
---------------------------------------------
AVP RESULT IS NOT STORED:
T +2.695119 KAMAILIO:50254 -> APACHE_SERVER_1:80 [AP]
GET /cnam/XXXXXXXXXX HTTP/1.1.
Host: APACHE_SERVER_1.
Accept: */*.
.
T +0.077494 APACHE_SERVER:80 -> KAMAILIO:50254 [AP]
HTTP/1.1 200 OK.
Date: Fri, 24 Jul 2009 03:28:44 GMT.
Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8e-fips-rhel5 PHP/
5.2.9.
X-Powered-By: PHP/5.2.9.
Set-Cookie: PHPSESSID=73ab9eba6da2d51883d386bce2bb5967; path=/.
Expires: Thu, 19 Nov 1981 08:52:00 GMT.
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0.
Pragma: no-cache.
Content-Length: 15.
Content-Type: text/html.
.
Cell Phone CA
AVP RESULT IS APPROPRIATELY STORED:
T +5.883544 KAMAILIO:34652 -> APACHE_SERVER_2:80 [AP]
GET /test.txt HTTP/1.1.
Host: APACHE_SERVER_2.
Accept: */*.
.
T +0.002655 APACHE_SERVER_2:80 -> KAMAILIO:34652 [AP]
HTTP/1.1 200 OK.
Date: Fri, 24 Jul 2009 03:29:14 GMT.
Server: Apache/2.2.11 (Unix) PHP/5.2.9.
Last-Modified: Fri, 24 Jul 2009 03:14:54 GMT.
ETag: "11a117-10-46f6b0215a780".
Accept-Ranges: bytes.
Content-Length: 16.
Content-Type: text/plain.
.
Cell Phone CA
Bugs item #2824350, was opened at 2009-07-20 17:49
Message generated for change (Comment added) made by axlh
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2824350&group_…
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: ver 1.5.x
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Alex Hermann (axlh)
Assigned to: Nobody/Anonymous (nobody)
Summary: Presence DB support completely broken
Initial Comment:
As subject.
commit 5840 did the damage
----------------------------------------------------------------------
>Comment By: Alex Hermann (axlh)
Date: 2009-07-24 14:43
Message:
I agree that choice is better, but it requires a major rewrite. Maybe a
common library can be created for all modules using DB and cache. Maybe
even throw in a memcached cache as a choice. And prepared statements in
case the DB is used during runtime.....
Just missing my favorite mode:
=4: cache only at runtime, DB save/restore at shutdown/init time.
----------------------------------------------------------------------
Comment By: Klaus Darilion (klaus_darilion)
Date: 2009-07-21 15:43
Message:
What about having a new parameter like userloc?
db_mode=
=0: no DB
=1: read from cache, write/update to cache and DB
=2: read from cache, write to cache and delayed write/update to DB
=3: db_only, no cache
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2009-07-21 14:00
Message:
Patch is ok, cleaner with new parameter rather than playing with falback2db
value. I will apply it.
Updating on timer is good for the cases of sudden crash, maybe a new mode
to skip timer updates and store only at shutdown is more appropriate.
----------------------------------------------------------------------
Comment By: Alex Hermann (axlh)
Date: 2009-07-21 13:11
Message:
I decided to dive into the code some more. It's a bit messy. There are 2
modes of operation determined by fallback2db. Both modes don't work
correctly, the documentation for the modes contradict the code it
contradicts ITSELF. So the first thing to do to fix this is to get the
desired behavior for both modes documented.
>From the code I deduced the following behavior:
fallback mode:
init: load from database, keep data in tables
runtime: insert/update records in table on timer event
shutdown: flush cache to db
non-fallback mode:
init: load from database, empty table
runtime: no inserts but try to update table (won't work because table is
emptied)
shutdown: flush cache to db (fails, because all entries are marked
NO_UPDATEDB_FLAG du to the (failed) updates at runtime). Result is an empty
table after shutdown.
The documentation says in fallback mode the cache isn't used. This is
impossible in the current code. Later in the docs it is said only on cache
misses, the db is used. This seems reasonable behavior.
The main question is: should the db be updated during runtime or only on
shutdown when in non-fallback mode?
Attached patch creates the following behavior:
for both modes:
init: load from database, keep table contents
runtime: update/insert into table on timer event
shutdown: update/insert final time
The only difference in the modes is on lookup (as documentation says) and
is untouched by this patch.
The non-fallback mode should be optimized by not updating the table if the
answer to the above question says so, but that is not as trivial as this
patch.
ps. I found some nice descriptive function names: update_db_subs() and
update_subs_db()....
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2009-07-20 19:52
Message:
fallback to db is in presence and the insert function is used by rls module
as well. I had no time to check the impact now.
With this idea, to be safe, fallback2db param has to be directed to
another variable, fallback2db initialized to 0 and set to param value in
each child, via child_init. Otherwise can be a conflict of loading order.
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2009-07-20 18:37
Message:
I don't know if changing the API and ABI is appropriate for the stable
series.
What about setting the fallback2db variable only AFTER loading the DB
contents?
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2009-07-20 18:22
Message:
The function is used in presence and rls modules. Does not look like big
changes to add a new param to specify the mode. Do you think of something
else?
----------------------------------------------------------------------
Comment By: Alex Hermann (axlh)
Date: 2009-07-20 18:07
Message:
New subscriptions don't get stored in the DB because the test for
'fallback2db' was wrong.
I just noticed the insert_shtable() function is also used to load from DB
initially, so my patch is wrong. Fix is a bit more non-trivial.
The problem is that the function is used for both DB-load at startup and
new subscriptions during runtime. The db_flag in the hash table record
needs to be INSERTDB_FLAG during runtime, and NO_UPDATEDB_FLAG for initial
load.
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2009-07-20 17:53
Message:
Please provide a bit more details of what got broken.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2824350&group_…
Patches item #2826542, was opened at 2009-07-24 14:27
Message generated for change (Tracker Item Submitted) made by axlh
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=2826542&group_…
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: ver 1.5.x
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Alex Hermann (axlh)
Assigned to: Nobody/Anonymous (nobody)
Summary: Add id parameter to pua_mi's send_publish
Initial Comment:
When using presence with dialog-info, one needs to be able to specify an id, otherwise presentity from different calls for the same presentity-uri will overwrite each other. This patch makes it possible to specify an 'id' in the MI interface for send_publish. Unfortunately it breaks backward compatibility but it's the only way to use dialog-info with MI without having to manually store a the state of the ETag in the proxy.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=2826542&group_…
Bugs item #2826540, was opened at 2009-07-24 14:22
Message generated for change (Tracker Item Submitted) made by axlh
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2826540&group_…
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: ver 1.5.x
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Alex Hermann (axlh)
Assigned to: Nobody/Anonymous (nobody)
Summary: Presence DB save fails after one failure
Initial Comment:
After one record has failed to insert/update into the database, remaining records aren't tried.
The attached patch tries to insert/update the remaining records in the hashtable after a failure.
This patch surfaced bug #2824350 which led to a lot of failures due to duplicate keys.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2826540&group_…
Hello,
latest master branch of sip-router includes support to execute an event
route when a request is generated by tm module. Right now is a compile
option:
make EXTRA_DEFS="-DWITH_EVENT_LOCAL_REQUEST" cfg
make all
make install
The functionality covers what was previously provided by local_route in
Kamailio 1.5. In addition, parts of the core were updated to allow fine
control of building the output buffer for requests.
Testing and feedback is very much appreciated.
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://www.asipto.com/index.php/sip-router-bootcamp/