On 05/26/2014 01:04 PM, Roberto
Fichera wrote:
Ciao,
[...]
On 26/05/14 12:13, Roberto
Fichera wrote:
On 05/26/2014 12:03 PM,
Daniel-Constantin Mierla wrote:
Hello,
Ciao!
good that you sent a reminder -- I checked while
offline traveling, but then forgot to follow up.
I expect that ps->req is null in this case, because
there is no request received by kamailio. That results
in xlog not doing anything.
In other words, I expect the event route being
executed, just the action inside is doesn't do
anything in this case.
Does this mean that I'll have to set a "faked"
ps->req in order to get the event route executed?
that's the safe way. The event route is executed, but many
functions that you can use inside config routing blocks
require a non-null sip message structure. It is the case
of xlog() for example, which simply returns -1 if request
is null.
Ok! Can you suggest the safest and reasonable way to setup
the request for this case?
Ah! No! Wait! The event route is executed within a tm callback
via tmb.t_request() so I'd expect a valid ps->req,
don't you think so?
I've found how to change the code ... just testing the logic.
I'll get back to you in case.
After a while I've found that I can pass a request using the
uac_r.cbp field, so I've fixed the callback
to use the passed fields instead a straight int (previously
mid==message id) but I'm not sure how to
build a fake sip_msg request regarding the given msilo dumped msg,
could you please give me a
tips how to do so?
Cheers,
Roberto Fichera.
Cheer,
Roberto Fichera.
Cheers,
Roberto Fichera.
Cheers, Daniel
Cheers,
Roberto Fichera.
Cheers,
Daniel
On 26/05/14 11:40,
Roberto Fichera wrote:
On 05/22/2014 09:08 AM,
Roberto Fichera wrote:
On 05/21/2014 11:15
PM, Daniel-Constantin Mierla wrote:
Hello,
Ciao Daniel,
have you had time to look at the problem below?
Cheers,
Roberto Fichera.
Ciao,
can you send the
log messages printed with debug=3?
Yes! Sure! Here it is:
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8454]: DEBUG: <core>
[receive.c:296]: receive_msg(): receive_msg:
cleaning up
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:633]: parse_msg(): SIP Reply
(status):
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:635]: parse_msg(): version:
<SIP/2.0>
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:637]: parse_msg(): status:
<202>
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:639]: parse_msg(): reason:
<Accepted>
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_via.c:1284]: parse_via_param():
Found param type 232, <branch> =
<z9hG4bK016e.a6c662d4000000000000000....0>;
state=6
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_via.c:1284]: parse_via_param():
Found param type 235, <rport> =
<1169>; state=6
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_via.c:1284]: parse_via_param():
Found param type 234, <received> =
<xx.xx.xx.xx>; state=16
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_via.c:2672]: parse_via(): end of
header reached, state=5
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:513]: parse_headers():
parse_headers: Via found, flags=2
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:515]: parse_headers():
parse_headers: this is the first via
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[receive.c:152]: receive_msg(): After parse_msg...
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_lookup.c:1072]: t_check_msg(): DEBUG:
t_check_msg: msg id=1 global id=0 T
start=0xffffffffffffffff
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_addr_spec.c:176]: parse_to_param():
DEBUG: add_param:
tag=74b38630e6be28bab2ebe17319971f33-c57e
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/parse_addr_spec.c:893]: parse_addr_spec():
end of header reached, state=29
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:190]: get_hdr_field(): DEBUG:
get_hdr_field: <To> [88]; uri=[sip:test1@test.com]
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:192]: get_hdr_field(): DEBUG:
to body [<sip:test1@test.com>]
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[parser/msg_parser.c:170]: get_hdr_field():
get_hdr_field: cseq <CSeq>: <10>
<MESSAGE>
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_lookup.c:949]: t_reply_matching(): DEBUG:
t_reply_matching: hash 58896 label 0 branch 0
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_lookup.c:1004]: t_reply_matching(): DEBUG:
t_reply_matching: reply matched
(T=0x7f21ba974408)!
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_lookup.c:1141]: t_check_msg(): DEBUG:
t_check_msg: msg id=1 global id=1 T
end=0x7f21ba974408
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_reply.c:2206]: reply_received(): DEBUG:
reply_received: org. status uas=0, uac[0]=0
local=2 is_invite=0)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_reply.c:1304]: t_should_relay_response():
->>>>>>>>> T_code=0,
new_code=202
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_reply.c:2086]: local_reply(): DEBUG:
local_reply: branch=0, save=0, winner=0
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_reply.c:2123]: local_reply(): DEBUG: local
transaction completed
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_hooks.c:288]: run_trans_callbacks_internal():
DBG: trans=0x7f21ba974408, callback type 1024, id
0 entered
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: msilo
[msilo.c:1327]: m_tm_callback(): completed with
status 202 [mid: 139782841221704/4]
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: msilo
[msilo.c:1340]: m_tm_callback(): message <4>
was sent successfully
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: msilo
[ms_msg_list.c:236]: msg_list_set_flag(): mid:4
fl:4
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: msilo
[msilo.c:1350]: m_tm_callback(): executing
event_route[msilo:on-delivered] (2)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: tm
[t_reply.c:1663]: cleanup_uac_timers(): DEBUG:
cleanup_uac_timers: RETR/FR timers reset
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[usr_avp.c:644]: destroy_avp_list():
DEBUG:destroy_avp_list: destroying list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[xavp.c:448]: xavp_destroy_list(): destroying xavp
list (nil)
May 22 08:58:04 dragon.tekno-soft.it
/usr/sbin/kamailio[8436]: DEBUG: <core>
[receive.c:296]: receive_msg(): receive_msg:
cleaning up
May 22 08:58:08 dragon.tekno-soft.it
/usr/sbin/kamailio[8441]: DEBUG: pike
[timer.c:77]: check_and_split_timer(): splitting
0x7f21ba98dab0(0x7f21ba7b15f8,0x7f21ba7b15f8)node=0x7f21ba98daa0
May 22 08:58:08 dragon.tekno-soft.it
/usr/sbin/kamailio[8441]: DEBUG: pike
[timer.c:102]: check_and_split_timer(): succ. to
split
(h=0x7f21ba7b15f8)(p=0x7f21ba7b15f8,n=0x7f21ba7b15f8)
May 22 08:58:08 dragon.tekno-soft.it
/usr/sbin/kamailio[8441]: DEBUG: pike
[pike_funcs.c:234]: clean_routine(): clean node
0x7f21ba98daa0 (kids=(nil); hits=[0,0];leaf=[0,0])
May 22 08:58:08 dragon.tekno-soft.it
/usr/sbin/kamailio[8441]: DEBUG: pike
[pike_funcs.c:265]: clean_routine(): rmv node
0x7f21ba98daa0[192]
May 22 08:58:08 dragon.tekno-soft.it
/usr/sbin/kamailio[8441]: DEBUG: pike
[ip_tree.c:364]: remove_node(): destroying node
0x7f21ba98daa0
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8454]: DEBUG: <core>
[io_wait.h:617]: io_watch_del(): DBG: io_watch_del
(0x8eb2e0, 9, -1, 0x10) fd_no=2 called
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8454]: DEBUG: <core>
[tcp_read.c:1437]: release_tcpconn(): releasing
con 0x7f21ba9420c0, state 1, fd=9, id=2
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8454]: DEBUG: <core>
[tcp_read.c:1438]: release_tcpconn(): extra_data
0x7f21ba941028
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8456]: DEBUG: <core>
[tcp_main.c:3385]: handle_tcp_child():
handle_tcp_child: reader response= 7f21ba9420c0, 1
from 2
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8456]: DEBUG: <core>
[io_wait.h:390]: io_watch_add(): DBG:
io_watch_add(0x893040, 28, 2, 0x7f21ba9420c0),
fd_no=20
May 22 08:58:10 dragon.tekno-soft.it
/usr/sbin/kamailio[8456]: DEBUG: <core>
[tcp_main.c:3515]: handle_tcp_child():
handle_tcp_child: CONN_RELEASE 0x7f21ba9420c0
refcnt= 1
Cheers,
Roberto Fichera.
Cheers,
Daniel
On 21/05/14 18:37, Roberto Fichera wrote:
On 05/21/2014
09:08 AM, Roberto Fichera wrote:
Hi There,
On 05/20/2014
09:15 PM, Peter Villeneuve wrote:
Hi Roberto,
Hi Peter,
Did you ever figure out how to do
it?
I'd be interested too.
Not yet! I tried other ways, barely
workarounds, but I guess I'll have to go
into this
quite soon because it is the straight way to
go. The main problem is the lack of
my knowledge of kamailio API so I'll have to
study a bit some code in order to understand
how to use it.
BTW the idea is to trigger an event route
were I'd like to set all the info regarding
the dispatched message including the result
of the delivering. I don't know if is
possible
but the best would be to set all the
pseudo-variables so that such event route
will be
in the right context of the given MSILO
message.
So, any advice regarding the API would
definitively help and put me in the right
direction.
Actually I've started to play with the above
idea, so below you will find my current
implementation
which seems executed because I see the
LM_DBG() log but the code within the event
route but
the corresponding script code does not.
Any help?
Cheers,
Roberto Fichera.
event_route [msilo:on-delivered] {
xlog("L_INFO", "MSILO event on-delivered
<$fu> to <$ru>\n");
}
diff --git a/modules/msilo/msilo.c
b/modules/msilo/msilo.c
index 903b3cf..742c48d 100644
--- a/modules/msilo/msilo.c
+++ b/modules/msilo/msilo.c
@@ -281,6 +281,9 @@ static int
bind_msilo(msilo_api_t* api)
return 0;
}
+/* where to go for the local request route
("msilo:on-delivered") */
+int msilo_event_on_delivered=-1; /* default
disabled */
+
/**
* init module function
*/
@@ -480,6 +483,11 @@ static int mod_init(void)
if(ms_outbound_proxy.s!=NULL)
ms_outbound_proxy.len =
strlen(ms_outbound_proxy.s);
+ /* check if the on-delivered route
event exists or not */
+
msilo_event_on_delivered=route_lookup(&event_rt,
"msilo:on-delivered");
+ if (msilo_event_on_delivered>=0
&&
event_rt.rlist[msilo_event_on_delivered]==0)
+ msilo_event_on_delivered=-1;
/* disable */
+
return 0;
}
@@ -1330,6 +1338,26 @@ void m_tm_callback(
struct cell *t, int type, struct tmcb_params
*ps)
LM_DBG("message <%d> was sent
successfully\n", *((int*)ps->param));
msg_list_set_flag(ml,
*((int*)ps->param), MS_MSG_DONE);
+ /* execute the msilo:on-delivered
event route */
+
if(unlikely(msilo_event_on_delivered>=0))
+ {
+ int sflag_bk;
+ int backup_route_type;
+ struct run_act_ctx ctx;
+
+ LM_DBG("executing
event_route[msilo:on-delivered] (%d)\n",
msilo_event_on_delivered);
+
+ sflag_bk = getsflags();
+ backup_route_type =
get_route_type();
+
+ set_route_type(EVENT_ROUTE);
+
init_run_actions_ctx(&ctx);
+
run_top_route(event_rt.rlist[msilo_event_on_delivered],
ps->req, &ctx);
+
+
set_route_type(backup_route_type);
+ setsflagsval(sflag_bk);
+ }
+
done:
return;
}
Cheers,
Roberto Fichera.
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users