Diff between eaa0966ae0a319945211732958d7c929a3552103 and d485fe8bbd5749c9d4df117a7af999be646bc04a

Changed Files

File Additions Deletions Status
obexd/plugins/ftp.c +18 -27 modified
obexd/plugins/opp.c +8 -15 modified
obexd/plugins/syncevolution.c +12 -17 modified
obexd/src/obex.c +1 -1 modified
obexd/src/service.h +1 -1 modified

Full Patch

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
@@ -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 d7cfd84..a57edff 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 7884aac..bd4d09a 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 086ca5e..94898a9 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 2955afe..8e625fc 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);