Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
86
Issues
86
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
33
Merge Requests
33
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chakra
Packages
core
Commits
1c33149d
Commit
1c33149d
authored
Jul 15, 2013
by
Fabian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbus update: don't unify the dbus stuff
parent
5e3b19a4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
191 additions
and
9 deletions
+191
-9
dbus-core/PKGBUILD
dbus-core/PKGBUILD
+8
-9
dbus-core/systemd-user-session.patch
dbus-core/systemd-user-session.patch
+183
-0
No files found.
dbus-core/PKGBUILD
View file @
1c33149d
...
...
@@ -4,8 +4,8 @@
# maintainer: abveritas@chakra-project.org
pkgname
=
dbus-core
pkgver
=
1.6.
4
pkgrel
=
3
pkgver
=
1.6.
12
pkgrel
=
1
pkgdesc
=
"Freedesktop.org message bus system"
url
=
"http://www.freedesktop.org/Software/dbus"
arch
=(
i686 x86_64
)
...
...
@@ -14,9 +14,11 @@ depends=('expat' 'coreutils' 'filesystem' 'shadow') # shadow for install scriptl
makedepends
=(
'libx11'
'systemd'
)
options
=(!
libtool
)
install
=
dbus.install
source
=(
http://dbus.freedesktop.org/releases/dbus/dbus-
$pkgver
.tar.gz
{
,.asc
})
md5sums
=(
'5ec43dc4554cba638917317b2b4f7640'
'3d4482ee39b49da334441c76f83bf1cb'
)
source
=(
http://dbus.freedesktop.org/releases/dbus/dbus-
$pkgver
.tar.gz
"systemd-user-session.patch"
)
md5sums
=(
'a70edc50524f258eaf5c9a9994ed8748'
'd8a1bd529b3ddca671ee1a695a143db9'
)
build
()
{
cd
dbus-
$pkgver
...
...
@@ -24,12 +26,12 @@ build() {
--libexecdir
=
/usr/lib/dbus-1.0
--with-dbus-user
=
81
\
--with-system-pid-file
=
/run/dbus/pid
\
--with-system-socket
=
/run/dbus/system_bus_socket
\
--with-console-auth-dir
=
/run/console/
\
--enable-inotify
--disable-dnotify
\
--disable-verbose-mode
--disable-static
\
--disable-tests
--disable-asserts
\
--with-systemdsystemunitdir
=
/usr/lib/systemd/system
\
--enable-systemd
patch
-p1
<
"
$srcdir
/systemd-user-session.patch"
make
}
...
...
@@ -41,9 +43,6 @@ package(){
rm
-f
"
$pkgdir
/usr/share/man/man1/dbus-launch.1"
rm
-rf
"
$pkgdir
/var/run"
#install -m755 -d "$pkgdir/etc/rc.d"
#install -m755 ../dbus "$pkgdir/etc/rc.d/"
#Fix configuration file
sed
-i
-e
's|<user>81</user>|<user>dbus</user>|'
"
$pkgdir
/etc/dbus-1/system.conf"
...
...
dbus-core/systemd-user-session.patch
0 → 100644
View file @
1c33149d
commit d728fdc655f17031da3bb129ab2fd17dadf0fe3a
Author: Simon Peeters <peeters.simon@gmail.com>
Date: 8 weeks ago
Set correct address when using --address=systemd:
When dbus gets launched through systemd, we need to create an address
string based on the sockets passed.
The _dbus_append_addres_from_socket() function is responsible for
extracting the address information from the file-descriptor and
formatting it in a dbus friendly way.
This fixes bus activation when running dbus under a systemd session.
https://bugs.freedesktop.org/show_bug.cgi?id=50962
Signed-off-by: Simon Peeters <peeters.simon@gmail.com>
diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c
index 130f66e..d995240 100644
--- a/dbus/dbus-server-unix.c
+++ b/dbus/dbus-server-unix.c
@@ -149,7 +149,7 @@
_dbus_server_listen_platform_specific (DBusAddressEntry *entry,
}
else if (strcmp (method, "systemd") == 0)
{
- int n, *fds;
+ int i, n, *fds;
DBusString address;
n = _dbus_listen_systemd_sockets (&fds, error);
@@ -159,27 +159,39 @@
_dbus_server_listen_platform_specific (DBusAddressEntry *entry,
return DBUS_SERVER_LISTEN_DID_NOT_CONNECT;
}
- _dbus_string_init_const (&address, "systemd:");
+ if (!_dbus_string_init (&address))
+ goto systemd_oom;
- *server_p = _dbus_server_new_for_socket (fds, n, &address, NULL);
- if (*server_p == NULL)
+ for (i = 0; i < n; i++)
{
- int i;
-
- for (i = 0; i < n; i++)
+ if (i > 0)
{
- _dbus_close_socket (fds[i], NULL);
+ if (!_dbus_string_append (&address, ";"))
+ goto systemd_oom;
}
- dbus_free (fds);
-
- dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);
- return DBUS_SERVER_LISTEN_DID_NOT_CONNECT;
+ if (!_dbus_append_address_from_socket (fds[i], &address, error))
+ goto systemd_err;
}
+ *server_p = _dbus_server_new_for_socket (fds, n, &address, NULL);
+ if (*server_p == NULL)
+ goto systemd_oom;
+
dbus_free (fds);
return DBUS_SERVER_LISTEN_OK;
- }
+ systemd_oom:
+ _DBUS_SET_OOM (error);
+ systemd_err:
+ for (i = 0; i < n; i++)
+ {
+ _dbus_close_socket (fds[i], NULL);
+ }
+ dbus_free (fds);
+ _dbus_string_free (&address);
+
+ return DBUS_SERVER_LISTEN_DID_NOT_CONNECT;
+ }
#ifdef DBUS_ENABLE_LAUNCHD
else if (strcmp (method, "launchd") == 0)
{
diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
index b4ecc96..55743b1 100644
--- a/dbus/dbus-sysdeps-unix.c
+++ b/dbus/dbus-sysdeps-unix.c
@@ -55,6 +55,7 @@
#include <netinet/in.h>
#include <netdb.h>
#include <grp.h>
+#include <arpa/inet.h>
#ifdef HAVE_ERRNO_H
#include <errno.h>
@@ -4160,4 +4161,71 @@
_dbus_check_setuid (void)
#endif
}
+/**
+ * Read the address from the socket and append it to the string
+ *
+ * @param fd the socket
+ * @param address
+ * @param error return location for error code
+ */
+dbus_bool_t
+_dbus_append_address_from_socket (int fd,
+ DBusString *address,
+ DBusError *error)
+{
+ union {
+ struct sockaddr sa;
+ struct sockaddr_storage storage;
+ struct sockaddr_un un;
+ struct sockaddr_in ipv4;
+ struct sockaddr_in6 ipv6;
+ } socket;
+ char hostip[INET6_ADDRSTRLEN];
+ int size = sizeof (socket);
+
+ if (getsockname (fd, &socket.sa, &size))
+ goto err;
+
+ switch (socket.sa.sa_family)
+ {
+ case AF_UNIX:
+ if (socket.un.sun_path[0]=='\0')
+ {
+ if (_dbus_string_append_printf (address, "unix:abstract=%s", &(socket.un.sun_path[1])))
+ return TRUE;
+ }
+ else
+ {
+ if (_dbus_string_append_printf (address, "unix:path=%s", socket.un.sun_path))
+ return TRUE;
+ }
+ break;
+ case AF_INET:
+ if (inet_ntop (AF_INET, &socket.ipv4.sin_addr, hostip, sizeof (hostip)))
+ if (_dbus_string_append_printf (address, "tcp:family=ipv4,host=%s,port=%u",
+ hostip, ntohs (socket.ipv4.sin_port)))
+ return TRUE;
+ break;
+#ifdef AF_INET6
+ case AF_INET6:
+ if (inet_ntop (AF_INET6, &socket.ipv6.sin6_addr, hostip, sizeof (hostip)))
+ if (_dbus_string_append_printf (address, "tcp:family=ipv6,host=%s,port=%u",
+ hostip, ntohs (socket.ipv6.sin6_port)))
+ return TRUE;
+ break;
+#endif
+ default:
+ dbus_set_error (error,
+ _dbus_error_from_errno (EINVAL),
+ "Failed to read address from socket: Unknown socket type.");
+ return FALSE;
+ }
+ err:
+ dbus_set_error (error,
+ _dbus_error_from_errno (errno),
+ "Failed to open socket: %s",
+ _dbus_strerror (errno));
+ return FALSE;
+}
+
/* tests in dbus-sysdeps-util.c */
diff --git a/dbus/dbus-sysdeps-unix.h b/dbus/dbus-sysdeps-unix.h
index 9b70896..a265b33 100644
--- a/dbus/dbus-sysdeps-unix.h
+++ b/dbus/dbus-sysdeps-unix.h
@@ -138,6 +138,10 @@
dbus_bool_t _dbus_parse_uid (const DBusString *uid_str,
void _dbus_close_all (void);
+dbus_bool_t _dbus_append_address_from_socket (int fd,
+ DBusString *address,
+ DBusError *error);
+
/** @} */
DBUS_END_DECLS
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment