X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sftp.c;h=5685c79ea7a68c2b02945c54cef15721efc72a8a;hb=bda87b39e40ec4e75309cdf778dfc9cd339fdeeb;hp=b4421f779e41dd56085bf5c840defa9594e78948;hpb=b266d671acee34f9305950bfd87054b3b7fcded6;p=PuTTY.git diff --git a/sftp.c b/sftp.c index b4421f77..5685c79e 100644 --- a/sftp.c +++ b/sftp.c @@ -352,6 +352,7 @@ void sftp_register(struct sftp_request *req) struct sftp_request *sftp_find_request(struct sftp_packet *pktin) { unsigned long id; + unsigned fid; struct sftp_request *req; if (!pktin) { @@ -363,7 +364,8 @@ struct sftp_request *sftp_find_request(struct sftp_packet *pktin) fxp_internal_error("did not receive a valid SFTP packet\n"); return NULL; } - req = find234(sftp_requests, &id, sftp_reqfind); + fid = (unsigned)id; + req = find234(sftp_requests, &fid, sftp_reqfind); if (!req || !req->registered) { fxp_internal_error("request ID mismatch\n"); @@ -656,11 +658,12 @@ struct sftp_request *fxp_close_send(struct fxp_handle *handle) return req; } -void fxp_close_recv(struct sftp_packet *pktin, struct sftp_request *req) +int fxp_close_recv(struct sftp_packet *pktin, struct sftp_request *req) { sfree(req); fxp_got_status(pktin); sftp_pkt_free(pktin); + return fxp_errtype == SSH_FX_OK; } struct sftp_request *fxp_mkdir_send(const char *path) @@ -1349,7 +1352,7 @@ struct fxp_xfer *xfer_upload_init(struct fxp_handle *fh, uint64 offset) int xfer_upload_ready(struct fxp_xfer *xfer) { - if (xfer->req_totalsize < xfer->req_maxsize) + if (sftp_sendbuffer() == 0) return 1; else return 0;