[SR-Users] MSILO add on deliver event route still no joy

Daniel-Constantin Mierla miconda at gmail.com
Tue Jun 10 10:20:04 CEST 2014


Hello,

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?

You get a crash as well, very likely due to the shm free at the end.

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:test1 at 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 at 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140610/fface7f6/attachment.html>


More information about the sr-users mailing list