if (pclose (fp) != 0) {
err = errno;
- cancel_receive ();
+ if (r == -1) /* if r == 0, file transfer ended already */
+ cancel_receive ();
errno = err;
reply_with_perror ("pclose: %s", dir);
return -1;
if (pclose (fp) != 0) {
err = errno;
- cancel_receive ();
+ if (r == -1) /* if r == 0, file transfer ended already */
+ cancel_receive ();
errno = err;
reply_with_perror ("pclose: %s", dir);
return -1;