encountered part way through transfer. In particular, this caused
psftp to hang (waiting for FXP_READ replies which had already
arrived) if you try `get' (without -r) on a remote directory.
git-svn-id: svn://svn.tartarus.org/sgt/putty@5005
cda61777-01e9-0310-a592-
d414129be87e
struct fxp_xfer *xfer;
uint64 offset;
FILE *fp;
struct fxp_xfer *xfer;
uint64 offset;
FILE *fp;
+ int ret, shown_err = FALSE;
/*
* In recursive mode, see if we're dealing with a directory.
/*
* In recursive mode, see if we're dealing with a directory.
ret = xfer_download_gotpkt(xfer, pktin);
if (ret < 0) {
ret = xfer_download_gotpkt(xfer, pktin);
if (ret < 0) {
- printf("error while reading: %s\n", fxp_error());
+ if (!shown_err) {
+ printf("error while reading: %s\n", fxp_error());
+ shown_err = TRUE;
+ }
void xfer_download_queue(struct fxp_xfer *xfer)
{
void xfer_download_queue(struct fxp_xfer *xfer)
{
- while (xfer->req_totalsize < xfer->req_maxsize && !xfer->eof) {
+ while (xfer->req_totalsize < xfer->req_maxsize &&
+ !xfer->eof && !xfer->err) {
/*
* Queue a new read request.
*/
/*
* Queue a new read request.
*/
#endif
} else if (rr->retlen < 0) {
/* some error other than EOF; signal it back to caller */
#endif
} else if (rr->retlen < 0) {
/* some error other than EOF; signal it back to caller */
+ xfer_set_error(xfer);
+ rr->complete = -1;