From d485fe8bbd5749c9d4df117a7af999be646bc04a Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Fri, 26 Feb 2010 14:22:07 -0300 Subject: [PATCH] obexd: Cleanup of put function of OBEX service driver --- obexd/plugins/ftp.c | 45 ++++++++++++++--------------------- obexd/plugins/opp.c | 23 +++++++----------- obexd/plugins/syncevolution.c | 29 ++++++++++------------ obexd/src/obex.c | 2 +- obexd/src/service.h | 2 +- 5 files changed, 40 insertions(+), 61 deletions(-) diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c index dd9fde7bb..2cacd50c1 100644 --- a/obexd/plugins/ftp.c +++ b/obexd/plugins/ftp.c @@ -225,15 +225,17 @@ fail: } } -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; @@ -260,42 +262,31 @@ static gint ftp_chkput(obex_t *obex, obex_object_t *obj) 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 d7cfd84df..a57edff8c 100644 --- a/obexd/plugins/opp.c +++ b/obexd/plugins/opp.c @@ -150,25 +150,18 @@ skip_auth: 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 7884aacd9..bd4d09a97 100644 --- a/obexd/plugins/syncevolution.c +++ b/obexd/plugins/syncevolution.c @@ -344,49 +344,44 @@ failed: 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); @@ -394,7 +389,7 @@ static void synce_put(obex_t *obex, obex_object_t *obj) 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 086ca5ef7..94898a953 100644 --- a/obexd/src/obex.c +++ b/obexd/src/obex.c @@ -792,7 +792,7 @@ static void cmd_put(struct obex_session *os, obex_t *obex, obex_object_t *obj) 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 2955afe37..8e625fce4 100644 --- a/obexd/src/service.h +++ b/obexd/src/service.h @@ -35,7 +35,7 @@ struct obex_service_driver { 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); -- 2.47.3