[Webkit-unassigned] [Bug 278672] Regression: Creating peer connection fails on Safari 17.5+ with IPv6-only network

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Aug 26 23:09:53 PDT 2024


https://bugs.webkit.org/show_bug.cgi?id=278672

--- Comment #10 from Byungseon(Sun) Shin <sun.shin at webkit.org> ---
(In reply to Byungseon(Sun) Shin from comment #5)
> Comment on attachment 472308 [details]
> ice binding test
> 
> <!DOCTYPE html>
> <html lang="en">
> <head>
>     <meta charset="UTF-8">
>     <meta name="viewport" content="width=device-width, initial-scale=1.0">
>     <title>ICE Connection Test</title>
> </head>
> <body>
>     <h1>ICE Connection Test</h1>
>     <video id="localVideo" playsinline autoplay muted></video>
>     <video id="remoteVideo" playsinline autoplay></video>
> 
>     <p>
>     <button id="startButton">Start ICE Test</button>
>     <pre id="output"></pre>
> 
>     <script>
>         const startButton = document.getElementById('startButton');
>         const output = document.getElementById('output');
>         const localVideo = document.getElementById('localVideo');
>         const remoteVideo = document.getElementById('remoteVideo');
> 
>         startButton.addEventListener('click', startTest);
> 
>         async function startTest() {
>             const configuration = {
>                 iceServers: [
> 		    { urls: 'stun:stun.l.google.com:19302' } // Example STUN server
>                 ]
>             };
> 
>             const localPeer = new RTCPeerConnection(configuration);
>             const remotePeer = new RTCPeerConnection(configuration);
> 
>             localPeer.onicecandidate = (event) => {
>                 if (event.candidate) {
>                     remotePeer.addIceCandidate(event.candidate);
>                     log(`Local ICE candidate: ${event.candidate.candidate}`);
>                 }
>             };
> 
>             remotePeer.onicecandidate = (event) => {
>                 if (event.candidate) {
>                     localPeer.addIceCandidate(event.candidate);
>                     log(`Remote ICE candidate:
> ${event.candidate.candidate}`);
>                 }
>             };
> 
>             localPeer.oniceconnectionstatechange = () => {
>                 log(`Local ICE connection state:
> ${localPeer.iceConnectionState}`);
>             };
> 
>             remotePeer.oniceconnectionstatechange = () => {
>                 log(`Remote ICE connection state:
> ${remotePeer.iceConnectionState}`);
>             };
> 
>             remotePeer.addEventListener('track', (event) => {
>                 gotRemoteStream(event);
>             });
> 
>             try {
>                 let localStream;
> 		//localPeer.createDataChannel('testChannel');
>                 const offerOptions = {
>                   offerToReceiveAudio: 1,
>                   offerToReceiveVideo: 1
>                 };
> 
>                 const stream = await
> navigator.mediaDevices.getUserMedia({audio: true, video: true});
>                 localVideo.srcObject = stream;
>                 localStream = stream;
> 
>                 const videoTracks = localStream.getVideoTracks();
>                 const audioTracks = localStream.getAudioTracks();
>                 if (videoTracks.length > 0) {
>                   console.log(`Using video device: ${videoTracks[0].label}`);
>                 }
>                 if (audioTracks.length > 0) {
>                   console.log(`Using audio device: ${audioTracks[0].label}`);
>                 }
>                 localStream.getTracks().forEach(track =>
> localPeer.addTrack(track, localStream));
> 
>                 const offer = await localPeer.createOffer();
>                 await localPeer.setLocalDescription(offer);
>                 log('Local peer created and set local offer');
> 
>                 await remotePeer.setRemoteDescription(offer);
>                 log('Remote peer set remote offer');
> 
>                 const answer = await remotePeer.createAnswer();
>                 await remotePeer.setLocalDescription(answer);
>                 log('Remote peer created and set local answer');
> 
>                 await localPeer.setRemoteDescription(answer);
>                 log('Local peer set remote answer');
>             } catch (error) {
>                 log(`Error: ${error}`);
>             }
>         }
> 
>         function gotRemoteStream(e) {
>           if (remoteVideo.srcObject !== e.streams[0]) {
>             remoteVideo.srcObject = e.streams[0];
>             console.log('remote peer received remote stream');
>           }
>         }
> 
>         function log(message) {
>             output.textContent += `${message}\n`;
>         }
>     </script>
> </body>
> </html>

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20240827/2d77b323/attachment-0001.htm>


More information about the webkit-unassigned mailing list