diff options
author | Jaganath Kanakkassery <jaganath.k@samsung.com> | 2012-01-11 20:34:08 +0530 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-01-11 17:04:17 +0200 |
commit | f11d44a3325142e62cc31f0bd20efa3d0c997800 (patch) | |
tree | 4e5548b2c7bdce33b105029d1e5dbd43dcc5a6b1 | |
parent | dfad195ff043f9740c46815db82ed2f443859dcf (diff) | |
download | obexd-f11d44a3325142e62cc31f0bd20efa3d0c997800.tar.gz |
obex: Reset obex session in transfer_complete()
This fix solves the following issues in multiple file push.
Agent authorize is happening only for first file.
Transfer_completed signal is getting called only after last push
Incorrect value is sent for "total" and "transfered" signal from
second file onwards.
-rw-r--r-- | src/obex.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -265,6 +265,7 @@ static void os_reset_session(struct obex_session *os) os->offset = 0; os->size = OBJECT_SIZE_DELETE; os->headers_sent = FALSE; + os->checked = FALSE; } static void obex_session_free(struct obex_session *os) @@ -562,7 +563,7 @@ static void transfer_complete(GObex *obex, GError *err, gpointer user_data) if (err != NULL) { error("transfer failed: %s\n", err->message); - return; + goto reset; } if (os->object && os->driver && os->driver->flush) { @@ -570,8 +571,12 @@ static void transfer_complete(GObex *obex, GError *err, gpointer user_data) g_obex_suspend(os->obex); os->driver->set_io_watch(os->object, handle_async_io, os); + return; } } + +reset: + os_reset_session(os); } static int driver_get_headers(struct obex_session *os) |