summaryrefslogtreecommitdiff
path: root/client/session.c
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz@bmw-carit.de>2012-05-30 17:50:17 +0200
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2012-05-31 16:16:08 +0300
commit518c73abb098e0d39dfc511c190bf041f96d9d58 (patch)
tree0457d2d2294f5446ea0ce8479a9432fa34226962 /client/session.c
parente59878d55e4ad8139eb74785210504d08129735f (diff)
downloadobexd-518c73abb098e0d39dfc511c190bf041f96d9d58.tar.gz
client: Remove D-Bus agent
The authorization mechanism is entirely removed from the session, and thus transfers are automatically started (once popped from the queue) without confirmation and without any name/filename change.
Diffstat (limited to 'client/session.c')
-rw-r--r--client/session.c218
1 files changed, 2 insertions, 216 deletions
diff --git a/client/session.c b/client/session.c
index 9c4c9f0..989439c 100644
--- a/client/session.c
+++ b/client/session.c
@@ -41,7 +41,6 @@
#include "log.h"
#include "transfer.h"
#include "session.h"
-#include "agent.h"
#include "driver.h"
#include "transport.h"
@@ -92,7 +91,6 @@ struct obc_session {
gchar *path; /* Session path */
DBusConnection *conn;
GObex *obex;
- struct obc_agent *agent;
struct pending_request *p;
gchar *owner; /* Session owner */
guint watch;
@@ -175,11 +173,6 @@ static void session_free(struct obc_session *session)
{
DBG("%p", session);
- if (session->agent) {
- obc_agent_release(session->agent);
- obc_agent_free(session->agent);
- }
-
if (session->queue) {
g_queue_foreach(session->queue, (GFunc) pending_request_free,
NULL);
@@ -529,60 +522,6 @@ void obc_session_shutdown(struct obc_session *session)
obc_session_unref(session);
}
-static DBusMessage *assign_agent(DBusConnection *connection,
- DBusMessage *message, void *user_data)
-{
- struct obc_session *session = user_data;
- const gchar *sender, *path;
-
- if (dbus_message_get_args(message, NULL,
- DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID) == FALSE)
- return g_dbus_create_error(message,
- "org.openobex.Error.InvalidArguments",
- "Invalid arguments in method call");
-
- sender = dbus_message_get_sender(message);
-
- if (obc_session_set_agent(session, sender, path) < 0)
- return g_dbus_create_error(message,
- "org.openobex.Error.AlreadyExists",
- "Already exists");
-
- return dbus_message_new_method_return(message);
-}
-
-static DBusMessage *release_agent(DBusConnection *connection,
- DBusMessage *message, void *user_data)
-{
- struct obc_session *session = user_data;
- struct obc_agent *agent = session->agent;
- const gchar *sender;
- gchar *path;
-
- if (dbus_message_get_args(message, NULL,
- DBUS_TYPE_OBJECT_PATH, &path,
- DBUS_TYPE_INVALID) == FALSE)
- return g_dbus_create_error(message,
- "org.openobex.Error.InvalidArguments",
- "Invalid arguments in method call");
-
- sender = dbus_message_get_sender(message);
-
- if (agent == NULL)
- return dbus_message_new_method_return(message);
-
- if (g_str_equal(sender, obc_agent_get_name(agent)) == FALSE ||
- g_str_equal(path, obc_agent_get_path(agent)) == FALSE)
- return g_dbus_create_error(message,
- "org.openobex.Error.NotAuthorized",
- "Not Authorized");
-
- obc_agent_free(agent);
-
- return dbus_message_new_method_return(message);
-}
-
static DBusMessage *session_get_properties(DBusConnection *connection,
DBusMessage *message, void *user_data)
{
@@ -685,79 +624,12 @@ static const GDBusMethodTable session_methods[] = {
{ GDBUS_METHOD("GetProperties",
NULL, GDBUS_ARGS({ "properties", "a{sv}" }),
session_get_properties) },
- { GDBUS_METHOD("AssignAgent",
- GDBUS_ARGS({ "agent", "o" }), NULL,
- assign_agent) },
- { GDBUS_METHOD("ReleaseAgent",
- GDBUS_ARGS({ "agent", "o" }), NULL,
- release_agent) },
{ GDBUS_ASYNC_METHOD("GetCapabilities",
NULL, GDBUS_ARGS({ "capabilities", "s" }),
get_capabilities) },
{ }
};
-static void session_request_reply(DBusPendingCall *call, gpointer user_data)
-{
- struct obc_session *session = user_data;
- struct pending_request *p = session->p;
- struct obc_transfer *transfer = p->transfer;
- DBusMessage *reply = dbus_pending_call_steal_reply(call);
- const char *name;
- DBusError derr;
- int err;
-
- dbus_error_init(&derr);
- if (dbus_set_error_from_message(&derr, reply)) {
- GError *gerr = NULL;
-
- error("Replied with an error: %s, %s",
- derr.name, derr.message);
- dbus_error_free(&derr);
- dbus_message_unref(reply);
-
- g_set_error(&gerr, OBEX_IO_ERROR, -ECANCELED, "%s",
- derr.message);
- session_terminate_transfer(session, transfer, gerr);
- g_clear_error(&gerr);
-
- return;
- }
-
- dbus_message_get_args(reply, NULL,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_INVALID);
-
- DBG("Agent.Request() reply: %s", name);
-
- if (strlen(name) == 0)
- goto done;
-
- if (obc_transfer_get_operation(transfer) == G_OBEX_OP_PUT) {
- obc_transfer_set_name(transfer, name);
- goto done;
- }
-
- err = obc_transfer_set_filename(transfer, name);
- if (err < 0) {
- GError *gerr = NULL;
-
- g_set_error(&gerr, OBEX_IO_ERROR, err,
- "Unable to set filename");
- session_terminate_transfer(session, transfer, gerr);
- g_clear_error(&gerr);
- return;
- }
-
-done:
- if (p->auth_complete)
- p->auth_complete(session, transfer);
-
- dbus_message_unref(reply);
-
- return;
-}
-
static gboolean session_request_proceed(gpointer data)
{
struct obc_session *session = data;
@@ -772,19 +644,8 @@ static gboolean session_request_proceed(gpointer data)
static int pending_request_auth(struct pending_request *p)
{
- struct obc_session *session = p->session;
- struct obc_agent *agent = session->agent;
- const char *path;
-
- path = obc_transfer_get_path(p->transfer);
-
- if (agent == NULL || path == NULL) {
- g_idle_add(session_request_proceed, session);
- return 0;
- }
-
- return obc_agent_request(agent, path, session_request_reply, session,
- NULL);
+ g_idle_add(session_request_proceed, p->session);
+ return 0;
}
guint obc_session_queue(struct obc_session *session,
@@ -911,18 +772,6 @@ static void session_terminate_transfer(struct obc_session *session,
static void session_notify_complete(struct obc_session *session,
struct obc_transfer *transfer)
{
- struct obc_agent *agent = session->agent;
- const char *path;
-
- path = obc_transfer_get_path(transfer);
-
- if (agent == NULL || path == NULL)
- goto done;
-
- obc_agent_notify_complete(agent, path);
-
-done:
-
DBG("Transfer(%p) complete", transfer);
session_terminate_transfer(session, transfer, NULL);
@@ -932,16 +781,6 @@ static void session_notify_error(struct obc_session *session,
struct obc_transfer *transfer,
GError *err)
{
- struct obc_agent *agent = session->agent;
- const char *path;
-
- path = obc_transfer_get_path(transfer);
- if (agent == NULL || path == NULL)
- goto done;
-
- obc_agent_notify_error(agent, path, err->message);
-
-done:
error("Transfer(%p) Error: %s", transfer, err->message);
session_terminate_transfer(session, transfer, err);
@@ -951,16 +790,6 @@ static void session_notify_progress(struct obc_session *session,
struct obc_transfer *transfer,
gint64 transferred)
{
- struct obc_agent *agent = session->agent;
- const char *path;
-
- path = obc_transfer_get_path(transfer);
- if (agent == NULL || path == NULL)
- goto done;
-
- obc_agent_notify_progress(agent, path, transferred);
-
-done:
DBG("Transfer(%p) progress: %ld bytes", transfer,
(long int ) transferred);
@@ -1030,49 +859,6 @@ fail:
return NULL;
}
-static void agent_destroy(gpointer data, gpointer user_data)
-{
- struct obc_session *session = user_data;
-
- session->agent = NULL;
-}
-
-int obc_session_set_agent(struct obc_session *session, const char *name,
- const char *path)
-{
- struct obc_agent *agent;
-
- if (session == NULL)
- return -EINVAL;
-
- if (session->agent)
- return -EALREADY;
-
- agent = obc_agent_create(session->conn, name, path, agent_destroy,
- session);
-
- if (session->watch == 0)
- obc_session_set_owner(session, name, owner_disconnected);
-
- session->agent = agent;
-
- return 0;
-}
-
-const char *obc_session_get_agent(struct obc_session *session)
-{
- struct obc_agent *agent;
-
- if (session == NULL)
- return NULL;
-
- agent = session->agent;
- if (agent == NULL)
- return NULL;
-
- return obc_agent_get_name(session->agent);
-}
-
const char *obc_session_get_owner(struct obc_session *session)
{
if (session == NULL)