[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