version 1.97, 2012/07/02 12:13:26 |
version 1.98, 2013/05/17 00:13:14 |
|
|
} else { |
} else { |
debug2("Unrecognised server extension \"%s\"", name); |
debug2("Unrecognised server extension \"%s\"", name); |
} |
} |
xfree(name); |
free(name); |
xfree(value); |
free(value); |
} |
} |
|
|
buffer_free(&msg); |
buffer_free(&msg); |
|
|
error("Couldn't read directory: %s", |
error("Couldn't read directory: %s", |
fx2txt(status)); |
fx2txt(status)); |
do_close(conn, handle, handle_len); |
do_close(conn, handle, handle_len); |
xfree(handle); |
free(handle); |
buffer_free(&msg); |
buffer_free(&msg); |
return(status); |
return(status); |
} |
} |
|
|
(*dir)[++ents] = NULL; |
(*dir)[++ents] = NULL; |
} |
} |
next: |
next: |
xfree(filename); |
free(filename); |
xfree(longname); |
free(longname); |
} |
} |
} |
} |
|
|
buffer_free(&msg); |
buffer_free(&msg); |
do_close(conn, handle, handle_len); |
do_close(conn, handle, handle_len); |
xfree(handle); |
free(handle); |
|
|
/* Don't return partial matches on interrupt */ |
/* Don't return partial matches on interrupt */ |
if (interrupted && dir != NULL && *dir != NULL) { |
if (interrupted && dir != NULL && *dir != NULL) { |
|
|
int i; |
int i; |
|
|
for (i = 0; s[i]; i++) { |
for (i = 0; s[i]; i++) { |
xfree(s[i]->filename); |
free(s[i]->filename); |
xfree(s[i]->longname); |
free(s[i]->longname); |
xfree(s[i]); |
free(s[i]); |
} |
} |
xfree(s); |
free(s); |
} |
} |
|
|
int |
int |
|
|
debug3("SSH_FXP_REALPATH %s -> %s size %lu", path, filename, |
debug3("SSH_FXP_REALPATH %s -> %s size %lu", path, filename, |
(unsigned long)a->size); |
(unsigned long)a->size); |
|
|
xfree(longname); |
free(longname); |
|
|
buffer_free(&msg); |
buffer_free(&msg); |
|
|
|
|
|
|
debug3("SSH_FXP_READLINK %s -> %s", path, filename); |
debug3("SSH_FXP_READLINK %s -> %s", path, filename); |
|
|
xfree(longname); |
free(longname); |
|
|
buffer_free(&msg); |
buffer_free(&msg); |
|
|
|
|
local_path, strerror(errno)); |
local_path, strerror(errno)); |
do_close(conn, handle, handle_len); |
do_close(conn, handle, handle_len); |
buffer_free(&msg); |
buffer_free(&msg); |
xfree(handle); |
free(handle); |
return(-1); |
return(-1); |
} |
} |
|
|
|
|
read_error = 1; |
read_error = 1; |
max_req = 0; |
max_req = 0; |
TAILQ_REMOVE(&requests, req, tq); |
TAILQ_REMOVE(&requests, req, tq); |
xfree(req); |
free(req); |
num_req--; |
num_req--; |
break; |
break; |
case SSH2_FXP_DATA: |
case SSH2_FXP_DATA: |
|
|
max_req = 0; |
max_req = 0; |
} |
} |
progress_counter += len; |
progress_counter += len; |
xfree(data); |
free(data); |
|
|
if (len == req->len) { |
if (len == req->len) { |
TAILQ_REMOVE(&requests, req, tq); |
TAILQ_REMOVE(&requests, req, tq); |
xfree(req); |
free(req); |
num_req--; |
num_req--; |
} else { |
} else { |
/* Resend the request for the missing data */ |
/* Resend the request for the missing data */ |
|
|
} |
} |
close(local_fd); |
close(local_fd); |
buffer_free(&msg); |
buffer_free(&msg); |
xfree(handle); |
free(handle); |
|
|
return(status); |
return(status); |
} |
} |
|
|
} else |
} else |
logit("%s: not a regular file\n", new_src); |
logit("%s: not a regular file\n", new_src); |
|
|
xfree(new_dst); |
free(new_dst); |
xfree(new_src); |
free(new_src); |
} |
} |
|
|
if (pflag) { |
if (pflag) { |
|
|
|
|
ret = download_dir_internal(conn, src_canon, dst, |
ret = download_dir_internal(conn, src_canon, dst, |
dirattrib, pflag, printflag, 0); |
dirattrib, pflag, printflag, 0); |
xfree(src_canon); |
free(src_canon); |
return ret; |
return ret; |
} |
} |
|
|
|
|
debug3("In write loop, ack for %u %u bytes at %lld", |
debug3("In write loop, ack for %u %u bytes at %lld", |
ack->id, ack->len, (long long)ack->offset); |
ack->id, ack->len, (long long)ack->offset); |
++ackid; |
++ackid; |
xfree(ack); |
free(ack); |
} |
} |
offset += len; |
offset += len; |
if (offset < 0) |
if (offset < 0) |
|
|
|
|
if (showprogress) |
if (showprogress) |
stop_progress_meter(); |
stop_progress_meter(); |
xfree(data); |
free(data); |
|
|
if (status != SSH2_FX_OK) { |
if (status != SSH2_FX_OK) { |
error("Couldn't write to remote file \"%s\": %s", |
error("Couldn't write to remote file \"%s\": %s", |
|
|
|
|
if (do_close(conn, handle, handle_len) != SSH2_FX_OK) |
if (do_close(conn, handle, handle_len) != SSH2_FX_OK) |
status = -1; |
status = -1; |
xfree(handle); |
free(handle); |
|
|
return status; |
return status; |
} |
} |
|
|
} |
} |
} else |
} else |
logit("%s: not a regular file\n", filename); |
logit("%s: not a regular file\n", filename); |
xfree(new_dst); |
free(new_dst); |
xfree(new_src); |
free(new_src); |
} |
} |
|
|
do_setstat(conn, dst, &a); |
do_setstat(conn, dst, &a); |
|
|
} |
} |
|
|
ret = upload_dir_internal(conn, src, dst_canon, pflag, printflag, 0); |
ret = upload_dir_internal(conn, src, dst_canon, pflag, printflag, 0); |
xfree(dst_canon); |
free(dst_canon); |
return ret; |
return ret; |
} |
} |
|
|