0 Replies Latest reply on Aug 28, 2009 5:57 PM by 715547

    reordering of BYE and ACK

      i'm using OCCAS 4.0 in conjunction with eyeBeam's x-lite UA and experience that OCCAS reorders the processing of a BYE and ACK in a way that the BYE is processed before the ACK althought the ACK is received earlier.

      the test servlet is pretty straight forward

      public class TestByeAck extends SipServlet
      private static final Logger LOG = Logger.getLogger(TestByeAck.class);
      private boolean m_GotACK = false;

      protected void doInvite(SipServletRequest a_Request)
           throws ServletException, IOException
      LOG.debug("doInvite: done");

      protected void doAck(SipServletRequest a_Request)
           throws ServletException, IOException
      m_GotACK = true;
      LOG.debug("doAck: done");

      protected void doBye(SipServletRequest a_Request)
           throws ServletException, IOException
      if (m_GotACK)
      LOG.debug("doBye: OK");
      LOG.debug("doBye: REQUEST PENDING");
      LOG.debug("doBye: done");

      now the ethereal trace shows.

      OCCAS <--- INVITE (SDP) ---- UA
      OCCAS ---- 100 ----> UA
      OCCAS ---- 200 (NO SDP) ----> UA
      OCCAS <--- ACK ---- UA
      OCCAS <--- BYE ---- UA
      OCCAS ---- 491 (BYE) ---> UA

      teh log output of the servlet is
      test.TestByeAck - init:
      test.TestByeAck - init: done
      test.TestByeAck - doInvite:
      test.TestByeAck - doInvite: done
      test.TestByeAck - doBye:
      test.TestByeAck - doBye: REQUEST PENDING
      test.TestByeAck - doBye: done
      test.TestByeAck - doAck:
      test.TestByeAck - doAck: done

      is there a way to tell occas to keep the order of receiving the messages?

      also can this be fixed somehow?