diff --git a/pscp.c b/pscp.c index 0dbe1e34..4c6aba73 100644 --- a/pscp.c +++ b/pscp.c @@ -1348,6 +1348,11 @@ int scp_get_sink_action(struct scp_sink_action *act) break; tell_user(stderr, "scp: reading directory %s: %s\n", fname, fxp_error()); + + req = fxp_close_send(dirhandle); + pktin = sftp_wait_for_reply(req); + fxp_close_recv(pktin, req); + if (must_free_fname) sfree(fname); sfree(ournames); errs++; diff --git a/psftp.c b/psftp.c index 65d0dc50..26f24f9c 100644 --- a/psftp.c +++ b/psftp.c @@ -291,6 +291,11 @@ int sftp_get_file(char *fname, char *outfname, int recurse, int restart) if (fxp_error_type() == SSH_FX_EOF) break; printf("%s: reading directory: %s\n", fname, fxp_error()); + + req = fxp_close_send(dirhandle); + pktin = sftp_wait_for_reply(req); + fxp_close_recv(pktin, req); + sfree(ournames); return 0; }