struct callback_data {
struct obc_session *session;
+ guint id;
session_callback_t func;
void *data;
};
{
struct obc_session *session = callback->session;
+ if (callback->id > 0)
+ g_obex_cancel_req(session->obex, callback->id, TRUE);
+
callback->func(session, NULL, err, callback->data);
g_free(callback);
session->callback = NULL;
GError *gerr = NULL;
uint8_t rsp_code;
+ callback->id = 0;
+
if (err != NULL) {
error("connect_cb: %s", err->message);
gerr = g_error_copy(err);
len = g_obex_apparam_encode(apparam, buf, sizeof(buf));
if (driver->target)
- g_obex_connect(obex, connect_cb, callback, &err,
+ callback->id = g_obex_connect(obex, connect_cb,
+ callback, &err,
G_OBEX_HDR_TARGET,
driver->target, driver->target_len,
G_OBEX_HDR_APPARAM,
buf, len,
G_OBEX_HDR_INVALID);
else
- g_obex_connect(obex, connect_cb, callback, &err,
+ callback->id = g_obex_connect(obex, connect_cb,
+ callback, &err,
G_OBEX_HDR_APPARAM, buf, len,
G_OBEX_HDR_INVALID);
g_obex_apparam_free(apparam);
} else if (driver->target)
- g_obex_connect(obex, connect_cb, callback, &err,
+ callback->id = g_obex_connect(obex, connect_cb, callback, &err,
G_OBEX_HDR_TARGET, driver->target, driver->target_len,
G_OBEX_HDR_INVALID);
else
- g_obex_connect(obex, connect_cb, callback, &err,
- G_OBEX_HDR_INVALID);
+ callback->id = g_obex_connect(obex, connect_cb, callback,
+ &err, G_OBEX_HDR_INVALID);
if (err != NULL) {
error("%s", err->message);