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 <mico...@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 < <jayesh1...@gmail.com> > jayesh1...@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 < >> <mico...@gmail.com>mico...@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-us...@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@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 > >
_______________________________________________ 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