Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

problem when using webrtc2sip as a proxy #5

Closed
iwanbk opened this issue Oct 17, 2012 · 12 comments
Closed

problem when using webrtc2sip as a proxy #5

iwanbk opened this issue Oct 17, 2012 · 12 comments
Labels

Comments

@iwanbk
Copy link
Contributor

iwanbk commented Oct 17, 2012

I try to change the proxy from your proxy to my webrc2sip, and it failed.
jssip works fine with kamailio and asterisk with websocket support.

I made small change in line 4949 of jssip-0.1.0.js so WS uri can be something like this ws://my.domain.com:4062. It is needed when using webrtc2sip and kamailio.

The webrtc2sip proxy works fine with sipml5.

This is error message from javascript console.

JsSIP | EVENT EMITTER | Adding event: message jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: call jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: registrationFailure jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: deregister jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: register jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: disconnect jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | Adding event: connect jssip-0.1.0.js:51
JsSIP | EVENT EMITTER | new Listener added to event: register jssip-0.1.0.js:47
JsSIP | EVENT EMITTER | new Listener added to event: deregister jssip-0.1.0.js:47
JsSIP | EVENT EMITTER | new Listener added to event: registrationFailure jssip-0.1.0.js:47
JsSIP | TRANSPORT | Connecting to WebSocket URI ws://my.domain.com:4062 jssip-0.1.0.js:528
JsSIP | TRANSPORT | WebSocket connected: ws://my.domain.com:4062 jssip-0.1.0.js:564
JsSIP | UA | connection status set to: 0 jssip-0.1.0.js:4603
JsSIP | TRANSPORT | Sending WebSocket message:

REGISTER sip:my.domain.com SIP/2.0
Route: sip:my.domain.com:4062;transport=ws;lr
Via: SIP/2.0/TCP f0s46bql3b0a.invalid;branch=z9hG4bK7065402
Max-Forwards: 69
To: sip:ibk@my.domain.com
From: sip:ibk@my.domain.com;tag=kgova95fec
Call-ID: 2bqe48kr848nz5mi
CSeq: 81 REGISTER
Contact: sip:ibk@f0s46bql3b0a.invalid;transport=ws;reg-id=1;+sip.instance="urn:uuid:df9cc2bb-04c7-41cf-aff5-c9d48d012005";expires=120
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, MESSAGE, SUBSCRIBE
Supported: path, outbound, gruu
User-Agent: JsSIP 0.1.0

jssip-0.1.0.js:493
JsSIP | EVENT EMITTER | Emitting event: connect jssip-0.1.0.js:169
JsSIP | TRANSPORT | WebSocket disconnected: code=1006 jssip-0.1.0.js:581
JsSIP | TRANSPORT | ERROR: abrupt disconection jssip-0.1.0.js:584
JsSIP | UA | connection status set to: 1 jssip-0.1.0.js:4549
JsSIP | TRANSACTION | Transport Error ocurred. Deleting non invite client transaction: z9hG4bK7065402 jssip-0.1.0.js:1409
JsSIP | EVENT EMITTER | Emitting event: registrationFailure jssip-0.1.0.js:169
JsSIP | TRANSPORT | Trying to reconnect to: ws://my.domain.com:4062. Reconnection attempt number 1 jssip-0.1.0.js:678
JsSIP | TRANSPORT | Connecting to WebSocket URI ws://my.domain.com:4062 jssip-0.1.0.js:528
JsSIP | TRANSPORT | WebSocket connected: ws://my.domain.com:4062 jssip-0.1.0.js:564
JsSIP | UA | connection status set to: 0 jssip-0.1.0.js:4603
JsSIP | TRANSPORT | Sending WebSocket message:

REGISTER sip:my.domain.com SIP/2.0
Route: sip:my.domain.com:4062;transport=ws;lr
Via: SIP/2.0/TCP f0s46bql3b0a.invalid;branch=z9hG4bK8884138
Max-Forwards: 69
To: sip:ibk@my.domain.com
From: sip:ibk@my.domain.com;tag=rdnu23cr1p
Call-ID: 2bqe48kr848nz5mi
CSeq: 82 REGISTER
Contact: sip:ibk@f0s46bql3b0a.invalid;transport=ws;reg-id=1;+sip.instance="urn:uuid:df9cc2bb-04c7-41cf-aff5-c9d48d012005";expires=120
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, MESSAGE, SUBSCRIBE
Supported: path, outbound, gruu
User-Agent: JsSIP 0.1.0

