diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index dd9fde7..2cacd50 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
}
}
-static gint ftp_delete(struct obex_session *os)
+static gint ftp_delete(struct OBEX_session *os)
{
+ const char *name = obex_session_get_name(os);
+ const char *folder = obex_get_folder(os);
gchar *path;
int ret = 0;
- if (!(os->current_folder && os->name))
+ if (!(folder && name))
return -EINVAL;
- path = g_build_filename(os->current_folder, os->name, NULL);
+ path = g_build_filename(folder, name, NULL);
if (os->driver->remove(path) < 0)
ret = -errno;
return os_prepare_put(os);
}
-static void ftp_put(obex_t *obex, obex_object_t *obj)
+static obex_rsp_t ftp_put(struct OBEX_session *os)
{
- struct obex_session *os;
+ const char *folder = obex_get_folder(os);
+ const char *name = obex_session_get_name(os);
+ ssize_t size = obex_session_get_size(os);
int ret = 0;
- os = OBEX_GetUserData(obex);
- if (os == NULL)
- return;
-
- if (os->current_folder == NULL) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
- return;
- }
+ if (folder == NULL)
+ return OBEX_RSP_FORBIDDEN;
- if (os->name == NULL) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_BAD_REQUEST, OBEX_RSP_BAD_REQUEST);
- return;
- }
+ if (name == NULL)
+ return OBEX_RSP_BAD_REQUEST;
- if (os->size == OBJECT_SIZE_DELETE)
+ if (size == OBJECT_SIZE_DELETE)
ret = ftp_delete(os);
switch (ret) {
case 0:
- OBEX_ObjectSetRsp(obj, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
- break;
+ return OBEX_RSP_SUCCESS;
case -ENOENT:
- OBEX_ObjectSetRsp(obj, OBEX_RSP_NOT_FOUND, OBEX_RSP_NOT_FOUND);
- break;
+ return OBEX_RSP_NOT_FOUND;
case -ENOTEMPTY:
- OBEX_ObjectSetRsp(obj, OBEX_RSP_PRECONDITION_FAILED,
- OBEX_RSP_PRECONDITION_FAILED);
- break;
+ return OBEX_RSP_PRECONDITION_FAILED;
default:
- OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
- break;
+ return OBEX_RSP_FORBIDDEN;
}
}
diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c
index d7cfd84..a57edff 100644
--- a/obexd/plugins/opp.c
+++ b/obexd/plugins/opp.c
return os_prepare_put(os);
}
-static void opp_put(obex_t *obex, obex_object_t *obj)
+static obex_rsp_t opp_put(struct OBEX_session *os)
{
- struct obex_session *os;
-
- os = OBEX_GetUserData(obex);
- if (os == NULL)
- return;
+ const char *name = obex_session_get_name(os);
+ const char *folder = obex_get_folder(os);
- if (os->current_folder == NULL) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
- return;
- }
+ if (folder == NULL)
+ return OBEX_RSP_FORBIDDEN;
- if (os->name == NULL) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_BAD_REQUEST, OBEX_RSP_BAD_REQUEST);
- return;
- }
+ if (name == NULL)
+ return OBEX_RSP_BAD_REQUEST;
- OBEX_ObjectSetRsp(obj, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
+ return OBEX_RSP_SUCCESS;
}
static obex_rsp_t opp_get(struct OBEX_session *os)
diff --git a/obexd/plugins/syncevolution.c b/obexd/plugins/syncevolution.c
index 7884aac..bd4d09a 100644
--- a/obexd/plugins/syncevolution.c
+++ b/obexd/plugins/syncevolution.c
return OBEX_RSP_FORBIDDEN;
}
-static void synce_put(obex_t *obex, obex_object_t *obj)
+static obex_rsp_t synce_put(struct OBEX_session *os)
{
- struct obex_session *os;
struct synce_context *context;
DBusMessage *msg;
DBusMessageIter iter, array_iter;
DBusPendingCall *call;
-
- os = OBEX_GetUserData(obex);
- if (!os)
- return;
+ const char *type = obex_session_get_type(os);
context = find_context(os);
if (!context)
- return;
+ return OBEX_RSP_SERVICE_UNAVAILABLE;
- if (!context->conn_obj) {
- OBEX_ObjectSetRsp(obj, OBEX_RSP_SERVICE_UNAVAILABLE,
- OBEX_RSP_SERVICE_UNAVAILABLE);
- return;
- }
+ if (!context->conn_obj)
+ return OBEX_RSP_SERVICE_UNAVAILABLE;
msg = dbus_message_new_method_call(SYNCE_BUS_NAME, context->conn_obj,
SYNCE_CONN_INTERFACE, "Process");
if (!msg)
- return;
+ return OBEX_RSP_SERVICE_UNAVAILABLE;
dbus_message_iter_init_append(msg, &iter);
dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
DBUS_TYPE_BYTE_AS_STRING, &array_iter);
+ /* FIXME: broken */
+#if 0
dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_BYTE,
&os->buf, os->offset);
+#endif
dbus_message_iter_close_container(&iter, &array_iter);
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &os->type,
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &type,
DBUS_TYPE_INVALID);
if (!dbus_connection_send_with_reply(context->dbus_conn, msg,
&call, -1)) {
error("D-Bus call to %s failed.", SYNCE_CONN_INTERFACE);
dbus_message_unref(msg);
- OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
- return;
+ return OBEX_RSP_FORBIDDEN;
}
dbus_pending_call_set_notify(call, process_cb, os, NULL);
dbus_message_unref(msg);
dbus_pending_call_unref(call);
- OBEX_ObjectSetRsp(obj, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
+ return OBEX_RSP_SUCCESS;
}
static obex_rsp_t synce_get(struct OBEX_session *os)
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 086ca5e..94898a9 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
return;
}
- os->service->put(obex, obj);
+ os->service->put(os);
}
static void obex_event(obex_t *obex, obex_object_t *obj, gint mode,
diff --git a/obexd/src/service.h b/obexd/src/service.h
index 2955afe..8e625fc 100644
--- a/obexd/src/service.h
+++ b/obexd/src/service.h
obex_rsp_t (*connect) (struct OBEX_session *os);
void (*progress) (struct OBEX_session *os);
obex_rsp_t (*get) (struct OBEX_session *os);
- void (*put) (obex_t *obex, obex_object_t *obj);
+ obex_rsp_t (*put) (struct OBEX_session *os);
gint (*chkput) (obex_t *obex, obex_object_t *obj);
obex_rsp_t (*setpath) (struct OBEX_session *os, obex_object_t *obj);
void (*disconnect) (struct OBEX_session *os);