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? 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:te...@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:te...@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. >>>>>> >>>>>>> >>>>>>> Cheers, >>>>>>> Peter >>>>>>> >>>>>>> >>>>>>> On Thu, Apr 17, 2014 at 4:04 PM, Roberto Fichera <ker...@tekno-soft.it >>>>>>> <mailto:ker...@tekno-soft.it>> wrote: >>>>>>> >>>>>>> On 04/17/2014 10:36 AM, Roberto Fichera wrote: >>>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> > On 04/16/2014 07:15 PM, Roberto Fichera wrote: >>>>>>> > >>>>>>> > Hi All, >>>>>>> > >>>>>>> >> On 04/16/2014 06:53 PM, Daniel-Constantin Mierla wrote: >>>>>>> >>> Hello, >>>>>>> >> Ciao Daniel, >>>>>>> >> >>>>>>> >>> most likely the messages are looped back, be sure you allow >>>>>>> requests from 'myself' without authentication. >>>>>>> >>> >>>>>>> >>> You can watch loopback interface with ngrep to see if the >>>>>>> messages are sent out. >>>>>>> >> Yep! Allowing requests from myself solved the problem! Thanks! >>>>>>> >> >>>>>>> >> Another thing regarding MSILO, I would like to preserve some >>>>>>> custom header fields >>>>>>> >> for both instant message and notification. How can I do it? >>>>>>> > I was able to solve this issue too, pretty straight I mean, there >>>>>>> is the extra_hdrs_avp param >>>>>>> > which did the trick. BTW, is there a way to send back the >>>>>>> notification to the sender that >>>>>>> > the message has been sent correctly via m_dump(), so to get a 200 >>>>>>> about the given >>>>>>> > m_dump()ed message? >>>>>>> > >>>>>>> >>>>>>> I think that this can be solved in a different way, the idea is to >>>>>>> add an event_route for the msilo >>>>>>> module so that we get notified for each m_dump()ed message about >>>>>>> the given IM status and >>>>>>> then handle it in the cfg file. So, looking at the code within >>>>>>> m_tm_callback() it seems that it's >>>>>>> right place where to add such feature. Since I'm not a kamailio >>>>>>> developer but I've quite long >>>>>>> time experience in C coding, does anyone can show/point me to some >>>>>>> example about >>>>>>> how to do that? >>>>>>> >>>>>>> Thanks in advance, >>>>>>> Roberto Fichera. >>>>>>> >>>>>>> _______________________________________________ >>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing >>>>>>> list >>>>>>> sr-users@lists.sip-router.org <mailto: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 >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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 >>>> >>>> >>>> -- >>>> Daniel-Constantin Mierla - http://www.asipto.com >>>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda >>>> >>>> >>>> _______________________________________________ >>>> 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 > > -- > Daniel-Constantin Mierla - http://www.asipto.com > http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda > > > _______________________________________________ > 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