MCPcopy
hub / github.com/cloudflare/cloudflared / wsEchoEndpoint

Function wsEchoEndpoint

connection/connection_test.go:133–158  ·  view source on GitHub ↗

A mock origin that echos data by streaming like a tcpOverWSConnection https://github.com/cloudflare/cloudflared/blob/master/ingress/origin_connection.go

(w ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

131// A mock origin that echos data by streaming like a tcpOverWSConnection
132// https://github.com/cloudflare/cloudflared/blob/master/ingress/origin_connection.go
133func wsEchoEndpoint(w ResponseWriter, r *http.Request) error {
134 resp := &http.Response{
135 StatusCode: http.StatusSwitchingProtocols,
136 }
137 if err := w.WriteRespHeaders(resp.StatusCode, resp.Header); err != nil {
138 return err
139 }
140 wsCtx, cancel := context.WithCancel(r.Context())
141 readPipe, writePipe := io.Pipe()
142
143 wsConn := websocket.NewConn(wsCtx, NewHTTPResponseReadWriterAcker(w, w.(http.Flusher), r), &log)
144 go func() {
145 select {
146 case <-wsCtx.Done():
147 case <-r.Context().Done():
148 }
149 _ = readPipe.Close()
150 _ = writePipe.Close()
151 }()
152
153 originConn := &echoPipe{reader: readPipe, writer: writePipe}
154 stream.Pipe(wsConn, originConn, &log)
155 cancel()
156 wsConn.Close()
157 return nil
158}
159
160type flakyConn struct {
161 closeAt time.Time

Callers 2

ProxyHTTPMethod · 0.85
ProxyHTTPMethod · 0.85

Calls 7

CloseMethod · 0.95
NewConnFunction · 0.92
PipeFunction · 0.92
WriteRespHeadersMethod · 0.65
ContextMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected