always return the ReadResponse error after an upload
This commit is contained in:
parent
08a1e2e380
commit
4a68979b89
24
ftp.go
24
ftp.go
@ -647,16 +647,14 @@ func (c *ServerConn) StorFrom(path string, r io.Reader, offset uint64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = io.Copy(conn, r)
|
||||
// if the upload fails we still need to try to read the server
|
||||
// response otherwise if the failure is not due to a connection problem,
|
||||
// for example the server denied the upload for quota limits, we miss
|
||||
// the response and we cannot use the connection to send other commands.
|
||||
// So we don't check io.Copy error and we return the error from
|
||||
// ReadResponse so the user can see the real error
|
||||
io.Copy(conn, r)
|
||||
conn.Close()
|
||||
if err != nil {
|
||||
// if the upload failed we still need to try to read the server
|
||||
// response otherwise if the failure is not due to a connection problem,
|
||||
// for example the server denied the upload for quota limits, we miss
|
||||
// the response and we cannot use the connection to send other commands
|
||||
c.conn.ReadResponse(StatusClosingDataConnection)
|
||||
return err
|
||||
}
|
||||
|
||||
_, _, err = c.conn.ReadResponse(StatusClosingDataConnection)
|
||||
return err
|
||||
@ -673,13 +671,9 @@ func (c *ServerConn) Append(path string, r io.Reader) error {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = io.Copy(conn, r)
|
||||
// see the comment for StorFrom above
|
||||
io.Copy(conn, r)
|
||||
conn.Close()
|
||||
if err != nil {
|
||||
// see the comment for StorFrom above
|
||||
c.conn.ReadResponse(StatusClosingDataConnection)
|
||||
return err
|
||||
}
|
||||
|
||||
_, _, err = c.conn.ReadResponse(StatusClosingDataConnection)
|
||||
return err
|
||||
|
Loading…
Reference in New Issue
Block a user