Hi Mikel, On Mon, Feb 13, 2012 at 4:39 PM, Mikel Astiz <mikel.astiz.oss@xxxxxxxxx> wrote: > From: Mikel Astiz <mikel.astiz@xxxxxxxxxxxx> > > Previous implementation reported busy when trying to queue several > transfers in the same session. > --- > client/ftp.c | 39 +++++++++++---------------------------- > 1 files changed, 11 insertions(+), 28 deletions(-) > > diff --git a/client/ftp.c b/client/ftp.c > index 9e3f6b3..9be5d69 100644 > --- a/client/ftp.c > +++ b/client/ftp.c > @@ -48,7 +48,6 @@ static DBusConnection *conn = NULL; > > struct ftp_data { > struct obc_session *session; > - DBusMessage *msg; > }; > > static void async_cb(struct obc_session *session, GError *err, > @@ -176,36 +175,31 @@ static const GMarkupParser parser = { > static void get_file_callback(struct obc_session *session, GError *err, > void *user_data) > { > - struct ftp_data *ftp = user_data; > + DBusMessage *msg = user_data; > DBusMessage *reply; > > - if (!ftp->msg) > - return; > - > if (err) > - reply = g_dbus_create_error(ftp->msg, > + reply = g_dbus_create_error(msg, > "org.openobex.Error.Failed", > "%s", err->message); > else > - reply = dbus_message_new_method_return(ftp->msg); > + reply = dbus_message_new_method_return(msg); > > g_dbus_send_message(conn, reply); > - > - dbus_message_unref(ftp->msg); > - ftp->msg = NULL; > + dbus_message_unref(msg); > } > > static void list_folder_callback(struct obc_session *session, > GError *err, void *user_data) > { > - struct ftp_data *ftp = user_data; > + DBusMessage *msg = user_data; > GMarkupParseContext *ctxt; > DBusMessage *reply; > DBusMessageIter iter, array; > const char *buf; > size_t size; > > - reply = dbus_message_new_method_return(ftp->msg); > + reply = dbus_message_new_method_return(msg); > > buf = obc_session_get_buffer(session, &size); > if (size == 0) > @@ -224,8 +218,7 @@ static void list_folder_callback(struct obc_session *session, > > done: > g_dbus_send_message(conn, reply); > - dbus_message_unref(ftp->msg); > - ftp->msg = NULL; > + dbus_message_unref(msg); > } > > static DBusMessage *create_folder(DBusConnection *connection, > @@ -263,18 +256,13 @@ static DBusMessage *list_folder(DBusConnection *connection, > struct ftp_data *ftp = user_data; > struct obc_session *session = ftp->session; > > - if (ftp->msg) > - return g_dbus_create_error(message, > - "org.openobex.Error.InProgress", > - "Transfer in progress"); > - > if (obc_session_get(session, "x-obex/folder-listing", > - NULL, NULL, NULL, 0, list_folder_callback, ftp) < 0) > + NULL, NULL, NULL, 0, list_folder_callback, message) < 0) > return g_dbus_create_error(message, > "org.openobex.Error.Failed", > "Failed"); > > - ftp->msg = dbus_message_ref(message); > + dbus_message_ref(message); > > return NULL; > } > @@ -286,11 +274,6 @@ static DBusMessage *get_file(DBusConnection *connection, > struct obc_session *session = ftp->session; > const char *target_file, *source_file; > > - if (ftp->msg) > - return g_dbus_create_error(message, > - "org.openobex.Error.InProgress", > - "Transfer in progress"); > - > if (dbus_message_get_args(message, NULL, > DBUS_TYPE_STRING, &target_file, > DBUS_TYPE_STRING, &source_file, > @@ -299,12 +282,12 @@ static DBusMessage *get_file(DBusConnection *connection, > "org.openobex.Error.InvalidArguments", NULL); > > if (obc_session_get(session, NULL, source_file, > - target_file, NULL, 0, get_file_callback, ftp) < 0) > + target_file, NULL, 0, get_file_callback, message) < 0) > return g_dbus_create_error(message, > "org.openobex.Error.Failed", > "Failed"); > > - ftp->msg = dbus_message_ref(message); > + dbus_message_ref(message); > > return NULL; > } > -- > 1.7.6.5 Ack -- Luiz Augusto von Dentz -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html