Playback of audio only stream is not working on latest build of Chrome 87

Azhar Ali

Member
Hi,

Our users are reporting after updating the chrome, our audio-only stream has stopped working. Getting connection error message "Failed by DTLS error"

Any ideas? I have updated chrome on dev machine and its same error.

Its quite urgent if you can help. Our server is running on 5.2.768

Regards
Azhar
 

Azhar Ali

Member
Hi Max,

thank you for checking this for us.

I have updated the server and it still has the same problem. I am getting the same error, its not working on the demo site either. Works on FF

I am only testing the simple example of streamer from the demo site.

My Chrome build is Version 87.0.4280.66 (Official Build) (64-bit)

It's quite urgent, please can you check. I have emailed the SSH details to the server.

Regards
Azhar
 

Azhar Ali

Member
Also to add to the above, I have tried the demo.flashphoner.com and examples are working on the chrome we have so not sure where its going wrong.
 

Max

Administrator
Staff member
We checked the server.
Seems like you are using custom backend for authentication and other purposes. In this case, you must mirror the content of /connect REST hook in response, with addind fileds as needed.
Let's have a look to server INFO logs while client is connecting to:
1. This query WCS sends to backend
Code:
02:32:28,897 INFO            RestClient - API-ASYNC-pool-13-thread-25 SEND REST OBJECT ==>
URL:https://xxxx/broadcast/authenticate/connect
OBJECT:
{
  "nodeId" : "hItOCQuvTEBzmURzGuIArIqAETlCdObo@34.86.27.28",
  "appKey" : "defaultApp",
  "sessionId" : "/x.xxx.xx.xx:62597/xx.xxx.x.xxx:8443-cef3799d-c22d-45ba-b607-2ba3cffcdd12",
  "useWsTunnel" : false,
  "useWsTunnelPacketization2" : false,
  "msePacketizationVersion" : 2,
  "useBase64BinaryEncoding" : false,
  "mediaProviders" : [ "WebRTC", "MSE", "WSPlayer" ],
  "clientVersion" : "0.5.28",
  "clientOSVersion" : "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
  "clientBrowserVersion" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
  "keepAlive" : false,
  "origin" : "https://broadcast7.financialjuice.com:8444"
}
2. This response WCSreceives from backend
Code:
02:32:28,978 INFO            RestClient - API-ASYNC-pool-13-thread-25 RECEIVED REST OBJECT <==
URL:https://xxxx/broadcast/authenticate/connect
OBJECT:
{
  "nodeId" : "hItOCQuvTEBzmURzGuIArIqAETlCdObo@34.86.27.28",
  "appKey" : "defaultApp",
  "sessionId" : "/x.xxx.xx.xx:62597/xx.xxx.x.xxx:8443-cef3799d-c22d-45ba-b607-2ba3cffcdd12",
  "width" : 0,
  "height" : 0,
  "useWsTunnel" : false,
  "useWsTunnelPacketization2" : false,
  "msePacketizationVersion" : 1,
  "useBase64BinaryEncoding" : false,
  "keepAlive" : false,
  "minBitrate" : 0,
  "origin" : "https://xxxx:8444",
  "maxBitrate" : 0,
  "gop" : 0,
  "bitrate" : 0,
  "record" : false,
  "parentMediaSessionId" : null,
  "mediaSessionId" : null,
  "videoCodec" : null,
  "info" : null,
  "createDate" : 0,
  "hasVideo" : false,
  "codecImpl" : null,
  "hasAudio" : false,
  "cvoExtension" : false,
  "custom" : null,
  "fps" : 0,
  "published" : false,
  "history" : false,
  "transport" : null,
  "audioCodec" : null,
  "audioBitrate" : 0,
  "quality" : 0,
  "mediaProvider" : null,
  "name" : null
}
So some field are added, but some fields are lost. The following fields must be in response, but they are trimmed:
Code:
  "clientVersion" : "0.5.28",
  "clientOSVersion" : "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
  "clientBrowserVersion" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
The server uses client browser version to detect, what DTLS version (DTLS 1.2 by default is browser is not listed in dtls0_ua file) should be used to establish WebRTC connections. If none of browsers found in response, the server uses DTLS 1.0 (this is used by default in CDN between nodes).
iOS Safari 14 and MacOS Safari 14.1 are the first who dropped DTLS 1.0, seems like Chrome 87 did it also. So your subscribers cannot establish WebRTC connection, and publisher too when you update its Chrome.
So please fix you backend script to mirror all the fields received, for example
Code:
$api_method = array_pop(explode("/", $_SERVER['REQUEST_URI']));
$incoming_data = json_decode(file_get_contents('php://input'), true);

switch($api_method) {
    case"connect":
          /// Collecting session data and do some work as needed...
          /// Do not trim any fileds from $incoming_data !!!
    break;
}
header('Content-Type: application/json');
echo json_encode($incoming_data);  /// This is a must !
 

Azhar Ali

Member
Hi Max,

thanks for the detailed response.

I can confirm that was the problem and it's now fixed. Thank you for your help.

Regards
Azhar
 
Top