diff options
author | Hans de Goede <hdegoede@redhat.com> | 2013-02-22 16:53:03 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2013-02-22 17:54:23 +0100 |
commit | 80276ad30b1d60f49c33ce91a59e68ca2ef53f34 (patch) | |
tree | c51ba0eb7c51139649338c233d3552d09a8ba09e /src | |
parent | 765803fce0c880b471e6f2e03b6641a92d05a919 (diff) | |
download | vd_agent-80276ad30b1d60f49c33ce91a59e68ca2ef53f34.tar.gz vd_agent-80276ad30b1d60f49c33ce91a59e68ca2ef53f34.tar.xz vd_agent-80276ad30b1d60f49c33ce91a59e68ca2ef53f34.zip |
file-xfers: unlink the (partial) file on cancel / error
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/vdagent-file-xfers.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/vdagent-file-xfers.c b/src/vdagent-file-xfers.c index a562def..f2f3a4c 100644 --- a/src/vdagent-file-xfers.c +++ b/src/vdagent-file-xfers.c @@ -60,10 +60,11 @@ static void vdagent_file_xfer_task_free(gpointer data) g_return_if_fail(task != NULL); if (task->file_fd > 0) { + syslog(LOG_ERR, "file-xfer: Removing task %u and file %s due to error", + task->id, task->file_name); close(task->file_fd); - } - - if (task->debug) + unlink(task->file_name); + } else if (task->debug) syslog(LOG_DEBUG, "file-xfer: Removing task %u %s", task->id, task->file_name); @@ -239,12 +240,14 @@ void vdagent_file_xfers_data(struct vdagent_file_xfers *xfers, task->read_bytes += msg->size; if (task->read_bytes >= task->file_size) { - if (task->read_bytes > task->file_size) { + if (task->read_bytes == task->file_size) { + if (xfers->debug) + syslog(LOG_DEBUG, "file-xfer: task %u %s has completed", + task->id, task->file_name); + close(task->file_fd); + task->file_fd = -1; + } else syslog(LOG_ERR, "file-xfer: error received too much data"); - } - if (xfers->debug) - syslog(LOG_DEBUG, "file-xfer: task %u %s has completed", - task->id, task->file_name); g_hash_table_remove(xfers->xfers, GINT_TO_POINTER(msg->id)); } } |