Browse Source

do ReadCodeLine in Close() @ ReadCloser

SunRunAway 12 years ago
parent
commit
65a25a2848
2 changed files with 14 additions and 7 deletions
  1. 7 0
      client_test.go
  2. 7 7
      ftp.go

+ 7 - 0
client_test.go

@@ -57,6 +57,13 @@ func TestConn(t *testing.T) {
 		r.Close()
 	}
 
+	r, err = c.Retr("tset")
+	if err != nil {
+		t.Error(err)
+	} else {
+		r.Close()
+	}
+
 	err = c.Delete("tset")
 	if err != nil {
 		t.Error(err)

+ 7 - 7
ftp.go

@@ -405,16 +405,16 @@ func (c *ServerConn) Quit() error {
 // Read implements the io.Reader interface on a FTP data connection.
 func (r *response) Read(buf []byte) (int, error) {
 	n, err := r.conn.Read(buf)
-	if err == io.EOF {
-		_, _, err2 := r.c.conn.ReadCodeLine(StatusClosingDataConnection)
-		if err2 != nil {
-			err = err2
-		}
-	}
 	return n, err
 }
 
 // Close implements the io.Closer interface on a FTP data connection.
 func (r *response) Close() error {
-	return r.conn.Close()
+	err := r.conn.Close()
+	_, _, err2 := r.c.conn.ReadCodeLine(StatusClosingDataConnection)
+	if err2 != nil {
+		err = err2
+	}
+	return err
 }
+