#define BT_OBEX_MANAGER "org.bluez.obex.AgentManager1"
#define BT_OBEX_PATH "/org/bluez/obex"
+#define BT_OBEX_PATH_PREFIX "/opt/usr/media"
+#define BT_OBEX_DEFAULT_PATH "/opt/usr/home/owner/media"
+#define BT_OBEX_PATH_MAX_LENGTH 255
+
typedef struct {
char *filename;
device_path = _bt_get_device_object_path((char *)bdaddress);
retv_if(device_path == NULL, NULL);
- conn = _bt_get_system_gconn();
+ conn = _bt_gdbus_get_system_gconn();
retv_if(conn == NULL, NULL);
BT_INFO("Device_path %s", device_path);
device_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
device_path = _bt_get_device_object_path((char *)bdaddress);
ret_if(device_path == NULL);
- conn = _bt_get_system_gconn();
+ conn = _bt_gdbus_get_system_gconn();
ret_if(conn == NULL);
BT_INFO("Device_path %s", device_path);
device_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
g_variant_unref(temp_value);
DBG_SECURE("Name = %s", name);
}
- temp_value = g_variant_lookup_value (value, "IsAliasSet", G_VARIANT_TYPE_BOOLEAN);
+ temp_value = g_variant_lookup_value(value, "IsAliasSet", G_VARIANT_TYPE_BOOLEAN);
if (temp_value) {
is_alias_set = g_variant_get_boolean(temp_value);
g_variant_unref(temp_value);
GDBusProxy *proxy;
GError *err = NULL;
- conn = _bt_get_session_gconn();
+ conn = _bt_gdbus_get_session_gconn();
retv_if(conn == NULL, NULL);
proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
GDBusConnection *conn;
GDBusProxy *proxy;
GError *err = NULL;
- conn = _bt_get_session_gconn();
+ conn = _bt_gdbus_get_session_gconn();
retv_if(conn == NULL, NULL);
proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
GVariant *val;
gsize len = 0;
while (g_variant_iter_loop(iter, "{sv}", &key, &val)) {
- if (g_strcmp0(key, "Name") == 0) {
+ if (g_strcmp0(key, "Name") == 0)
agent_info.auth_info->filename = g_variant_dup_string(val, &len);
- } else if (g_strcmp0(key, "Address") == 0) {
+ else if (g_strcmp0(key, "Address") == 0)
bdaddress = g_variant_dup_string(val, &len);
- } else if (g_strcmp0(key, "Size") == 0) {
+ else if (g_strcmp0(key, "Size") == 0)
agent_info.auth_info->file_size = g_variant_get_uint64(val);
- }
}
g_variant_iter_free(iter);
}
memcpy(agent_info.auth_info->contact_auth_info, auth_info, 5);
session_info = __bt_find_session_by_path((char *)path);
- if(NULL == session_info) {
+ if (NULL == session_info) {
session_info = g_malloc0(sizeof(bt_session_info_t));
session_info->path = g_strdup(path);
session_info->address = g_strdup(bdaddress);
return TRUE;
}
- if(session_info->authorized == FALSE) {
+ if (session_info->authorized == FALSE) {
_bt_launch_system_popup(BT_AGENT_EVENT_EXCHANGE_REQUEST, device_name,
auth_info, NULL, NULL, BT_OBEX_SERVER_AGENT_PATH);
} else {
BT_DBG("Transfer id %d", transfer_info->transfer_id);
builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
- for (i = 0; i < 5; i++)
- g_variant_builder_add(builder, "y", agent_info.auth_info->contact_auth_info[i]);
+ for (i = 0; i < 5; i++) {
+ if (agent_info.auth_info)
+ g_variant_builder_add(builder, "y", agent_info.auth_info->contact_auth_info[i]);
+ }
param = g_variant_new("(isssstii(ay))", result,
transfer_info->device_name,
__bt_free_auth_info(agent_info.auth_info);
agent_info.auth_info = NULL;
- g_variant_builder_unref (builder);
+ g_variant_builder_unref(builder);
_bt_send_event(BT_OPP_SERVER_EVENT,
BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED,
_bt_send_event(BT_OPP_SERVER_EVENT,
BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED,
param);
- g_variant_builder_unref (builder);
+ g_variant_builder_unref(builder);
}
param = g_variant_new("(issssstii)", result,
transfer_info->filename,
GError *g_error = NULL;
/* Get the session bus. */
- g_conn = _bt_get_session_gconn();
+ g_conn = _bt_gdbus_get_session_gconn();
retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
_bt_obex_agent_new(BT_OBEX_SERVER_AGENT_PATH);
BT_OBEX_MANAGER,
NULL, &g_error);
- if (manager_proxy == NULL) {
+ if (manager_proxy == NULL)
return BLUETOOTH_ERROR_INTERNAL;
- }
result = g_dbus_proxy_call_sync(manager_proxy, "RegisterAgent",
g_variant_new("(o)", BT_OBEX_SERVER_AGENT_PATH),
return TRUE;
}
+char *__bt_transfer_folder_path(char *dest_path)
+{
+ char *dst_path = (char *)g_malloc0(BT_OBEX_PATH_MAX_LENGTH);
+ if (g_str_has_prefix(dest_path, BT_OBEX_PATH_PREFIX))
+ snprintf(dst_path, BT_OBEX_PATH_MAX_LENGTH, BT_OBEX_DEFAULT_PATH"%s", dest_path + strlen(BT_OBEX_PATH_PREFIX));
+ else
+ snprintf(dst_path, BT_OBEX_PATH_MAX_LENGTH, "%s", dest_path);
+
+ BT_INFO("obex transfed path : %s", dst_path);
+ return dst_path;
+}
+
int _bt_obex_server_allocate(char *sender, const char *dest_path, int app_pid, gboolean is_native)
{
BT_DBG("+");
- if (__bt_check_folder_path(dest_path) == FALSE)
+
+ char *dst_path;
+ dst_path = __bt_transfer_folder_path((char *)dest_path);
+
+ if (__bt_check_folder_path(dst_path) == FALSE) {
+ g_free(dst_path);
return BLUETOOTH_ERROR_INVALID_PARAM;
+ }
if (is_native == TRUE) {
- retv_if(agent_info.native_server,
- BLUETOOTH_ERROR_DEVICE_BUSY);
+ if (agent_info.native_server) {
+ BT_ERR("obex native server busy");
+ g_free(dst_path);
+ return BLUETOOTH_ERROR_DEVICE_BUSY;
+ }
/* Force to change the control to native */
agent_info.native_server = g_malloc0(sizeof(bt_server_info_t));
- agent_info.native_server->dest_path = g_strdup(dest_path);
+ agent_info.native_server->dest_path = g_strdup(dst_path);
agent_info.native_server->sender = g_strdup(sender);
agent_info.native_server->app_pid = app_pid;
agent_info.server_type = BT_NATIVE_SERVER;
_bt_unregister_osp_server_in_agent(BT_OBEX_SERVER, NULL);
} else {
- retv_if(agent_info.custom_server,
- BLUETOOTH_ERROR_DEVICE_BUSY);
+ if (agent_info.custom_server) {
+ BT_ERR("obex custom server busy");
+ g_free(dst_path);
+ return BLUETOOTH_ERROR_DEVICE_BUSY;
+ }
/* Force to change the control to custom */
agent_info.custom_server = g_malloc0(sizeof(bt_server_info_t));
- agent_info.custom_server->dest_path = g_strdup(dest_path);
+ agent_info.custom_server->dest_path = g_strdup(dst_path);
agent_info.custom_server->sender = g_strdup(sender);
agent_info.custom_server->app_pid = app_pid;
agent_info.server_type = BT_CUSTOM_SERVER;
_bt_register_osp_server_in_agent(BT_OBEX_SERVER, NULL, NULL, -1);
}
+
+ g_free(dst_path);
BT_DBG("-");
return BLUETOOTH_ERROR_NONE;
}
_bt_send_event(BT_OPP_SERVER_EVENT, BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, param);
session_info = __bt_find_session_by_path(agent_info.auth_info->transfer_path);
- if(NULL == session_info) {
+
+ if (NULL == session_info)
BT_ERR("Couldn't get the session info from the list");
- } else {
+ else
session_info->authorized = TRUE;
- }
}
int _bt_obex_server_reject_authorize(void)
gboolean is_native)
{
bt_server_info_t *server_info;
-
BT_CHECK_PARAMETER(dest_path, return);
+ char *dst_path;
+ dst_path = __bt_transfer_folder_path((char *)dest_path);
+
DIR *dp = NULL;
- dp = opendir(dest_path);
+ dp = opendir(dst_path);
if (dp == NULL) {
BT_ERR("The directory does not exist");
+ g_free(dst_path);
return BLUETOOTH_ERROR_INVALID_PARAM;
}
else
server_info = agent_info.custom_server;
- retv_if(server_info == NULL,
- BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST);
+ if (!server_info) {
+ BT_ERR("obex server info is NULL");
+ g_free(dst_path);
+ return BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST;
+ }
g_free(server_info->dest_path);
- server_info->dest_path = g_strdup(dest_path);
+ server_info->dest_path = g_strdup(dst_path);
+ g_free(dst_path);
return BLUETOOTH_ERROR_NONE;
}
BT_CHECK_PARAMETER(root, return);
- retv_if(agent_info.proxy == NULL,
- BLUETOOTH_ERROR_INTERNAL);
+ char *dst_root;
+ dst_root = __bt_transfer_folder_path((char *)root);
+
+ if (!agent_info.proxy) {
+ BT_ERR("obex agent_info proxy error");
+ g_free(dst_root);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
- dp = opendir(root);
+ dp = opendir(dst_root);
if (dp == NULL) {
BT_ERR("The directory does not exist");
+ g_free(dst_root);
return BLUETOOTH_ERROR_INVALID_PARAM;
}
closedir(dp);
- folder = g_variant_new_string(root);
+ folder = g_variant_new_string(dst_root);
result = g_dbus_proxy_call_sync(agent_info.proxy, "SetProperty",
g_variant_new("(sv)", string, folder),
G_DBUS_CALL_FLAGS_NONE,
if (g_error) {
BT_ERR("SetProperty Fail: %s", g_error->message);
g_error_free(g_error);
+ g_free(dst_root);
return BLUETOOTH_ERROR_INTERNAL;
}
if (result)
g_variant_unref(result);
+ g_free(dst_root);
return BLUETOOTH_ERROR_NONE;
}
{
BT_CHECK_PARAMETER(activated, return);
- if (agent_info.custom_server) {
+ if (agent_info.custom_server)
*activated = TRUE;
- } else {
+ else
*activated = FALSE;
- }
return BLUETOOTH_ERROR_NONE;
}
{
BT_CHECK_PARAMETER(allocation, return);
- if (agent_info.native_server || agent_info.custom_server) {
+ if (agent_info.native_server || agent_info.custom_server)
*allocation = TRUE;
- } else {
+ else
*allocation = FALSE;
- }
return BLUETOOTH_ERROR_NONE;
}
{
BT_CHECK_PARAMETER(receiving, return);
- if (transfers == NULL || g_slist_length(transfers) == 0) {
+ if (transfers == NULL || g_slist_length(transfers) == 0)
*receiving = FALSE;
- } else {
+ else
*receiving = TRUE;
- }
return BLUETOOTH_ERROR_NONE;
}