Skip to content

Commit b73088e

Browse files
committed
Refine things a bit.
1 parent f477d8e commit b73088e

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

domain-proxy/common.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const (
2626
func BiDirectionalTransfer(leftConn, rightConn net.Conn, byteBufferSize int, idleTimeout time.Duration, executor *sync.WaitGroup) {
2727
defer executor.Done()
2828
defer CloseConnections(leftConn, rightConn)
29-
done := make(chan struct{})
29+
done := make(chan struct{}, 2)
3030
leftConn.SetDeadline(time.Now().Add(idleTimeout))
3131
rightConn.SetDeadline(time.Now().Add(idleTimeout))
3232
go Transfer(leftConn, rightConn, done, byteBufferSize, idleTimeout)
@@ -66,6 +66,8 @@ func handleConnectionError(err error) {
6666
log.Printf("Connection timed out")
6767
} else if err != io.EOF {
6868
log.Printf("Error using connection: %v", err)
69+
} else if err == io.EOF {
70+
log.Printf("EOF")
6971
}
7072
}
7173

domain-proxy/domain_proxy_server.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,17 @@ func (dps *DomainProxyServer) handleHttpRequest(w http.ResponseWriter, r *http.R
134134
return
135135
}
136136
defer resp.Body.Close()
137-
log.Printf("Request %d took %d ms", requestNo, time.Since(startTime).Milliseconds())
138137
for k, v := range resp.Header {
139138
for _, vv := range v {
140139
w.Header().Add(k, vv)
141140
}
142141
}
143142
w.WriteHeader(resp.StatusCode)
144-
if _, err := io.CopyBuffer(w, resp.Body, make([]byte, dps.byteBufferSize)); err != nil {
143+
if _, err = io.CopyBuffer(w, resp.Body, make([]byte, dps.byteBufferSize)); err != nil {
145144
log.Printf("Error copying response body: %v", err)
146145
}
146+
log.Printf("Request %d took %d ms", requestNo, time.Since(startTime).Milliseconds())
147+
// TODO log bytes written/read
147148
}
148149
}
149150

@@ -165,16 +166,20 @@ func (dps *DomainProxyServer) handleHttpsRequest(sourceConn net.Conn, w http.Res
165166
targetConn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", targetHost, targetPort), dps.connectionTimeout)
166167
if err != nil {
167168
dps.handleErrorResponse(w, err, "Failed to connect to target")
169+
sourceConn.Close()
168170
return
169171
}
170-
log.Printf("Request %d took %d ms", requestNo, time.Since(startTime).Milliseconds())
171-
if _, err := fmt.Fprint(sourceConn, "HTTP/1.1 200 Connection Established\r\n\r\n"); err != nil {
172+
if _, err = fmt.Fprint(sourceConn, "HTTP/1.1 200 Connection Established\r\n\r\n"); err != nil {
173+
dps.handleErrorResponse(w, err, "Failed to send request to target")
172174
targetConn.Close()
173175
sourceConn.Close()
174176
return
175177
}
176178
dps.executor.Add(1)
177-
go BiDirectionalTransfer(sourceConn, targetConn, dps.byteBufferSize, dps.idleTimeout, dps.executor)
179+
go func() {
180+
BiDirectionalTransfer(sourceConn, targetConn, dps.byteBufferSize, dps.idleTimeout, dps.executor)
181+
log.Printf("Request %d took %d ms", requestNo, (time.Since(startTime) - dps.idleTimeout).Milliseconds())
182+
}()
178183
}
179184
}
180185

0 commit comments

Comments
 (0)