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>
This commit is contained in:
Arnaud Porterie 2014-12-03 23:40:16 -08:00
parent b487d2f2ff
commit 266a1044de

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()
}