- Export Socket interface (#637).
- Typescript typings (#627).
- Clone optional objects (#625). Credits to @acharlop.
- RTCSession: fix, allow initial INVITE no SDP/offer (#624). Credits to @mgoodenUK.
- Transactions: destroy transaction in Timer I after terminating. Thanks Juha Heinanen for reporting the issue.
- RTCSession: disable remote hold state when receiving an INVITE without SDP (#613). Credits to @RobyMcAndrew.
- RequestSender: fix Authorization header addition for jwt use.
- Add
authorization_jwt
configuration parameter (#610). Credits to @voicenter.
- RTCSession: don't relay on 'icecandidate' event with null candidate (#598). Thanks @skanizaj.
- RTCSession: honor BYE while in WAITING_FOR_ACK state (#597). Thanks @Egorikhin.
- Added NOTIFY to allowed methods (#593). Credits to @ikq.
- Move connection recovery defaults to Constants (#593). Credits to @KraftyKraft.
- Add referred-by header to refer messages (#572). Credits to @swysor.
- Fix NameAddrHeader
display_name
handling (#573). Credits to @nicketson.
- Add
.babelrc
into.npmignore
(related to #489). - Update deps.
- Add debugging logs in DigestAuthentication.js (related to #561).
- Update deps.
- Registrator: Don't check Contact header if final response is not 2XX (#558). Thanks @ikq for reporting.
- Update deps.
- Registrator. Support multiple entries in the same Contact header field (#544).
- RTCSession: fire 'sdp' event on renegotiation (#543).
- UA: new 'sipEvent' event for out of dialog NOTIFY requests.
- InviteClientTransaction: Add full route set to ACK and CANCEL requests. Thanks @nicketson.
- RTCSession: switch to tracks from deprecated stream API. Thanks @nicketson.
- Fix typos thanks to the LGTM project.
- Update deps.
- Remove
webrtc-adapter
dependency. It's up to the application developer whether to include it into his application or not. - Update dependencies.
- Revert previous release. Requires a mayor version upgrade for such a cosmetic change.
- Close #521, #534. RTCSession: Fix 'connection' event order on outgoing calls.
- Update deps.
- Add missing
error
in 'getusermediafailed' event (thanks @jonastelzio).
- Close #519. Parser: Do not overwrite unknwon header fields. Thanks @rprinz08.
- Include the NPM events dependency for those who don't use browserify but webpack.
- RTCSession: Add Contact header to REFER request. Thanks Julien Royer for reporting.
- Fix #511. Add missing payload on 'UA:disconnected' event.
- Fix regression (#509): ua.call() not working if stream is given.
- RTCSession: custom local description trigger support
- RTCSession: prefer promises over callbacks for readability.
- Config: #494. Switch Socket check order. Thanks 'Igor Kolosov'.
- RTCSession: Fix #492. Add missing log line for RTCPeerConnection error.
- Remove wrong NPM dependencies.
- Fix parsing of NOTIFY bodies during a REFER transaction (fixes #493).
- Config: new configuration parameter 'user_agent'
- RTCSession/Info: Fix. Call session.sendRequest() with the correct parameters
- Config: Fix #491. Implement all documented flavours of 'sockets' parameter
- Fix #482 and cleanup Registrator.js
- Produce ES5 tree and expose it as main in package.json (related to #472)
- Fix #481. ReferSubscriber: properly access RTCSession non-public attributes
- RTCSession: emit 'sdp' event before creating offer/answer
- DigestAuthentication: fix 'auth-int' qop authentication
- DigestAuthentication: add tests
- New UA configuration parameter 'session_timers_refresh_method'. Thanks @michelepra
- Fix improper call to userMediaSucceeded. Thanks @iclems
- Registrator: add missing getter. Thanks Martin Ekblom.
- Fix #473. Typo. Thanks @ikq.
- Use promise chaining to prevent PeerConnection state race conditions. Thanks @davies147
- Fix #421. Fire RTCSession 'peerconnection' event as soon as its created
- Fix typo. Thanks @michelepra.
- Tests: enable test-UA-no-WebRTC tests.
- WebSocketInterface: uppercase the via_transport attribute.
- Fix #469. new method InitialOutgoingInviteRequest::clone().
- WebSocketInterface: Add 'via_transport' setter.
- Fix typo on ES6 transpiling.
- ES6 transpiling. Modernize full JsSIP code.
- Dialog: ACK to initial INVITE could have lower CSeq than current remote_cseq.
- RTCSession: process INFO in early state.
- Fix #457. Properly retrieve ReferSubscriber. Thanks @btaens.
- Fix #457. Support NOTIFY requests to REFER subscriptions without Event id parameter.
- Update dependencies.
Registrator
: Don't send a Register request if another is on progress. Thanks to Paul Grebenc.
UA
: AddregistrationExpiring
event (#442). Credits to @danjenkins.
RTCSession
: Emit "peerconnection" also for incoming calls.
- Emit SDP before new
RTCSessionDescription
. Thanks to @StarLeafRob.
- Generic SIP INFO support.
- Fix #431. Fix UA's
disconnect
event by properly providing an object with all the documente fields (thanks @nicketson for reporting it).
- Fix #428. Don't use
pranswer
for early media. Instead create ananswer
and do a workaround when the 200 arrives.
- Update deps.
- Add more debug logs into
RTCSession
class.
- Update deps.
- If ICE fails, terminate the session with status code 408.
- Fix #426. Properly emit DTMF events.
- Fix #418. Incorrect socket status on failure.
- Close #419. Allow sending the DTMF 'R' key. Used to report a hook flash.
- Remove
rtcninja
dependency. Instead usewebrtc-adapter
. RTCSession:
: RemoveRTCPeerConnection
event wrappers. The app can access them viasession.connection
.RTCSession:
: Emit WebRTC related events when internal calls togetUserMedia()
,createOffer()
, etc. fail.- Use debug NPM fixed "2.0.0" version (until a pending bug in such a library is fixed).
UA
: Removews_servers
option.UA
: Allow immediate restart
- Improve library logs.
- Update dependencies.
- Fix #400. Corrupt NPM packege.
- Fix #385. No CANCEL request sent for authenticated requests.
- Fix
gulp-header
dependency version.
- Export
JsSIP.WebSocketInterface
.
- New 'contact_uri' configuration parameter.
- Remove Node websocket dependency.
- Fix #196. Improve 'hostname' parsing.
- Fix #370. Outgoing request instance being shared by two transactions.
- Fix #296. Abrupt transport disconnection on UA.stop().
- Socket interface. Make JsSIP socket agnostic.
- Update dependencies.
RTCSession
: new event on('sdp') to allow SDP modifications.
RTCSession
: Allow multiple calls torefer()
at the same time.
UA
:set()
allows changing user's display name.- Ignore SDP answer in received ACK retransmissions (fix 367).
RTCSession
: Also emitpeerconnection
event for incoming INVITE without SDP.
RTCSession/ReferSubscriber
: Fix typo that breaks exposed API.
RTCSession
: Makerefer()
method to return the corresponding instance ofReferSubscriber
so the app can set and manage as many events as desired on it.
- Add INFO method to allowed methods list
- Add SIP Code 424 RFC 6442
- Apply changes of 0.7.16 also to browserified files under
dist/
folder.
- Fix 337. Consistenly indicate registration status through events.
- Emit UA 'connected' event before sending REGISTER on transport connection
- Fix 355. call to non existent
parsed.error
function. Thanks Stéphane Alnet @shimaore
- Fix sips URI scheme parsing rule.
- Fix. Don't lowercase URI parameter values. Thanks to Alexandr Dubovikov @adubovikov
- Accept new
UA
configuration parametersha1
andrealm
to avoid plain SIP password handling (issue 353). - New
UA.set()
andUA.get()
methods to set and retrieve computed configuration parameters in runtime.
- Fix typo ("iceconnetionstatechange" => "iceconnectionstatechange"). Thanks to Vertika Srivastava.
- Make
gulp
run on Node 4.0.X and 5.0.X.
UA
: Addset(parameter, value)
method to change a configuration setting in runtime (currently just "password" is implemented).
RTCSession
: AddresetLocalMedia()
method to reset the session local MediaStream by enabling both its audio and video tracks (unless the remote peer is on hold).
RTCSession
: Add "sending" event to outgoing, a good chance for the app to mangle the INVITE or its SDP offer.
- Update dependencies.
- Improve gulpfile.js.
- Don't ask for
getUserMedia
inRTCSession.answer()
if nomediaConstraints
are provided.
- Allow rejecting an in-dialog INVITE or UPDATE message.
- FIX properly restart UA if start() is called while closing.
- Update dependencies.
- Update dependencies.
- Add REFER support.
- Don't keep URI params&headers in the registrar server URI.
RTCSession
emitspeerconnection
for outgoing calls once theRTCPeerConnection
is created and before the SDP offer is generated (good chance to create aRTCDataChannel
without requiring renegotiation).
- Add callback to
update
andreinvite
events.
- Added a parser for Reason header.
- Fix array iteration in
URI#toString()
to avoid Array prototype mangling by devil libraries such as Ember.
- Auto-register on transport connection before emitting the event.
- Update "rtcninja" dependencie.
- Don't terminate SIP dialog if processing of 183 with SDP fails.
- Update dependencies.
- Update "rtcninja" dependency.
- Update "rtcninja" dependency.
- RTCSession: Fix Invite Server transaction destruction.
- RTCSession: Handle session timers before emitting "accepted".
- Fix issue with latest version of browserify.
- Fix double "disconnected" event in some cases.
- Don't iterate arrays with (for...in) to avoid problems with evil JS libraries that add stuff into the Array prototype.
- Be more flexible receiving DTMF INFO bodies.
- Update dependencies.
- Terminate the call with a proper BYE/CANCEL/408/500 if request timeout, transport error or dialog error happens.
- Fix "rtcninja" dependency problem.
RTCSession
: ImproveisReadyToReOffer()
.
RTCSession
: Avoid calling hold()/unhold/renegotiate() if an outgoing renegotiation is not yet finished (return false).RTCSession
: Addoptions
anddone
arguments to hold()/unhold/renegotiate().RTCSession
: New public methodisReadyToReOffer()
.
RTCSession:
Emiticeconnetionstatechange
event.- Update "rtcninja" dependency to 0.4.0.
RTCSession:
Include initially givenrtcOfferConstraints
insendReinvite()
andsendUpdate()
.
- Properly keep mute local audio/video if remote is on hold, and keep it even if we re-offer. Also fix SDP direction attributes in re-offers according to current local and remote "hold" status.
- Update "rtcninja" dependency to 0.3.3 (fix "RTCOfferOptions").
- Fix "Session-Expires" default value to 90 seconds.
- Update "rtcninja" dependency to 0.3.2 (get the
rtcninja.canRenegotiate
attribute).
- Don't reply 405 "Method Not Supported" to re-INVITE even if the UA's "newRTCSession" event is not set.
RTCSession
: Allow extraHeaders inrenegotiate()
.
RTCSession
: Don't ask forgetUserMedia()
in outgoing calls ifmediaConstraints
is{audio:false, video:false}
. It is user's responsability to, in that case, provideofferToReceiveAudio/Video
inrtcOfferConstraints
.
- ' UA.call()': Return the
RTCSession
instance. - ' UA.sendMessage()': Return the
Message
instance.
RTCSession
: Don't process SDPs in retranmissions of 200 OK during reINVITE/UDATE.RTCSession
: Emit 'reinvite' when a reINVITE is received.RTCSession
: Emit 'update' when an UPDATE is received.
RTCSession
: Don't overridethis.data
onanswer()
(unlessoptions.data
is given).
RTCSession#connect()
: AddrtcAnswerContraints
options for later incoming reINVITE or UPDATE with SDP offer.RTCSession#answer()
: AddrtcOfferConstraints
options for later incoming reINVITE without SDP offer.RTCSession#renegotiate()
: AddrtcOfferConstraints
options for the UPDATE or reINVITE.RTCSession#answer()
: Remove audio or video from the givengetUserMedia
mediaConstraints if the incoming SDP has no audio/video sections.
- Bug fix. Properly cancel when only '100 trying' has been received.
- Bug fix: Do not set "Content-Type: application/sdp" in body-less UPDATE requests.
- Support for Session Timers.
- debug module.
- rtcninja module.
- Can renegotiate an ongoing session by means of a re-INVITE or UPDATE method (useful if the local stream attached to the
RTCPeerConnection
has been modified). - Improved hold/unhold detection.
- New API options for
UA#call()
andRTCSession#answer()
.
- JsSIP runs in Node!
- The internal design of JsSIP has also been modified, becoming a real Node project in which the "browser version" (
jssip-0.5.0.js
orjssip-0.5.0.min.js
) is generated with browserify. This also means that the browser version can be loaded with AMD or CommonJS loaders.
- (3b1ee11) Fix references to 'this'.
- (ca7702e) Fix #257. RTCMediaHandler: fire onIceCompleted() on next tick to avoid events race conditions in Firefox 33.
- This version is included into the Bower registry which means
$ bower install jssip
.
- (https://jssip.net/documentation/0.4.x/api/session) Hold/Unhold implementation
- (https://jssip.net/documentation/0.4.x/api/session) Mute/Unmute implementation
- (https://jssip.net/documentation/0.4.x/api/ua_configuration_parameters/#instance_id) New 'instance_id' configuration parameter
- (https://jssip.net/documentation/0.4.x/api/ua_configuration_parameters/#log) New 'log' configuration parameter
- (34b235c) Fix #246. Increase the event emiter max listener number to 50
- (9a1ebdf) Late SDP implementation. Handle SDP-less incoming INVITEs
- (f0cc4c1) Fix #253. RTCSession: instead of "started" emit "accepted" when 2XX and "confirmed" when ACK
- (f0cc4c1) Fix #253. RTCSession: accept SDP renegotiation on incoming UPDATE requests.
- (177f38d) Fix #248. Improve transaction handling on CANCEL
- (f9ef522) Fix detection of incoming merged requests (don't generate 482 for retransmissions).
- (3789d5b) Fix #245. Improve late CANCEL
- (2274a7d) Add hack_via_ws option to force "WS" in Via header when the server has wss:// scheme.
- (c9e8764) Fire 'progress' (originator = local) when receiving an incoming call.
- (39949e0) Fix #242. fine tune the ICE state check for createAnswer/createOffer
- (80c32f3) Fix #240. ICE connection RTP timeout status fix
- (1f4d36d) Remove RFC 3261 18.1.2 sanity check (sent-by host mismatch in Via header).
- (62e8323) Fix #176. Update to the latest IceServer definition
- (caf20f9) Fix #163. Stop transport revocery on UA.stop().
- (2f3769b) Fix #148: WebSocket reconnection behaviour
- (d7c3c9c) Use plain 'for' loops instead of 'for in' loops on arrays
- (a327be3) Fix. INFO-based DTMF fixes
- (d141864) Fix #133. Incorrect REGISTER Contact header value after transport disconnection
- (f4a29e9) Improvements to 2xx retransmission behaviour
- (3fc4efa) Fix #107. Stop spamming provisional responses
- (7c2abe0) Fix. Permit receiving a 200 OK to a INVITE before any 1XX provisional
- (5c644a6) Improvements to min-expires fix
- (4bfc34c) Fix handling of 423 response to REGISTER
- (3e84eaf) Fix #112. Enhance CANCEL request processing
- (1740e5e) Fix #117. Clear registration timer before re-setting it
- (dad84a1) Fix #111. Create confirmed dialog before setting remote description.
- (15d83bb) Fix #100. 'originator' property was missing in RTCSession 'started' event data object. Thanks @gavllew
- (b5c08dc) Fix #99. Do not close the RTCSession if it has been accepted and the WS disconnects
- (46eef46) Fix #90. Don't log password
- (9ca4bc9) Fix #89. Do not send a To tag in '100 Trying' responses
- (fea1326) Don't validate configuration.password against SIP URI password BNF grammar (fix #74).
- (3f84b30) Make RTCSession local_identity and remote_identity NameAddrHeader instances
- (622f46a) remove 'views' argument from UA.call()
- (940fb34) Refactored Session
- (71572f7) Rename causes.IN_DIALOG_408_OR_481 to causes.DIALOG_ERROR and add causes.RTP_TIMEOUT.
- (c79037e) Added 'registrar_server' UA configuration parameter.
- (2584140) Don't allow SIP URI without username in configuration.uri.
- (87357de) Digest authentication refactorized.
- (6867f51) Add 'cseq' and 'call_id' attributes to OutgoingRequest.
- (cc97fee) Fix. Delete session from UA sessions collection when closing
- (947b3f5) Remove RTCPeerConnection.onopen event handler
- (6029e45) Enclose every JsSIP component with an inmediate function
- (7f523cc) JsSIP.Utils.MD5() renamed to JsSIP.Utils.calculateMD5() (a more proper name for a function).
- (1b1ab73) Fix. Reply '200' to a CANCEL 'before' replying 487 to the INVITE
- (88fa9b6) New way to handle Streams
- (38d4312) Add Travis CI support.
- (50d7bf1) New
grunt grammar
task for automatically building customized Grammar.js and Grammar.min.js. - (f19842b) Fix #60, #61. Add optional parameters to ua.contact.toString(). Thanks @ibc
- (8f5acb1) Enhance self contact handling
- (5e7d815) Fix. ACK was being replied when not pointing to us. Thanks @saghul
- (1ab6df3) New method JsSIP.NameAddrHeader.parse() which returns a JsSIP.NameAddrHeader instance.
- (a7b69b8) Use a random user in the UA's contact.
- (f67872b) Extend the use of the 'options' argument
- (360c946) Test units for URI and NameAddrHeader classes.
- (826ce12) Improvements and some bug fixes in URI and NameAddrHeader classes.
- (e385840) Make JsSIP.URI and JsSIP.NameAddrHeader more robust.
- (b0603e3) Separate qunitjs tests with and without WebRTC. Make "grunt test" to run "grunt testNoWebRTC".
- (659c331) New way to handle InvalidTargetErorr and WebRtcNotSupportedError
- (d3bc91a) Don't run qunit task by default (instead require "grunt test").
- (e593396) Added qunitjs based test unit (for now a parser test) and integrate it in grunt.js.
- (da58bff) Enhance URI and NameAddrHeader
- (df6dd98) Automate qunit tests into grunt process
- (babc331) Fix. Accept multiple headers with same hader name in SIP URI.
- (716d164) Pass full multi-header header fields to the grammar
- (2e18a6b) Fix contact match in 200 response to REGISTER
- (3f7b02f) Fix stun_host grammar rule.
- (7867baf) Allow using a JsSIP.URI instance everywhere specting a destination.
- (a370c78) Fix 'maddr' and 'method' URI parameters handling
- (537d2f2) Give some love to "console.log|warn|info" messages missing the JsSIP class/module prefix.
- (8cb6963) In case null, emptry string, undefined or NaN is passed as parameter value then its default value is applied. Also print to console the processed value of all the parameters after validating them.
- (f306d3c) hack_ip_in_contact now generates a IP in the range of Test-Net as stated in RFC 5735 (192.0.2.0/24).
- (528d989) Add DTMF feature
- (777a48f) Change API methods to make use of generic 'options' argument
- (3a6971d) Fix #26. Fire 'unregistered' event correctly.
- (5616837) Rename 'outbound_proxy_set' parameter by 'ws_servers'
- (37fe9f4) Fix #54. Allow configuration.uri username start with 'sip'
- (a612987) Add 'stun_servers' and 'turn_servers' configuration parameters
- (9fad09b) Add JsSIP.URI and JsSIP.NameAddrHeader classes
- (f35376a) Add 'Content-Length' header to every SIP response
- (3081a21) Enhance 'generic_param' grammar rule
- (e589002) Fix. Allow case-insentivity in SIP grammar, when corresponds
- (aec55a2) Enhance transport error handling
- (d0dbde3) New stun_servers and turn_servers parameters
- (47cdb66) Add 'extraHeaders' parameter to UA.register() and UA.unregister() methods
- (69fbdbd) Enhance in-dialog request management
- (da23790) Fix 'UTF8-NONASCII' grammar rule
- (3f86b94) Require a single grunt task for packaging
- (81595be) Add some log lines into sanity check code for clarity
- (a8a7627) Enhance RTCPeerConnection SDP error handling. Thanks @ibc for reporting.
- (3acc474) Add turn configuration parameters for RTCPeerConnection
- (9fccaf5) Enhance 'boolean' comparison
- (24fcdbb) Make preloaded Route header optional.
- (defeabe) Automatic connection recovery.
- (a45293b) Improve reply() method.
- (f05795b) Fix. Prevent outgoing CANCEL messages from being authenticated
- (5ed6122) Update credentials with the new authorization upon 401/407 reception
- (2c9a310) Do not allow reject-ing a Message or Session with an incorrect status code
- (35e5874) Make optional the reason phrase when reply-ing
- (85ca354) Implement credential reuse
- (351ca06) Fix Contact header aggregation for incoming messages
- (d6428e7) Fire UA 'newMessage' event for incoming MESSAGE requests regardless they are out of dialog or in-dialog.
- (1ab3423) Intelligent 'Allow' header field value. Do not set a method in the 'Allow' header field if its corresponding event is not defined or has zero listeners.
- (4e70a25) Allow 'text/plain' and 'text/html' content types for incoming SIP MESSAGE Fixed incoming SIP MESSAGE processing when the Content-Type header contains parameters
- (d5f3432) Fixed the message header split when a parsing error occurs. Parsing error log enhanced.
- (24e32c0) UA configuration
password
parameter is now optional. - (ffe7af6) Bug fix: UA configuration
display_name
parameter. - (aa51291) Bug fix: Allows multibyte symbols in UA configuration
display_name
parameter (and require not to write it between double quotes). - (aa48201) Bug fix: "cnonce" value value was not being quoted in Digest Authentication (reported by vf1).
- (1ecabf5) Bug fix: Fixed authentication for in-dialog requests (reported by vf1).
- (11c6bb6) Allow receiving WebSocket binary messages (code provided by vf1).
- (0e8c5cf) Bug fix: Fixed Contact and Record-Route header split (reported by Davide Corda).
- (99243e4) Fixed BYE and ACK error handling.
- (0c91285) Fixed failure causes in 'registrationFailed' UA event.
- First stable release with full website and documentation.
- Refactored sessions, message and events API.
- First release. No documentation.