From e40b17d3861b3e9a2aac0ec7ba70409270b38afa Mon Sep 17 00:00:00 2001 From: Slawomir Bochenski Date: Fri, 14 Jan 2011 11:04:05 +0100 Subject: [PATCH] obexd: Fix plugin close & disconnect functions call order Normally during an OBEX session, calling sequence service->connect - [driver->open - driver->close]* - service->disconnect is kept. The only exception to this when the connection is reset (when no ABORT was sent) during transfer. Then the sequence is: service->connect - [driver->open - driver->close]* - driver->open - service->disconnect - driver->close This patch fixes it, so memory managament of session/transfer data in service plugin can be easier. --- obexd/src/obex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/obexd/src/obex.c b/obexd/src/obex.c index 65f17fc67..e45ed7468 100644 --- a/obexd/src/obex.c +++ b/obexd/src/obex.c @@ -317,8 +317,6 @@ static void obex_session_free(struct obex_session *os) { sessions = g_slist_remove(sessions, os); - os_reset_session(os); - if (os->io) g_io_channel_unref(os->io); @@ -1231,6 +1229,8 @@ static void obex_handle_destroy(void *user_data) os = OBEX_GetUserData(obex); + os_reset_session(os); + if (os->service && os->service->disconnect) os->service->disconnect(os, os->service_data); -- 2.47.3