MCPcopy Index your code
hub / github.com/coder/code-server / createProxy

Method createProxy

src/node/socket.ts:37–75  ·  view source on GitHub ↗
(socket: tls.TLSSocket | net.Socket | stream.Duplex)

Source from the content-addressed store, hash-verified

35 public async createProxy(socket: tls.TLSSocket | net.Socket): Promise<net.Socket>
36 public async createProxy(socket: stream.Duplex): Promise<stream.Duplex>
37 public async createProxy(socket: tls.TLSSocket | net.Socket | stream.Duplex): Promise<net.Socket | stream.Duplex> {
38 if (!(socket instanceof tls.TLSSocket)) {
39 return socket
40 }
41
42 await this.startProxyServer()
43
44 return new Promise((resolve, reject) => {
45 const id = generateUuid()
46 const proxy = net.connect(this.proxyPipe)
47 proxy.once("connect", () => proxy.write(id))
48
49 const timeout = setTimeout(() => {
50 listener.dispose()
51 socket.destroy()
52 proxy.destroy()
53 reject(new Error("TLS socket proxy timed out"))
54 }, this.proxyTimeout)
55
56 const listener = this.onProxyConnect.event((connection) => {
57 connection.once("data", (data) => {
58 if (!socket.destroyed && !proxy.destroyed && data.toString() === id) {
59 clearTimeout(timeout)
60 listener.dispose()
61 ;[
62 [proxy, socket],
63 [socket, proxy],
64 ].forEach(([a, b]) => {
65 a.pipe(b)
66 a.on("error", () => b.destroy())
67 a.on("close", () => b.destroy())
68 a.on("end", () => b.end())
69 })
70 resolve(connection)
71 }
72 })
73 })
74 })
75 }
76
77 private async startProxyServer(): Promise<net.Server> {
78 if (!this._proxyServer) {

Callers 2

socket.test.tsFile · 0.80
vscode.tsFile · 0.80

Calls 7

startProxyServerMethod · 0.95
generateUuidFunction · 0.90
resolveFunction · 0.85
onceMethod · 0.80
writeMethod · 0.80
eventMethod · 0.80
disposeMethod · 0.65

Tested by

no test coverage detected