Giter Site home page Giter Site logo

restcomm / sip-servlets Goto Github PK

View Code? Open in Web Editor NEW
234.0 64.0 178.0 67.86 MB

Leading SIP - IMS - WebRTC Application Server

Home Page: http://www.restcomm.com/

License: GNU Affero General Public License v3.0

Java 74.17% HTML 13.66% CSS 0.39% JavaScript 10.25% Shell 0.97% Ruby 0.53% XSLT 0.03%

sip-servlets's Introduction

Note

On 29 June 2023, Mobius Software LTD signed an agreement with Mavenir to assume development and support of the RestcommOne on prem products. For more details regarding open source / commercial differentiation, roadmap, licensing and other details please visit the Mobius Website.

RestComm Sip Servlets

Join the chat at https://gitter.im/RestComm/sip-servlets FOSSA Status

RestComm SIP Servlets is a SIP, IMS and WebRTC Application Server. RestComm SIP Servlets facilitates the shift towards Cloud Communications by enabling deployment and autoscaling of real time SIP Servlets applications across all major IaaS (Infrastructure as a Service) providers or on premises. It also brings realtime communications (messaging, voice & video) to your Browser using HTML5 WebRTC and SIP Over WebSockets !

RestComm SIP Servlets enables turnkey SaaS offerings such as RestComm.

Check out the wiki for more information.

WebRTC Demo

The (RestComm HTML5 WebRTC Client)[HTML5WebRTCVideoApplication] allows you to make video calls from/to any Web Browser supporting [http://webrtc.org WebRTC], (only Google Chrome Firefox and Opera supports it so far but some plugins exists to enable it on IE and Safari).

Architecture

RestComm SIP Servlets implements the latest SIP Servlet v1.1 (JSR 289) standard. It can be plugged into any Application Server container (currently 7.X and JBoss 7.X) and also offers High Availability and Failover on its corresponding product from TeleStax, Inc.

sip-servlets's People

Contributors

alerantappngin avatar chaitanya87 avatar deruelle avatar desipepova avatar fossabot avatar gitter-badger avatar gvagenas avatar gyoetam avatar ivelin avatar ixocool avatar jaimecasero avatar jonbo372 avatar josemrecio avatar kostyantynnosach-mobius avatar leftyb avatar pimenas avatar taueres avatar vladimirralev avatar xhoaluu avatar yulianoifa-mobius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sip-servlets's Issues

SerializationException when Serializing SipSession

java.io.NotSerializableException: org.jboss.web.tomcat.service.session.sip.SessionBasedClusteredSipSession
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at org.jboss.ha.framework.server.SimpleCachableMarshalledValue.serialize(SimpleCachableMarshalledValue.java:271)
at org.jboss.ha.framework.server.SimpleCachableMarshalledValue.writeExternal(SimpleCachableMarshalledValue.java:252)
at java.io.ObjectOutputStream.writeExternalData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:460)
at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
at org.jboss.cache.marshall.CacheMarshaller200.marshallCollection(CacheMarshaller200.java:555)
at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:365)
at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMarshaller200.java:519)
at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:314)
at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarshaller300.java:47)
at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:191)
at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:136)
at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:182)
at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:52)
at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:369)
at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:341)
at org.jboss.cache.util.concurrent.WithinThreadExecutor.submit(WithinThreadExecutor.java:82)
at org.jboss.cache.marshall.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:206)
at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:748)
at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:716)
at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java:721)
at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:161)
at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:135)
at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpcInterceptor.java:107)
at org.jboss.cache.interceptors.ReplicationInterceptor.runPreparePhase(ReplicationInterceptor.java:192)
at org.jboss.cache.interceptors.ReplicationInterceptor.visitPrepareCommand(ReplicationInterceptor.java:72)
at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
at org.jboss.cache.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:50)
at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
at org.jboss.cache.interceptors.TxInterceptor.handleCommitRollback(TxInterceptor.java:539)
at org.jboss.cache.interceptors.TxInterceptor.runCommitPhase(TxInterceptor.java:572)
at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:969)
at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1156)
at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:92)
at org.jboss.cache.transaction.DummyTransaction.notifyAfterCompletion(DummyTransaction.java:307)
at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:96)
at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:109)
at org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.BatchingManagerImpl.endBatch(BatchingManagerImpl.java:70)
at org.mobicents.servlet.sip.startup.SipStandardContext.endBatchTransaction(SipStandardContext.java:1207)
at org.mobicents.servlet.sip.startup.SipStandardContext.exitSipAppHa(SipStandardContext.java:1167)
at org.mobicents.servlet.sip.core.dispatchers.ResponseDispatcher$1.dispatch(ResponseDispatcher.java:503)
at org.mobicents.servlet.sip.core.dispatchers.DispatchTask.dispatchAndHandleExceptions(DispatchTask.java:61)
at org.mobicents.servlet.sip.core.dispatchers.ResponseDispatcher.dispatchMessage(ResponseDispatcher.java:514)
at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processResponse(SipApplicationDispatcherImpl.java:1021)
at gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:296)
at gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:185)
at gov.nist.javax.sip.DialogFilter.processResponse(DialogFilter.java:1511)
at gov.nist.javax.sip.stack.SIPClientTransaction.inviteClientTransaction(SIPClientTransaction.java:922)
at gov.nist.javax.sip.stack.SIPClientTransaction.processResponse(SIPClientTransaction.java:548)
at gov.nist.javax.sip.stack.SIPClientTransaction.processResponse(SIPClientTransaction.java:1599)
at gov.nist.javax.sip.stack.UDPMessageChannel.processMessage(UDPMessageChannel.java:602)
at gov.nist.javax.sip.stack.UDPMessageChannel.processIncomingDataPacket(UDPMessageChannel.java:511)
at gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:316)
at java.lang.Thread.run(Unknown Source)
2015-01-12 11:51:54,874 ERROR org.jboss.cache.marshall.CommandAwareRpcDispatcher java.io.NotSerializableException: org.jboss.web.tomcat.service.session.sip.SessionBasedClusteredSipSession