jssip-0.1.0.js:493
JsSIP | EVENT EMITTER | Emitting event: connect jssip-0.1.0.js:169
JsSIP | TRANSPORT | WebSocket disconnected: code=1006 jssip-0.1.0.js:581
JsSIP | TRANSPORT | ERROR: abrupt disconection jssip-0.1.0.js:584
JsSIP | UA | connection status set to: 1 jssip-0.1.0.js:4549
JsSIP | TRANSACTION | Transport Error ocurred. Deleting non invite client transaction: z9hG4bK8884138 jssip-0.1.0.js:1409
JsSIP | EVENT EMITTER | Emitting event: registrationFailure jssip-0.1.0.js:169
JsSIP | TRANSPORT | Trying to reconnect to: ws://my.domain.com:4062. Reconnection attempt number 1 jssip-0.1.0.js:678
JsSIP | TRANSPORT | Connecting to WebSocket URI ws://my.domain.com:4062 jssip-0.1.0.js:528
JsSIP | TRANSPORT | WebSocket connected: ws://my.domain.com:4062 jssip-0.1.0.js:564
JsSIP | UA | connection status set to: 0 jssip-0.1.0.js:4603
JsSIP | TRANSPORT | Sending WebSocket message:

REGISTER sip:my.domain.com SIP/2.0
Route: sip:my.domain.com:4062;transport=ws;lr
Via: SIP/2.0/TCP f0s46bql3b0a.invalid;branch=z9hG4bK7110621
Max-Forwards: 69
To: sip:ibk@my.domain.com
From: sip:ibk@my.domain.com;tag=v5tlabcy0y
Call-ID: 2bqe48kr848nz5mi
CSeq: 83 REGISTER
Contact: sip:ibk@f0s46bql3b0a.invalid;transport=ws;reg-id=1;+sip.instance="urn:uuid:df9cc2bb-04c7-41cf-aff5-c9d48d012005";expires=120
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, MESSAGE, SUBSCRIBE
Supported: path, outbound, gruu
User-Agent: JsSIP 0.1.0

jssip-0.1.0.js:493
JsSIP | EVENT EMITTER | Emitting event: connect jssip-0.1.0.js:169
JsSIP | TRANSPORT | WebSocket disconnected: code=1006 jssip-0.1.0.js:581
JsSIP | TRANSPORT | ERROR: abrupt disconection jssip-0.1.0.js:584
JsSIP | UA | connection status set to: 1 jssip-0.1.0.js:4549
JsSIP | TRANSACTION | Transport Error ocurred. Deleting non invite client transaction: z9hG4bK7110621 jssip-0.1.0.js:1409
JsSIP | EVENT EMITTER | Emitting event: registrationFailure jssip-0.1.0.js:169
JsSIP | TRANSPORT | Trying to reconnect to: ws://my.domain.com:4062. Reconnection attempt number 1 jssip-0.1.0.js:678
JsSIP | TRANSPORT | Connecting to WebSocket URI ws://my.domain.com:4062 jssip-0.1.0.js:528
JsSIP | TRANSPORT | WebSocket connected: ws://my.domain.com:4062 jssip-0.1.0.js:564
JsSIP | UA | connection status set to: 0 jssip-0.1.0.js:4603
JsSIP | TRANSPORT | Sending WebSocket message:

REGISTER sip:my.domain.com SIP/2.0
Route: sip:my.domain.com:4062;transport=ws;lr
Via: SIP/2.0/TCP f0s46bql3b0a.invalid;branch=z9hG4bK9329872
Max-Forwards: 69
To: sip:ibk@my.domain.com
From: sip:ibk@my.domain.com;tag=8hm7v8wpes
Call-ID: 2bqe48kr848nz5mi
CSeq: 84 REGISTER
Contact: sip:ibk@f0s46bql3b0a.invalid;transport=ws;reg-id=1;+sip.instance="urn:uuid:df9cc2bb-04c7-41cf-aff5-c9d48d012005";expires=120
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, MESSAGE, SUBSCRIBE
Supported: path, outbound, gruu
User-Agent: JsSIP 0.1.0

