summaryrefslogtreecommitdiffstats
path: root/qacp.c
diff options
context:
space:
mode:
authorNathan Straz <nstraz@redhat.com>2013-08-30 14:40:17 -0400
committerNathan Straz <nstraz@redhat.com>2013-09-11 17:49:45 -0400
commit3669a0daa2b6094e85e203d21fce88ef9ea036d2 (patch)
tree9e4fd8d2d7f16845eb594336b650cce0d717ae63 /qacp.c
parent5a8fc22727bc20624dd915f1e6fd805ba5e0f85f (diff)
downloadqarsh-3669a0daa2b6094e85e203d21fce88ef9ea036d2.tar.gz
qarsh-3669a0daa2b6094e85e203d21fce88ef9ea036d2.tar.xz
qarsh-3669a0daa2b6094e85e203d21fce88ef9ea036d2.zip
Clean up memory leaks on send
Diffstat (limited to 'qacp.c')
-rw-r--r--qacp.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/qacp.c b/qacp.c
index 54474cf..0c23f7e 100644
--- a/qacp.c
+++ b/qacp.c
@@ -125,7 +125,6 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile)
{
struct qa_packet *qp;
int fd;
- int remfd;
ssize_t nbytes;
off_t offset;
struct stat sb;
@@ -160,17 +159,13 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile)
/* Await our return code from qarshd */
qp = recv_packet(qacp_fd);
if (qp && qp->qp_type == QP_RETURNCODE) {
- if (qp->qp_returncode.qp_rc == 0) {
- remfd = qp->qp_returncode.qp_errno;
- } else if (qp->qp_returncode.qp_rc == -1) {
+ if (qp->qp_returncode.qp_rc != 0) {
fprintf(stderr, "Remote side failed: %s\n",
qp->qp_returncode.qp_strerror);
- goto sendone_error;
- } else {
- fprintf(stderr, "Unexpected return code %d\n",
- qp->qp_returncode.qp_rc);
+ qpfree(qp);
goto sendone_error;
}
+ qpfree(qp);
} else {
fprintf(stderr, "Did not receive response to recvfile\n");
goto sendone_failure;
@@ -183,7 +178,7 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile)
fprintf(stderr, "read() error: %s\n", strerror(errno));
qp = make_qp_returncode(-1, errno, strerror(errno));
} else {
- qp = make_qp_data(remfd, offset, nbytes, buf);
+ qp = make_qp_data(0, offset, nbytes, buf);
}
send_packet(qacp_fd, qp);
offset += nbytes;
@@ -592,6 +587,7 @@ sendfiles(char **argv, int argc, int fileidx, short recursive)
free(rstatp);
}
+ free(freeme);
free(ruser);
free(rmtpath);