Log Time

SipURI.setParameter("key", null) results in NPE

Using uri.setParameter("orig", null); in RestComm results in following exception

ERROR RestComm-akka.actor.default-dispatcher-5 akka.event.slf4j.Slf4jEventHandler$$anonfun$receive$1$$anonfun$applyOrElse$1.apply$mcV$sp(Slf4jEventHandler.scala:64) - java.lang.NullPointerException
org.mobicents.servlet.restcomm.fsm.TransitionFailedException: java.lang.NullPointerException
at org.mobicents.servlet.restcomm.fsm.FiniteStateMachine.transition(FiniteStateMachine.java:85)
at org.mobicents.servlet.restcomm.telephony.Call.onReceive(Call.java:568)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: java.lang.NullPointerException
at org.mobicents.servlet.sip.address.RFC2396UrlDecoder.encode(RFC2396UrlDecoder.java:74)
at org.mobicents.servlet.sip.address.SipURIImpl.setParameter(SipURIImpl.java:410)
at org.mobicents.servlet.restcomm.telephony.Call$Dialing.execute(Call.java:1037)
at org.mobicents.servlet.restcomm.fsm.FiniteStateMachine.transition(FiniteStateMachine.java:83)
... 11 more

Log Time

Application Composition broken for REGISTER

The SIP container seems to treat REGISTER requests differently after a B2BUA application sends a request on the outgoing leg, not invoking the AR as it should and does for other methods.
Based on the Mobicents code (which presumably is identical) there seems to be a conscious decision to not continue the application chain for REGISTER. Would be interesting to know the reason for this?
In SipServletRequestImpl.send(Hop):
//Added for initial requests only (that are not REGISTER) not for subsequent requests
if(isInitial() && !Request.REGISTER.equalsIgnoreCase(requestMethod)) {
final SipApplicationRouterInfo routerInfo = sipFactoryImpl.getNextInterestedApplication(this);

The result of this is that application composition using the AR becomes impossible for REGISTER.

See https://telestax.atlassian.net/browse/MSS-124

Log Time

Contact Header for SIP MESSAGE requests

We know that this is against the SIP MESSAGE RFC (3428):

  1. UAC Processing

...
MESSAGE requests do not initiate dialogs. User Agents MUST NOT
insert Contact header fields into MESSAGE requests.
...

However, we need to do it for RCS implementation. They force you to insert the +sip.instance parameter in all outcoming requests and responses.

Log Time

SipMessage.getInitialRemoteAddress() was not returning null on outgoing re-REGISTER transactions

SipMessage.getInitialRemoteAddress() was not returning null on outgoing re-REGISTER transactions. JSR 289 15.7 specifies that it must be null on all outbound requests. In the attached changes, I was a bit chicken and just fixed this for REGISTER requests, but this may be more general an true for other "//case where other requests are sent with the same session like REGISTER or for challenge requests"

Log Time

Derived Sessions not available in the list of Sessions from SipApplicationSession

Mutliple problems are occuring here :

  1. It seems for some reason the id of the session is changed before it's passed on to the application, I suspect there is a bug in the HA case with proxy forking on the id or loading of the session
  2. After creation of this derived session, I still only have the 2 first sipSessions in the SipApplicationSession (the sipSession for the received INVITE and the sipSession created for the forwarded INVITE)
  3. When the BYE for the 2nd 200OK is send, it looks like other derived sipsession are invalidated...
    IE: When the established call is ended (by the caller), I receive the BYE (coresponding to the 1st 200 OK), but when I list the sipsession still present in the SipApplicationSession, I only have the sipSession of the caller. Other sipsessions are not more present, even the one for the callee.

Log Time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.