Exception occured while sending Cancel request...

85 views
Skip to first unread message

atomic ant

unread,
Mar 3, 2011, 11:01:27 AM3/3/11
to mobicents-public
Hello,

I implemented a BACK2BACK sip application.

In our scnerios, our application finds the telephone numbers
associated with the subscriber.(B Party) Our application multiplexes
the SIP Invite to all telephone numbers of the B Party subscriber.
When one of the numbers accepts the call, our application sends Cancel
to all other numbers. (Like Forking...)

Briefly, when invite comes to our application, we generates 3
different call leg. (Total 4 different call-id) When we got 200 Ok one
of the outgoing leg, we are sending Cancel messages to other outgoing
legs.

This feature was working with Glassfish Sailfin. But in mobicent we
are getting problem. When i tried to create Cancel request from
outgoing Leg, i am getting NullPointerException.

public void sendCancelToSubLegs(SubCall otherSubCall) throws
IOException {
try {

SipServletRequest cancelRequest;

cancelRequest =
otherSubCall.getOutgoingLeg().createCancel();

if (cancelRequest != null) {

cancelRequest.removeHeader("Content-Type");
cancelRequest.removeHeader("Content-Length");
cancelRequest.send();
<---------------------------------- Null Pointer Exception
} else {
logger.warn("Cancel Request is Null!! We couldn't send
Cancel request !");
}

} catch (Exception e) {
logger.debug("Exception occured while sending cancel to
sub legs...: " + e);
e.printStackTrace();
}
}

Vladimir Ralev

unread,
Mar 3, 2011, 11:03:18 AM3/3/11
to mobicent...@googlegroups.com, atomic ant
Can you post the exception? Not that you cant send CANCEL under certain conditions defined in the SIP RFC.

atomic ant

unread,
Mar 4, 2011, 3:01:15 AM3/4/11
to mobicents-public
09:51:43,194 ERROR [STDERR] java.lang.NullPointerException
09:51:43,194 ERROR [STDERR] at
gov.nist.javax.sip.message.SIPMessage.encode(SIPMessage.java:440)
09:51:43,194 ERROR [STDERR] at
gov.nist.javax.sip.message.SIPRequest.encode(SIPRequest.java:469)
09:51:43,194 ERROR [STDERR] at
gov.nist.javax.sip.message.SIPRequest.toString(SIPRequest.java:498)
09:51:43,194 ERROR [STDERR] at
java.lang.String.valueOf(String.java:2826)
09:51:43,194 ERROR [STDERR] at
java.lang.StringBuilder.append(StringBuilder.java:115)
09:51:43,194 ERROR [STDERR] at
org.mobicents.servlet.sip.message.SipServletRequestImpl.send(SipServletRequestImpl.java:
1404)
09:51:43,194 ERROR [STDERR] at
tr.com.argela.psr.cc.CcCore.sendCancelToSubLegs(CcCore.java:481)
09:51:43,194 ERROR [STDERR] at
tr.com.argela.psr.cc.fsm.parallel.ParallelRinging.callAnswered(ParallelRinging.java:
176)
09:51:43,194 ERROR [STDERR] at
tr.com.argela.psr.cc.PsrSipServlet.doSuccessResponse(PsrSipServlet.java:
352)
09:51:43,194 ERROR [STDERR] at
javax.servlet.sip.SipServlet.doResponse(SipServlet.java:268)
09:51:43,194 ERROR [STDERR] at
javax.servlet.sip.SipServlet.service(SipServlet.java:327)
09:51:43,194 ERROR [STDERR] at
org.mobicents.servlet.sip.core.dispatchers.MessageDispatcher.callServlet(MessageDispatcher.java:
326)
09:51:43,195 ERROR [STDERR] at
org.mobicents.servlet.sip.core.dispatchers.ResponseDispatcher
$1.dispatch(ResponseDispatcher.java:355)
09:51:43,195 ERROR [STDERR] at
org.mobicents.servlet.sip.core.dispatchers.DispatchTask.dispatchAndHandleExceptions(DispatchTask.java:
55)
09:51:43,195 ERROR [STDERR] at
org.mobicents.servlet.sip.core.dispatchers.ResponseDispatcher.dispatchMessage(ResponseDispatcher.java:
386)
09:51:43,195 ERROR [STDERR] at
org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processResponse(SipApplicationDispatcherImpl.java:
840)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:296)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:
196)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.DialogFilter.processResponse(DialogFilter.java:
1480)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction.inviteClientTransaction(SIPClientTransaction.java:
885)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction.processResponse(SIPClientTransaction.java:
548)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction.processResponse(SIPClientTransaction.java:
1550)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.UDPMessageChannel.processMessage(UDPMessageChannel.java:
583)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.UDPMessageChannel.processIncomingDataPacket(UDPMessageChannel.java:
492)
09:51:43,195 ERROR [STDERR] at
gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:
297)
09:51:43,195 ERROR [STDERR] at java.lang.Thread.run(Thread.java:
662)
09:51:43,701 INFO [STDOUT] SIP stack timer task failed due to
exception:
09:51:43,701 ERROR [STDERR] java.lang.NullPointerException
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.message.SIPMessage.encodeAsBytes(SIPMessage.java:
497)
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.message.SIPRequest.encodeAsBytes(SIPRequest.java:
596)
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction.cleanUp(SIPClientTransaction.java:
1738)
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction.cleanUpOnTerminated(SIPClientTransaction.java:
1813)
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.stack.SIPClientTransaction
$TransactionTimer.runTask(SIPClientTransaction.java:259)
09:51:43,701 ERROR [STDERR] at
gov.nist.javax.sip.stack.timers.DefaultSipTimer
$DefaultTimerTask.run(DefaultSipTimer.java:63)
09:51:43,701 ERROR [STDERR] at
java.util.TimerThread.mainLoop(Timer.java:512)
09:51:43,702 ERROR [STDERR] at
java.util.TimerThread.run(Timer.java:462)

