Browse Source

Merge remote-tracking branch 'origin/fix_flush_behaviour'

Solomon Hykes 12 years ago
parent
commit
2e9a73c5d8
2 changed files with 8 additions and 6 deletions
  1. 7 5
      commands.go
  2. 1 1
      rcli/tcp.go

+ 7 - 5
commands.go

@@ -419,7 +419,8 @@ func (srv *Server) CmdKill(stdin io.ReadCloser, stdout io.Writer, args ...string
 	return nil
 }
 
-func (srv *Server) CmdImport(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
+func (srv *Server) CmdImport(stdin io.ReadCloser, stdout rcli.DockerConn, args ...string) error {
+	stdout.Flush()
 	cmd := rcli.Subcmd(stdout, "import", "[OPTIONS] URL|- [REPOSITORY [TAG]]", "Create a new filesystem image from the contents of a tarball")
 	var archive io.Reader
 	var resp *http.Response
@@ -803,9 +804,9 @@ func (srv *Server) CmdAttach(stdin io.ReadCloser, stdout rcli.DockerConn, args .
 
 	if container.Config.Tty {
 		stdout.SetOptionRawTerminal()
-		// Flush the options to make sure the client sets the raw mode
-		stdout.Write([]byte{})
 	}
+	// Flush the options to make sure the client sets the raw mode
+	stdout.Flush()
 	return <-container.Attach(stdin, nil, stdout, stdout)
 }
 
@@ -893,9 +894,10 @@ func (srv *Server) CmdRun(stdin io.ReadCloser, stdout rcli.DockerConn, args ...s
 
 	if config.Tty {
 		stdout.SetOptionRawTerminal()
-		// Flush the options to make sure the client sets the raw mode
-		stdout.Flush()
 	}
+	// Flush the options to make sure the client sets the raw mode
+	// or tell the client there is no options
+	stdout.Flush()
 
 	// Create new container
 	container, err := srv.runtime.Create(config)

+ 1 - 1
rcli/tcp.go

@@ -93,7 +93,7 @@ func (c *DockerTCPConn) Write(b []byte) (int, error) {
 }
 
 func (c *DockerTCPConn) Flush() error {
-	_, err := c.conn.Write([]byte{})
+	_, err := c.Write([]byte{})
 	return err
 }