jssip-0.1.0.js:493
JsSIP | EVENT EMITTER | Emitting event: connect jssip-0.1.0.js:169
JsSIP | TRANSPORT | WebSocket disconnected: code=1006 jssip-0.1.0.js:581
JsSIP | TRANSPORT | ERROR: abrupt disconection jssip-0.1.0.js:584
JsSIP | UA | connection status set to: 1 jssip-0.1.0.js:4549
JsSIP | TRANSACTION | Transport Error ocurred. Deleting non invite client transaction: z9hG4bK9329872 jssip-0.1.0.js:1409
JsSIP | EVENT EMITTER | Emitting event: registrationFailure jssip-0.1.0.js:169
JsSIP | TRANSPORT | Trying to reconnect to: ws://my.domain.com:4062. Reconnection attempt number 1 jssip-0.1.0.js:678
JsSIP | TRANSPORT | Connecting to WebSocket URI ws://my.domain.com:4062 jssip-0.1.0.js:528
JsSIP | TRANSPORT | WebSocket connected: ws://my.domain.com:4062 jssip-0.1.0.js:564
JsSIP | UA | connection status set to: 0 jssip-0.1.0.js:4603
JsSIP | TRANSPORT | Sending WebSocket message:

@jmillan
Copy link
Member

jmillan commented Oct 17, 2012

@iwanbk, you can specifiy the full ws uri in the demo web. No need to modify the code for that.

Please, specify the full string of the ws uri within the demo web: ws://my.domain.com:4062

@iwanbk
Copy link
Contributor Author

iwanbk commented Oct 17, 2012

@jmillan
Hi, i modify the code because i thought it failed because jssip automatically convert ws://my.domain.com:4062 to ws://my.domain.com:4062/ (add a trailing slash).
And just realized that it still works with kamailio even with trailing slash.

Btw, have you tested jssip with webrtc2sip?

@ibc
Copy link
Member

ibc commented Oct 17, 2012

@iwanbk The URI ws://my.domain.com:4062/ is 100% valid, so if webrtc2sip fails to parse it there is a bug in webrtc2sip, not in JsSIP ;)

@ibc
Copy link
Member

ibc commented Oct 17, 2012

Closing the issue since it's not a bug in JsSIP but in a 3rd party server.

@ibc ibc closed this as completed Oct 17, 2012
@iwanbk
Copy link
Contributor Author

iwanbk commented Oct 17, 2012

@ibc
Sorry if i was not clear.
Even with ws://my.domain.com:4062 (without trailing slash), it is not work.
You can see again my javascript console message, there is no trailing slash.

@iwanbk
Copy link
Contributor Author

iwanbk commented Oct 17, 2012

This is error message from webrtc2sip
WARNING | 20121017-110236.991 | repro | RESIP:TRANSPORT | 140109811562240 | ConnectionBase.cxx:320 | Malformed Content-Length in connection-based transport. Not much we can do to fix this. SipMessage::Exception Missing header Content-Length @ SipMessage.cxx:1371
WARNING | 20121017-110238.024 | repro | RESIP:TRANSPORT | 140109811562240 | ConnectionBase.cxx:320 | Malformed Content-Length in connection-based transport. Not much we can do to fix this. SipMessage::Exception Missing header Content-Length @ SipMessage.cxx:1371

@ibc
Copy link
Member

ibc commented Oct 17, 2012

JsSIP does not add a Content-Length header since it's not mandatory (WebSocket it's a message boundary transport). See http://tools.ietf.org/html/draft-ietf-sipcore-sip-websocket-04#section-5.1

5.1.  General

Each SIP message MUST be carried within a single WebSocket message,
and a WebSocket message MUST NOT contain more than one SIP message.
Because the WebSocket transport preserves message boundaries, the use
of the Content-Length header in SIP messages is optional when they
are transported using the WebSocket sub-protocol.

So it's a bug in webrtc2sip server.

@jmillan
Copy link
Member

jmillan commented Oct 17, 2012

Yeah,

As per section 5.1 in http://tools.ietf.org/html/draft-ietf-sipcore-sip-websocket-04, the Content-Length header in a SIP message is optional when using WebSocket as transport. It is hence a bug in webrtc2sip, which should respect a SIP message without such a header.

@ibc
Copy link
Member

ibc commented Oct 17, 2012

I've reported the bug in webrtc2sip server: http://code.google.com/p/webrtc2sip/issues/detail?id=5

Please follow it ;)

@saghul
Copy link
Contributor

saghul commented Oct 17, 2012

@jmillan Even if it's optional, does it hurt to send it? If it helps I'd be all for it.

@ibc
Copy link
Member

ibc commented Oct 22, 2012

JsSIP master now adds always a Content-Lenght header (regardless it's not mandatory). Let's make happy buggy servers from 3rd parties.

@saghul
Copy link
Contributor

saghul commented Oct 22, 2012

🍰

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

4 participants