This discussion is archived
0 Replies Latest reply: Aug 28, 2009 10:57 AM by 715547 RSS

reordering of BYE and ACK

715547 Newbie
Currently Being Moderated
hi,
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:");
     a_Request.createResponse(SipServletResponse.SC_OK).send();
LOG.debug("doInvite: done");
}

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

protected void doBye(SipServletRequest a_Request)
     throws ServletException, IOException
{
LOG.debug("doBye:");
if (m_GotACK)
{
LOG.debug("doBye: OK");
          a_Request.createResponse(SipServletResponse.SC_OK).send();           
}
else
{
LOG.debug("doBye: REQUEST PENDING");
          a_Request.createResponse(SipServletResponse.SC_REQUEST_PENDING).send();      
}
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?

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points