struct sftp_request *sftp_find_request(struct sftp_packet *pktin)
{
unsigned long id;
+ unsigned fid;
struct sftp_request *req;
if (!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");
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)
if ((rr->retlen < 0 && fxp_error_type()==SSH_FX_EOF) || rr->retlen == 0) {
xfer->eof = TRUE;
+ rr->retlen = 0;
rr->complete = -1;
#ifdef DEBUG_DOWNLOAD
printf("setting eof\n");
int xfer_upload_ready(struct fxp_xfer *xfer)
{
- if (xfer->req_totalsize < xfer->req_maxsize)
+ if (sftp_sendbuffer() == 0)
return 1;
else
return 0;