From 81fa4059dfc950041a29dad2ddd1c605cd4d416e Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Fri, 17 Jun 2016 16:34:53 +0100 Subject: [PATCH 1/2] Use buffered writer for http headers --- proxy/proxy_intercept.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/proxy/proxy_intercept.go b/proxy/proxy_intercept.go index 42373914..5cf5ed13 100644 --- a/proxy/proxy_intercept.go +++ b/proxy/proxy_intercept.go @@ -78,17 +78,22 @@ func doRawStream(w http.ResponseWriter, resp *http.Response, client *httputil.Cl defer down.Close() defer up.Close() - if _, err := down.Write([]byte("HTTP/1.1 " + resp.Status + "\n")); err != nil { + if _, err := downBuf.Write([]byte("HTTP/1.1 " + resp.Status + "\n")); err != nil { Log.Warning(err) return } - if err := resp.Header.Write(down); err != nil { + if err := resp.Header.Write(downBuf); err != nil { Log.Warning(err) return } - if _, err := down.Write([]byte("\n")); err != nil { + if _, err := downBuf.Write([]byte("\n")); err != nil { + Log.Warning(err) + return + } + + if err = downBuf.Flush(); err != nil { Log.Warning(err) return } From f86ade6568c0876b9986eeb1ce5bc5bfad5da9d4 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Fri, 17 Jun 2016 16:36:52 +0100 Subject: [PATCH 2/2] Squash up the code via 'defer' --- proxy/proxy_intercept.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/proxy/proxy_intercept.go b/proxy/proxy_intercept.go index 5cf5ed13..2a831880 100644 --- a/proxy/proxy_intercept.go +++ b/proxy/proxy_intercept.go @@ -77,24 +77,22 @@ func doRawStream(w http.ResponseWriter, resp *http.Response, client *httputil.Cl } defer down.Close() defer up.Close() + defer func() { + if err != nil { + Log.Warning(err) + } + }() - if _, err := downBuf.Write([]byte("HTTP/1.1 " + resp.Status + "\n")); err != nil { - Log.Warning(err) + if _, err = downBuf.Write([]byte("HTTP/1.1 " + resp.Status + "\n")); err != nil { return } - - if err := resp.Header.Write(downBuf); err != nil { - Log.Warning(err) + if err = resp.Header.Write(downBuf); err != nil { return } - - if _, err := downBuf.Write([]byte("\n")); err != nil { - Log.Warning(err) + if _, err = downBuf.Write([]byte("\n")); err != nil { return } - if err = downBuf.Flush(); err != nil { - Log.Warning(err) return }