From 2eb8d8fd2f0fc9de7d9b9c02583756cbd3631cd6 Mon Sep 17 00:00:00 2001 From: Heinrich Lee Yu <heinrich@gitlab.com> Date: Tue, 21 Jan 2020 19:11:08 +0800 Subject: [PATCH] Proxy ActionCable websocket connection Had to use a simple proxy because the other ResponseWriter wrappers do not support HiJack and we don't need those for this route anyway --- internal/upstream/routes.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/upstream/routes.go b/internal/upstream/routes.go index f002a8991cc45..196b9a64139c1 100644 --- a/internal/upstream/routes.go +++ b/internal/upstream/routes.go @@ -162,6 +162,7 @@ func (u *upstream) configureRoutes() { static := &staticpages.Static{DocumentRoot: u.DocumentRoot} proxy := buildProxy(u.Backend, u.Version, u.RoundTripper) + simpleProxy := proxypkg.NewProxy(u.Backend, u.Version, u.RoundTripper) signingTripper := secret.NewRoundTripper(u.RoundTripper, u.Version) signingProxy := buildProxy(u.Backend, u.Version, signingTripper) @@ -191,6 +192,9 @@ func (u *upstream) configureRoutes() { route("POST", apiPattern+`v4/jobs/[0-9]+/artifacts\z`, contentEncodingHandler(artifacts.UploadArtifacts(api, signingProxy))), route("POST", ciAPIPattern+`v1/builds/[0-9]+/artifacts\z`, contentEncodingHandler(artifacts.UploadArtifacts(api, signingProxy))), + // ActionCable websocket + wsRoute(`^/-/cable\z`, simpleProxy), + // Terminal websocket wsRoute(projectPattern+`-/environments/[0-9]+/terminal.ws\z`, channel.Handler(api)), wsRoute(projectPattern+`-/jobs/[0-9]+/terminal.ws\z`, channel.Handler(api)), -- GitLab