<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    I will look if there are options in libev to buffer data or try to
    implement a buffering mechanism locally for such cases.<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 14/09/15 23:00, Jayesh Nambiar
      wrote:<br>
    </div>
    <blockquote
cite="mid:CANAYoztpwV02-jBjahsqucQ2L9-0OB_0DR_B4Ouq=p5jrFnCgQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hello Daniel,
        <div>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:</div>
        <div>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. </div>
        <div>But if the first packet contains:</div>
        <div>12:Hello World!, 12:Hello</div>
        <div>And Second Packet contains:</div>
        <div> World!, 12:Hello World!</div>
        <div>the event route is invoked only once !!</div>
        <div><br>
        </div>
        <div>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.</div>
        <div>This definitely looks like a bug which makes it not very
          reliable at large scale deployments. Would really appreciate
          your inputs on this. Thanks;</div>
        <div><br>
        </div>
        <div>- Jayesh</div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Thu, Sep 10, 2015 at 4:01 PM, Jayesh
          Nambiar <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:jayesh1017@gmail.com" target="_blank">jayesh1017@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">Hi Daniel,
              <div>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??</div>
              <div><br>
              </div>
              <div>Thanks,</div>
              <div><br>
              </div>
              <div>- Jayesh</div>
            </div>
            <div class="HOEnZb">
              <div class="h5">
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">On Thu, Sep 10, 2015 at 1:29
                    PM, Daniel-Constantin Mierla <span dir="ltr"><<a
                        moz-do-not-send="true"
                        href="mailto:miconda@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:miconda@gmail.com">miconda@gmail.com</a></a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div bgcolor="#FFFFFF" text="#000000"> Hello,<br>
                        <br>
                        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.<br>
                        <br>
                        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.<br>
                        <br>
                        Cheers,<br>
                        Daniel
                        <div>
                          <div><br>
                            <br>
                            <div>On 09/09/15 22:01, Jayesh Nambiar
                              wrote:<br>
                            </div>
                          </div>
                        </div>
                        <blockquote type="cite">
                          <div>
                            <div>
                              <div dir="ltr">Hello,
                                <div>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(<a
                                    moz-do-not-send="true"
                                    href="http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs"
                                    target="_blank"><a class="moz-txt-link-freetext" href="http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs">http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs</a></a>)
                                  to build the node.js app consuming
                                  events.</div>
                                <div>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.</div>
                                <div>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 !!</div>
                                <div>I also referred cgrates client over
                                  evapi example which is written in GO,
                                  but I couldnt find them handling TCP
                                  streams clearly either.</div>
                                <div>I'd really appreciate some expert
                                  suggestion here to make an informed
                                  decision on using the evapi module for
                                  a large scale solution.</div>
                                <div><br>
                                </div>
                                <div>Thanks,</div>
                                <div><br>
                                </div>
                                <div>- Jayesh</div>
                                <div><br>
                                </div>
                                <div><br>
                                </div>
                              </div>
                              <br>
                              <fieldset></fieldset>
                              <br>
                            </div>
                          </div>
                          <pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a moz-do-not-send="true" href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><span><font color="#888888">
</font></span></pre>
                          <span><font color="#888888"> </font></span></blockquote>
                        <span><font color="#888888"> <br>
                            <pre cols="72">-- 
Daniel-Constantin Mierla
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
Kamailio Advanced Training, Sep 28-30, 2015, in Berlin - <a moz-do-not-send="true" href="http://asipto.com/u/kat" target="_blank">http://asipto.com/u/kat</a></pre>
                          </font></span></div>
                      <br>
                      _______________________________________________<br>
                      SIP Express Router (SER) and Kamailio (OpenSER) -
                      sr-users mailing list<br>
                      <a moz-do-not-send="true"
                        href="mailto:sr-users@lists.sip-router.org"
                        target="_blank">sr-users@lists.sip-router.org</a><br>
                      <a moz-do-not-send="true"
                        href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
                        rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                      <br>
                    </blockquote>
                  </div>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
Kamailio Advanced Training, Sep 28-30, 2015, in Berlin - <a class="moz-txt-link-freetext" href="http://asipto.com/u/kat">http://asipto.com/u/kat</a></pre>
  </body>
</html>