Will have this tested by tomorrow and will get back to you. Thanks.
- Jayesh
On Fri, Sep 18, 2015 at 1:41 PM, Daniel-Constantin Mierla <miconda(a)gmail.com
wrote:
> Hello,
>
> I just pushed a patch to master branch that should cope with partial data
> received on tcp connection. No time to test at all, therefore any feedback
> will be appreciated.
>
> Cheers,
> Daniel
>
>
> On 15/09/15 14:52, Daniel-Constantin Mierla wrote:
>
> Hello,
>
> I will look if there are options in libev to buffer data or try to
> implement a buffering mechanism locally for such cases.
>
> Cheers,
> Daniel
>
> On 14/09/15 23:00, Jayesh Nambiar wrote:
>
> Hello Daniel,
> After further testing with evapi module, I figured that when Netstrings
> are used, an event route is invoked individually for each message even if
> if multiple netstring messages are received in a single TCP packet. But
> this doesn't work effectively when a single proper message is split-up in
> two packets. For Example, if a message arrives as:
> 12:Hello World!, 12:Hello World!, 12:Hello World! in a single packet,
> kamailio properly invokes the event route "evapi:message-received" thrice
> for every individual proper netstring message.
> But if the first packet contains:
> 12:Hello World!, 12:Hello
> And Second Packet contains:
> World!, 12:Hello World!
> the event route is invoked only once !!
>
> The above pattern is very much possible while sending and receiving
> packets over TCP Socket. Our tests for receiving an approximately 150 byte
> message over evapi socket at the rate of roughly 1000cps causes a lot of
> real events to be missed because of the above problem. You can never be
> sure when TCP will split messages in different chunks.
> This definitely looks like a bug which makes it not very reliable at large
> scale deployments. Would really appreciate your inputs on this. Thanks;
>
> - Jayesh
>
>
>
> On Thu, Sep 10, 2015 at 4:01 PM, Jayesh Nambiar < <jayesh1017(a)gmail.com>
> jayesh1017(a)gmail.com
wrote:
>
>> Hi Daniel,
>> Thanks for the quick response. So if I do not use Netstrings, does
>> Kamailio allow me to create a custom logic in the script. For eg. if I
>> decide to use newline as a delimiter, can I keep buffering the message
>> until I encounter the delimiter from the event route and then execute
>> whatever I have to within the script??
>>
>> Thanks,
>>
>> - Jayesh
>>
>> On Thu, Sep 10, 2015 at 1:29 PM, Daniel-Constantin Mierla <
>> <miconda@gmail.com>miconda@gmail.com
wrote:
>>
>>> Hello,
>>>
>>> tcb is stream protocol and several messages can be queued on the pipe at
>>> the same time. That is the reason for netstring format, to be able to
>>> easily detect the boundaries of each message. If netstring format is
>>> enabled and kamailio receives several messages at once, it splits them and
>>> for each is executing the event route.
>>>
>>> If netstring format is not used, the kamailio is executing the event
>>> route with the entire content that was read at once from the tcp connection.
>>>
>>> Cheers,
>>> Daniel
>>>
>>>
>>> On 09/09/15 22:01, Jayesh Nambiar wrote:
>>>
>>> Hello,
>>> I'm exploring the evapi module for my kamailio to interface with an
>>> external node.js app for third party stuff like AAA, billing engine tasks,
>>> notifications and so on. I followed and took some ideas from the rtjson and
>>> evapi tutorial found here(
>>>
http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs) to build
>>> the node.js app consuming events.
>>> When I stress tested the scenario using SIPp and tried sending a lot of
>>> events at 300-350cps from Kamailio, I noticed that at times the client is
>>> receiving 2-3 events in a single message together although I do
>>> event_sync_relay once per SIP message received and have netstrings enabled.
>>> I believe this is a typical behavior of TCP and needs to be handled by the
>>> client using some kind of Netstring handler. Please correct me if I'm
wrong.
>>> And hence I'd like to know what particularly needs to be taken care of
>>> while writing a client that is listening for events on raw tcp socket and
>>> how does kamailio handle this situation while receiving messages over TCP
>>> socket?? Does kamailio recognize the end of netstring properly on
>>> evapi:message-received and give exactly one message to take care of on
>>> every "message-received" event or should that be handled in the
script
>>> somewhere !!
>>> I also referred cgrates client over evapi example which is written in
>>> GO, but I couldnt find them handling TCP streams clearly either.
>>> I'd really appreciate some expert suggestion here to make an informed
>>> decision on using the evapi module for a large scale solution.
>>>
>>> Thanks,
>>>
>>> - Jayesh
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
listsr-users@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>> --
>>> Daniel-Constantin
Mierlahttp://twitter.com/#!/miconda -
http://www.linkedin.com/in/miconda
>>> Book: SIP Routing With Kamailio -
http://www.asipto.com
>>> Kamailio Advanced Training, Sep 28-30, 2015, in Berlin -
http://asipto.com/u/kat
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>> sr-users(a)lists.sip-router.org
>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>
>
> --
> Daniel-Constantin
Mierlahttp://twitter.com/#!/miconda -
http://www.linkedin.com/in/miconda
> Book: SIP Routing With Kamailio -
http://www.asipto.com
> Kamailio Advanced Training, Sep 28-30, 2015, in Berlin -
http://asipto.com/u/kat
>
>
> --
> Daniel-Constantin
Mierlahttp://twitter.com/#!/miconda -
http://www.linkedin.com/in/miconda
> Book: SIP Routing With Kamailio -
http://www.asipto.com
> Kamailio Advanced Training, Sep 28-30, 2015, in Berlin -
http://asipto.com/u/kat
>
>