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

Roberto Fichera kernel at tekno-soft.it
Tue Jun 10 10:37:03 CEST 2014


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

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


More information about the sr-users mailing list