Browse code

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>

Arnaud Porterie authored on 2014/12/04 16:40:16
Showing 1 changed files
... ...
@@ -1136,15 +1136,19 @@ func postContainerExecStart(eng *engine.Engine, version version.Version, w http.
1136 1136
 		}
1137 1137
 
1138 1138
 		defer func() {
1139
-			if tcpc, ok := inStream.(*net.TCPConn); ok {
1140
-				tcpc.CloseWrite()
1139
+			if cw, ok := inStream.(interface {
1140
+				CloseWrite() error
1141
+			}); ok {
1142
+				cw.CloseWrite()
1141 1143
 			} else {
1142 1144
 				inStream.Close()
1143 1145
 			}
1144 1146
 		}()
1145 1147
 		defer func() {
1146
-			if tcpc, ok := outStream.(*net.TCPConn); ok {
1147
-				tcpc.CloseWrite()
1148
+			if cw, ok := outStream.(interface {
1149
+				CloseWrite() error
1150
+			}); ok {
1151
+				cw.CloseWrite()
1148 1152
 			} else if closer, ok := outStream.(io.Closer); ok {
1149 1153
 				closer.Close()
1150 1154
 			}