Fix interactive exec over TLS

The code no longer assumes a net.TCPConn underlying the HTTP connection
in order to close attached streams.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 266a1044deb9a085ed43dccdc6cfa0723e5142b0
Component: engine
This commit is contained in:
Arnaud Porterie
2014-12-03 23:43:03 -08:00
parent 3e14694b93
commit 1c71415b94
+8 -4
View File
@@ -1136,15 +1136,19 @@ func postContainerExecStart(eng *engine.Engine, version version.Version, w http.
}
defer func() {
if tcpc, ok := inStream.(*net.TCPConn); ok {
tcpc.CloseWrite()
if cw, ok := inStream.(interface {
CloseWrite() error
}); ok {
cw.CloseWrite()
} else {
inStream.Close()
}
}()
defer func() {
if tcpc, ok := outStream.(*net.TCPConn); ok {
tcpc.CloseWrite()
if cw, ok := outStream.(interface {
CloseWrite() error
}); ok {
cw.CloseWrite()
} else if closer, ok := outStream.(io.Closer); ok {
closer.Close()
}