Hello.
We are working on the server implementation of WebRTC and facing an ambiguous 
problem with DTLS handshake between the server and Firefox (currently testing 
on version 24).
Our workflow:
1. We use sipML5 by Doubango to make test calls.
2. STUN server is placed in local network to get correct IP and port (it works 
well with Chrome, for example)
3. We use ICE-LITE
4. Our server is running on another computer in LAN, it waits for SIP INVITE 
and responds with SIP OK and DTLS ClientHello.
5. Server sends "setup:active" and "connection:new" in SDP

When sipML sends INVITE to our server, we respond with the following SDP:

14:38:9 recv=SIP/2.0 200 OK
Via: SIP/2.0/WS 
df7jal23ls0d.invalid;rport;branch=z9hG4bKhHFUsgTuKmXmWs4ha9Ad4cVpkvFsXvus
From: "name"<sip:[email protected]>;tag=S3KFkK2U94s5ldyCQc1C
To: "My Test Name"<sip:[email protected]>;tag=50113300003
Contact: <sip:192.168.225.183:5060>
Call-ID: 45c213ac-91fd-d2bb-bee1-2c29a129194d
CSeq: 63943 INVITE
Content-Type: application/sdp
Content-Length: 579
Record-Route: <sip:192.168.224.200:5070;transport=udp;lr;ovid=79c00bfe>
Record-Route: 
<sip:[email protected]:10080;transport=ws;lr;ovid=79c00bfe>
User-Agent: NCC-6.9.9.some win build
Allow: ACK,BYE,CANCEL,INVITE,MESSAGE,INFO,PING,PRACK
Supported: early-session,100rel
Accept: application/dtmf-relay

v=0
o=- 1381912623 1381912623 IN IP4 192.168.225.183
s=NauPhone
c=IN IP4 192.168.225.183
t=1381912623 0
a=ice-lite
a=fingerprint:sha-256 
02:F0:00:E9:83:30:90:DA:94:2C:44:E1:88:28:AA:10:AD:49:E4:23:2F:D6:F8:6B:1E:09:8F:86:DA:6A:D0:97
a=setup:active
a=connection:new
m=audio 5060 UDP/TLS/RTP/SAVPF 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=silenceSupp:off - - - -
a=SSRC:49300008
a=candidate:3085019328 1 UDP 2130706431 192.168.225.183 5060 typ host
a=ice-ufrag:BF0B3806
a=ice-pwd:FA73D4D6F480BC4C0E86875017E2D1BD
a=rtcp-mux

After this, we are sending ClientHello (using OpenSSL, by the way) to Firefox 
immediately and we don't get any response.
We've tried enabling Firefox logging for 'mtransport' module (mtranport:9) to 
get more information on this problem.
But all we have got is this:

6556[120f530]: NrIceCtx(PC:816211c9fc98c71e): state 0->1
6556[120f530]: Gathered all ICE candidates for 'PC:816211c9fc98c71e'
6556[120f530]: NrIceCtx(PC:816211c9fc98c71e): state 1->2
0[120f140]: ICE ctx PC:816211c9fc98c71e setting controlling to0
6556[120f530]: NrIceCtx(PC:816211c9fc98c71e): state 2->3
6556[120f530]: Flow[816211c9fc98c71e:1,rtp(none)]; Layer[ice]: Inserted: 
downward='none'
6556[120f530]: Flow[816211c9fc98c71e:1,rtp(none)]; Layer[dtls]: Inserted: 
downward='ice'
6556[120f530]: Setting up DTLS as server
6556[120f530]: Flow[816211c9fc98c71e:1,rtcp(none)]; Layer[ice]: Inserted: 
downward='none'
6556[120f530]: Flow[816211c9fc98c71e:1,rtcp(none)]; Layer[dtls]: Inserted: 
downward='ice'
6556[120f530]: Setting up DTLS as server
6556[120f530]: Flow[816211c9fc98c71e:1,rtp(none)]; Layer[ice]: 
PacketReceived(816211c9fc98c71e/stream1/audio,1,194)
6556[120f530]: Flow[816211c9fc98c71e:1,rtp(none)]; Layer[dtls]: 
PacketReceived(194)
6556[120f530]: Flow[816211c9fc98c71e:1,rtp(none)]; Layer[dtls]: Discarding 
packet in inappropriate state
6556[120f530]: Destroying ICE ctx 'PC:816211c9fc98c71e'

As we found in source code, the message "Discarding packet in inappropriate 
state" means that we _probably_ haven't done the ICE workflow yet and
DTLS transport layer is not in "open" state to receive DTLS messages.
_______________________________________________
dev-media mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-media

Reply via email to