atomic ant

unread,
Mar 4, 2011, 3:57:49 AM3/4/11
to mobicents-public
//cancelRequest.removeHeader("Content-Type");
//cancelRequest.removeHeader("Content-Length");

When i commented these two lines, problem resolved. But when we don't
remove these headers, Leadtek phones don't accept Cancel messages.
In RFC-3261 says that it is not compulsory to be exists these fields
in Cancel message.

Jean Deruelle

unread,
Mar 7, 2011, 11:40:48 AM3/7/11
to mobicent...@googlegroups.com, atomic ant

Jean Deruelle

unread,
Sep 25, 2012, 9:46:16 AM9/25/12
to mobicent...@googlegroups.com, atomic ant
http://code.google.com/p/mobicents/issues/detail?id=2403

Jean


On Tue, Sep 25, 2012 at 3:28 PM, Tim Ross <timro...@gmail.com> wrote:
How can I track this bug?  I am facing the same issue in Mobicents 1.7.  Also Jain Sip's SIPMessage.setContent throws a similar exception when trying to computeContentLength().  since contentLenghtHeader == null, contentLengthHeader.setContentLength(length) throws NullPointerException.  BTW, where can I get the jain sip source so I can build it into mobicents 1.7?

Thanks,
Tim

Tim Ross

unread,
Sep 28, 2012, 1:49:00 PM9/28/12
to mobicent...@googlegroups.com, atomic ant
Thanks for the quick response, and have fixed my end 

I agree with the bug report, and that sending a request with no content length is generally illegal, so does not need to be supported.  But I would expect to be able to invoke SipServletMessage.toString() or SipServletMessage.setContent(..)  after removing the Content-Length header.  In mss 1.7 I get the following behavior:

SipServletMessage sipServletMessage = sipFactory.createRequest(..)
sipServletMessage.removeHeader("Content-Length");
sipServletMessage.toString();  // throws NullPointerException
sipServletMessage.setContent(...) // also throws NullPointerException when it calculates the content length and tries to set it internally.

Thanks,
Tim

Jean Deruelle

unread,
Nov 8, 2012, 9:23:53 AM11/8/12
to mobicent...@googlegroups.com, atomic ant
Did you try that on MSS 2.0 ?
If it still throws an NPE , can you file a bug at http://code.google.com/p/sipservlets/issues/entry ?

Thanks
Jean
Reply all
Reply to author
Forward
0 new messages