On 06/10/2014 10:20 AM, Daniel-Constantin Mierla wrote: > Hello, Hi,
> the parse from error don't seem to be from parse_msg(). > > Can you print the uac buffer and send it over here to see if it is something > wrong there? Jun 10 09:32:29 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29663]: DEBUG: msilo [msilo.c:1403]: m_tm_callback_on_delivered_event(): t->uac[0].request.buffer: MESSAGE sip:te...@test.com SIP/2.0 I've used LM_DBG() to print it. > You get a crash as well, very likely due to the shm free at the end. The rest of the code hasn't changed, so I kept all the shm_malloc(), actually I do not expect them to fail. Cheers, Roberto Fichera. > > Cheers, > Daniel > > On 10/06/14 09:40, Roberto Fichera wrote: >> On 06/09/2014 08:55 PM, Daniel-Constantin Mierla wrote: >>> Hello, >> >> Hi, >> >>> the $ru should be the same as $tu in this case. $ru will change when the >>> message loops back and there is a >>> lookup("location") in the config, but in the callback you don't get it. >>> >>> If you really want to get the content of the sip MESSAGE request sent out, >>> you can find it in the >>> t->uac[0].request.buffer (iirc) as plain text. you can take it from there >>> and parse it in a sip_msg_t structure >>> inside the callback. But with the SIP reply structure you may get what you >>> need (if you just need $ru which is >>> available in $tu). >> >> I've tried your suggestion but looks like something is missing in the >> buffer, the code I've added just for testing is >> the following: >> >> /* 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; >> struct sip_msg req; >> >> -->>> if (parse_msg(t->uac[0].request.buffer, >> t->uac[0].request.buffer_len, &req) != 0) >> { >> LM_ERR("parse_msg failed\n"); >> goto done; >> } >> >> 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); >> LM_DBG("event_route[msilo:on-delivered] req=%p)\n", &req); >> run_top_route(event_rt.rlist[msilo_event_on_delivered], &req, >> &ctx); >> >> set_route_type(backup_route_type); >> setsflagsval(sflag_bk); >> >> shm_free(event->req->buf); >> shm_free(event->req); >> shm_free(event); >> } >> >> but doesn't properly work: >> >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29231]: DEBUG: >> msilo [msilo.c:1410]: >> m_tm_callback_on_delivered_event(): executing >> event_route[msilo:on-delivered] (1) >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29231]: DEBUG: >> msilo [msilo.c:1417]: >> m_tm_callback_on_delivered_event(): event_route[msilo:on-delivered] >> event->req=0xbf81b830) >> ---->>>> Jun 10 08:32:01 ip-10-227-0-26.localdomain >> /usr/sbin/kamailio[29231]: ERROR: <core> >> [parser/parse_from.c:58]: parse_from_header(): ERROR:parse_from_header: bad >> msg or missing FROM header >> ---->>>> Jun 10 08:32:01 ip-10-227-0-26.localdomain >> /usr/sbin/kamailio[29231]: ERROR: pv [pv_core.c:449]: >> pv_get_from_attr(): cannot parse From header >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29231]: INFO: >> <script>: MSILO event on-delivered >> <<null>> to <??????? >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29250]: : >> <core> [pass_fd.c:293]: receive_fd(): ERROR: >> receive_fd: EOF on 13 >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29227]: ALERT: >> <core> [main.c:775]: handle_sigs(): >> child process 29231 exited by a signal 11 >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29250]: DEBUG: >> <core> [tcp_main.c:3595]: >> handle_ser_child(): DBG: handle_ser_child: dead child 2, pid 29231 (shutting >> down?) >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29227]: ALERT: >> <core> [main.c:778]: handle_sigs(): core >> was not generated >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29250]: DEBUG: >> <core> [io_wait.h:617]: io_watch_del(): >> DBG: io_watch_del (0x82cf640, 13, -1, 0x0) fd_no=23 called >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29227]: INFO: >> <core> [main.c:790]: handle_sigs(): INFO: >> terminating due to SIGCHLD >> Jun 10 08:32:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[29249]: INFO: >> <core> [main.c:841]: sig_usr(): INFO: >> signal 15 received >> >> Cheers, >> Roberto Fichera. >> >>> >>> Cheers, >>> Daniel >>> >>> On 09/06/14 18:29, Roberto Fichera wrote: >>>> On 06/09/2014 06:16 PM, Daniel-Constantin Mierla wrote: >>>>> [...] >>>> >>>>> ps->req is null, because there is no incoming request, but you should >>>>> have ps->rpl available if there is a 200ok. >>>> >>>> Which is my case! Only triggered once a 200ok has been received! Anyway it >>>> seems to work because the event route >>>> get executed but $ru seems not defined: >>>> >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [msilo.c:1378]: >>>> m_tm_callback_on_delivered_event(): >>>>>>> msilo_notification_event >>>> 0xb30cb748 >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [msilo.c:1380]: >>>> m_tm_callback_on_delivered_event(): completed with status 200 [mid: 148] >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [msilo.c:1393]: >>>> m_tm_callback_on_delivered_event(): message <148> was sent successfully >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [ms_msg_list.c:236]: >>>> msg_list_set_flag(): mid:148 fl:4 >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [msilo.c:1403]: >>>> m_tm_callback_on_delivered_event(): executing >>>> event_route[msilo:on-delivered] (1) >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: msilo [msilo.c:1410]: >>>> m_tm_callback_on_delivered_event(): event_route[msilo:on-delivered] >>>> event->req=0xb7275680) >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: <core> [parser/parse_addr_spec.c:176]: >>>> parse_to_param(): DEBUG: add_param: >>>> tag=90a2f67ea18c2dbc1dd6d5c5f690acb0-25e2 >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: <core> [parser/parse_addr_spec.c:893]: >>>> parse_addr_spec(): end of header reached, state=29 >>>> ---->>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain >>>> /usr/sbin/kamailio[25288]: INFO: <script>: MSILO event >>>> on-delivered <sip:te...@test.com> to <<null>> >>>> Jun 09 17:25:01 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25288]: >>>> DEBUG: tm [t_reply.c:1663]: >>>> cleanup_uac_timers(): DEBUG: cleanup_uac_timers: RETR/FR timers reset >>>> >>>> >>>> Cheers, >>>> Roberto Fichera. >>>> >>>>> >>>>> Cheers, >>>>> Daniel >>>>> >>>>> On 09/06/14 18:12, Roberto Fichera wrote: >>>>>> On 06/09/2014 06:03 PM, Roberto Fichera wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>>> On 06/09/2014 05:49 PM, Daniel-Constantin Mierla wrote: >>>>>>>> Hello, >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>>> On 09/06/14 17:41, Roberto Fichera wrote: >>>>>>>>> [...] >>>>>>>>> >>>>>>>>>> your patch seems a bit to complex -- I didn't figure out why you >>>>>>>>>> store the message in pkg memory. >>>>>>>>> >>>>>>>>> Ok! So I will need to shm_malloc() the memory in such case, right? >>>>>>>> I don't get why you need to do that at all. If you need to access >>>>>>>> from, to, etc..., you can get them from the >>>>>>>> SIP response. You go in dangerous zone as you do that cloning. >>>>>>> >>>>>>> The idea was to set a sip_msg just to have all the pseudo-variable >>>>>>> available >>>>>>> within the event route and nothing else. >>>>>>> >>>>>>>> Because you want to execute the event route on 200ok, the best is to >>>>>>>> run the event route with the SIP response >>>>>>>> structure. >>>>>>> >>>>>>> At the beginning this was my choice, but I'd always got ps->req = NULL >>>>>>> in the callback tmcb_params >>>>>>> hence the event route wasn't executed. But I'll re-try it just to be >>>>>>> sure. >>>>>> >>>>>> I can confirm, I'm always getting ps->req = NULL >>>>>> >>>>>> un 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [parser/msg_parser.c:170]: >>>>>> get_hdr_field(): get_hdr_field: cseq <CSeq>: <10> <MESSAGE> >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_lookup.c:949]: >>>>>> t_reply_matching(): DEBUG: t_reply_matching: hash 39390 label 0 branch 0 >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_lookup.c:1004]: >>>>>> t_reply_matching(): DEBUG: t_reply_matching: reply matched >>>>>> (T=0xb2f7ebfc)! >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_lookup.c:1141]: t_check_msg(): >>>>>> DEBUG: t_check_msg: msg id=1 global id=1 T end=0xb2f7ebfc >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_reply.c:2206]: >>>>>> reply_received(): DEBUG: reply_received: org. status uas=0, uac[0]=0 >>>>>> local=2 is_invite=0) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_reply.c:1304]: >>>>>> t_should_relay_response(): ->>>>>>>>> T_code=0, new_code=200 >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_reply.c:2086]: local_reply(): >>>>>> DEBUG: local_reply: branch=0, save=0, winner=0 >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_reply.c:2123]: local_reply(): >>>>>> DEBUG: local transaction completed >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_hooks.c:288]: >>>>>> run_trans_callbacks_internal(): DBG: trans=0xb2f7ebfc, callback type >>>>>> 1024, id 0 entered >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: msilo [msilo.c:1378]: >>>>>> m_tm_callback_on_delivered_event(): >>>>>>> msilo_notification_event >>>>>> 0xb301669c >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: msilo [msilo.c:1380]: >>>>>> m_tm_callback_on_delivered_event(): completed with status 200 [mid: 147] >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: msilo [msilo.c:1393]: >>>>>> m_tm_callback_on_delivered_event(): message <147> was sent successfully >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: msilo [ms_msg_list.c:236]: >>>>>> msg_list_set_flag(): mid:147 fl:4 >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: msilo [msilo.c:1403]: >>>>>> m_tm_callback_on_delivered_event(): executing >>>>>> event_route[msilo:on-delivered] (1) >>>>>> --->>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain >>>>>> /usr/sbin/kamailio[25089]: DEBUG: msilo [msilo.c:1410]: >>>>>> m_tm_callback_on_delivered_event(): event_route[msilo:on-delivered] >>>>>> ps->req=(nil)) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: tm [t_reply.c:1663]: >>>>>> cleanup_uac_timers(): DEBUG: cleanup_uac_timers: RETR/FR timers reset >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [usr_avp.c:644]: >>>>>> destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [xavp.c:448]: >>>>>> xavp_destroy_list(): destroying xavp list (nil) >>>>>> Jun 09 17:06:38 ip-10-227-0-26.localdomain /usr/sbin/kamailio[25089]: >>>>>> DEBUG: <core> [receive.c:296]: >>>>>> receive_msg(): receive_msg: cleaning up >>>>>> >>>>>> >>>>>>> >>>>>>> BTW! using shm_malloc() I was finally able to execute the event route >>>>>>> in the script with all the >>>>>>> pseudo-variable correctly set! >>>>>> >>>>>> Attached you will find the patch I'm actually using. >>>>>> >>>>>> Cheers, >>>>>> Roberto Fichera. >>>>>> >>>>>>> >>>>>>> Cheers, >>>>>>> Roberto Fichera. >>>>>>> >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Daniel >> >> >> >> _______________________________________________ >> 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