summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorRadoslaw Pajak <r.pajak@samsung.com>2013-10-18 11:42:21 +0200
committerLubomir Rintel <lkundrak@v3.sk>2015-02-11 11:50:40 +0100
commitb47d407aa2185a35215f025817b238fd2870c60b (patch)
tree1cb9514244997d90ba1a2fc261522cf7bcb5c06c /dbus
parenta5465e13eaa621915f8d863a9f59977f3cfadf07 (diff)
[daemon-dev][lib-opt] Bus making in daemon distinguishes bus type, lib optimalization
- daemon now distinguish type of the bus when he creates it - library (transport) optimalization Change-Id: I55fa7a1c283a16e8b97cb747bf557a8358de9927 Signed-off-by: Radoslaw Pajak <r.pajak@samsung.com>
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-transport-kdbus.c32
-rw-r--r--dbus/kdbus-common.c2
2 files changed, 17 insertions, 17 deletions
diff --git a/dbus/dbus-transport-kdbus.c b/dbus/dbus-transport-kdbus.c
index da5dd631..6e48d4ab 100644
--- a/dbus/dbus-transport-kdbus.c
+++ b/dbus/dbus-transport-kdbus.c
@@ -264,11 +264,10 @@ static struct kdbus_msg* kdbus_init_msg(const char* name, __u64 dst_id, uint64_t
* @param encoded flag if the message is encoded
* @return size of data sent
*/
-static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message, dbus_bool_t encoded)
+static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message, const char* destination, dbus_bool_t encoded)
{
struct kdbus_msg *msg;
struct kdbus_item *item;
- const char *name;
uint64_t dst_id = KDBUS_DST_ID_BROADCAST;
const DBusString *header;
const DBusString *body;
@@ -280,14 +279,14 @@ static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message,
unsigned fds_count;
dbus_bool_t autostart;
- // determine name and destination id
- if((name = dbus_message_get_destination(message)))
+ // determine destination and destination id
+ if(destination)
{
dst_id = KDBUS_DST_ID_WELL_KNOWN_NAME;
- if((name[0] == ':') && (name[1] == '1') && (name[2] == '.')) /* if name starts with ":1." it is a unique name and should be send as number */
+ if((destination[0] == ':') && (destination[1] == '1') && (destination[2] == '.')) /* if name starts with ":1." it is a unique name and should be send as number */
{
- dst_id = strtoull(&name[3], NULL, 10);
- name = NULL;
+ dst_id = strtoull(&destination[3], NULL, 10);
+ destination = NULL;
}
}
@@ -309,7 +308,7 @@ static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message,
_dbus_message_get_unix_fds(message, &unix_fds, &fds_count);
// init basic message fields
- msg = kdbus_init_msg(name, dst_id, body_size, use_memfd, fds_count, transport);
+ msg = kdbus_init_msg(destination, dst_id, body_size, use_memfd, fds_count, transport);
msg->cookie = dbus_message_get_serial(message);
autostart = dbus_message_get_auto_start (message);
if(!autostart)
@@ -387,12 +386,12 @@ static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message,
memcpy(item->fds, unix_fds, sizeof(int) * fds_count);
}
- if (name)
+ if (destination)
{
item = KDBUS_PART_NEXT(item);
item->type = KDBUS_MSG_DST_NAME;
- item->size = KDBUS_PART_HEADER_SIZE + strlen(name) + 1;
- memcpy(item->str, name, item->size - KDBUS_PART_HEADER_SIZE);
+ item->size = KDBUS_PART_HEADER_SIZE + strlen(destination) + 1;
+ memcpy(item->str, destination, item->size - KDBUS_PART_HEADER_SIZE);
}
else if (dst_id == KDBUS_DST_ID_BROADCAST)
{
@@ -428,7 +427,8 @@ static int kdbus_write_msg(DBusTransportSocket *transport, DBusMessage *message,
}
out:
free(msg);
- close(transport->memfd);
+ if(use_memfd)
+ close(transport->memfd);
return ret_size;
}
@@ -2115,7 +2115,7 @@ do_writing (DBusTransport *transport)
message = _dbus_connection_get_message_to_send (transport->connection);
_dbus_assert (message != NULL);
- if(dbus_message_get_sender(message) == NULL) //needed for daemon
+// if(dbus_message_get_sender(message) == NULL) //needed for daemon todo check if really needed
{
dbus_message_unlock(message);
dbus_message_set_sender(message, socket_transport->sender);
@@ -2127,7 +2127,7 @@ do_writing (DBusTransport *transport)
if(pDestination)
{
- if(!strcmp(pDestination, "org.freedesktop.DBus"))
+ if(!strcmp(pDestination, DBUS_SERVICE_DBUS))
{
if(!strcmp(dbus_message_get_interface(message), DBUS_INTERFACE_DBUS))
{
@@ -2172,14 +2172,14 @@ do_writing (DBusTransport *transport)
if(total_bytes_to_write > socket_transport->max_bytes_written_per_iteration)
return -E2BIG;
- bytes_written = kdbus_write_msg(socket_transport, message, TRUE);
+ bytes_written = kdbus_write_msg(socket_transport, message, pDestination, TRUE);
}
else
{
if(total_bytes_to_write > socket_transport->max_bytes_written_per_iteration)
return -E2BIG;
- bytes_written = kdbus_write_msg(socket_transport, message, FALSE);
+ bytes_written = kdbus_write_msg(socket_transport, message, pDestination, FALSE);
}
written:
diff --git a/dbus/kdbus-common.c b/dbus/kdbus-common.c
index fe04a2ec..de618edc 100644
--- a/dbus/kdbus-common.c
+++ b/dbus/kdbus-common.c
@@ -107,7 +107,7 @@ dbus_bool_t register_kdbus_policy(const char* name, int fd)
if (ioctl(fd, KDBUS_CMD_EP_POLICY_SET, cmd_policy) < 0)
{
- _dbus_verbose ("Error setting policy: %m, %d", errno);
+ _dbus_verbose ("Error setting policy: %m, %d\n", errno);
return FALSE;
}