MCPcopy
hub / github.com/cli/cli / makeConnection

Function makeConnection

internal/codespaces/connection/tunnels_api_server_mock.go:323–362  ·  view source on GitHub ↗
(server *relayServer)

Source from the content-addressed store, hash-verified

321}
322
323func makeConnection(server *relayServer) http.HandlerFunc {
324 return func(w http.ResponseWriter, r *http.Request) {
325 ctx, cancel := context.WithCancel(context.Background())
326 defer cancel()
327
328 if server.accessToken != "" {
329 if r.Header.Get("Authorization") != server.accessToken {
330 server.sendError(fmt.Errorf("invalid access token"))
331 return
332 }
333 }
334
335 upgrader := websocket.Upgrader{}
336 c, err := upgrader.Upgrade(w, r, nil)
337 if err != nil {
338 server.sendError(fmt.Errorf("error upgrading to websocket: %w", err))
339 return
340 }
341 defer func() {
342 if err := c.Close(); err != nil {
343 server.sendError(fmt.Errorf("error closing websocket: %w", err))
344 }
345 }()
346
347 socketConn := newSocketConn(c)
348 serverConn, chans, reqs, err := ssh.NewServerConn(socketConn, server.sshConfig)
349 if err != nil {
350 server.sendError(fmt.Errorf("error creating ssh server conn: %w", err))
351 return
352 }
353
354 go handleRequests(ctx, convertRequests(reqs))
355
356 server.serverConn = serverConn
357 if err := handleChannels(ctx, server, chans); err != nil {
358 server.sendError(fmt.Errorf("error handling channels: %w", err))
359 return
360 }
361 }
362}
363
364func (sr *sshRequest) Type() string {
365 return sr.request.Type

Callers 1

newMockrelayServerFunction · 0.85

Calls 9

newSocketConnFunction · 0.85
handleRequestsFunction · 0.85
convertRequestsFunction · 0.85
handleChannelsFunction · 0.85
sendErrorMethod · 0.80
GetMethod · 0.65
ErrorfMethod · 0.65
UpgradeMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected