tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

tcp_socket.https.html (1915B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="/resources/test-only-api.js"></script>
      5 <script>
      6 'use strict';
      7 
      8 promise_test(async () => {
      9  const kPacket = "I'm a netcat. Meow-meow!"
     10 
     11  const serverSocket = new TCPServerSocket("127.0.0.1");
     12  const { localPort } = await serverSocket.opened;
     13 
     14  const clientSocket = new TCPSocket("127.0.0.1", localPort);
     15  const acceptedSocket = await (async () => {
     16    const { readable } = await serverSocket.opened;
     17    const reader = readable.getReader();
     18    const { value: acceptedSocket, done } = await reader.read();
     19    assert_false(done);
     20    reader.releaseLock();
     21    return acceptedSocket;
     22  })();
     23 
     24  const encoder = new TextEncoder();
     25  const decoder = new TextDecoder();
     26 
     27  const readPacket = async socket => {
     28    const { readable } = await socket.opened;
     29    const reader = readable.getReader();
     30    let result = "";
     31    while (result.length < kPacket.length) {
     32      const { value, done } = await reader.read();
     33      assert_false(done);
     34      result += decoder.decode(value);
     35    }
     36    assert_equals(result, kPacket);
     37    reader.releaseLock();
     38  };
     39 
     40  const sendPacket = async socket => {
     41    const { writable } = await socket.opened;
     42    const writer = writable.getWriter();
     43    await writer.ready;
     44    await writer.write(encoder.encode(kPacket));
     45    writer.releaseLock();
     46  };
     47 
     48  const acceptedSocketEcho = (async () => {
     49    await readPacket(acceptedSocket);
     50    await sendPacket(acceptedSocket);
     51  })();
     52 
     53  const clientSocketSend = (async () => {
     54    await sendPacket(clientSocket);
     55  })();
     56 
     57  const clientSocketReceive = (async () => {
     58    await readPacket(clientSocket);
     59  })();
     60 
     61  await clientSocketReceive;
     62 
     63  await clientSocket.close();
     64  await acceptedSocket.close();
     65  await serverSocket.close();
     66 
     67 }, 'TCPSocket exchanges packets with TCPServerSocket');
     68 </script>