summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2006-10-26 19:01:10 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2006-10-26 19:01:10 +0000
commitcaae991f97ce1b09595d3229f2868268678b8de6 (patch)
treef0c8b8244742ca1c251c42de345bb80af099f3b0
parent82c9cd05cd19a397043db94025c7a80e75386e8a (diff)
* dbus-sysdeps-unix.c (_dbus_set_local_creds): Clean up the
LOCAL_CREDS vs CMSGCRED stuff a bit. Prefer CMSGCRED. This needs to be cleaned up more. * doc/TODO: Add a todo that *BSD hackers should look at cleaning up the CREDS issue.
-rw-r--r--ChangeLog9
-rw-r--r--dbus/dbus-sysdeps-unix.c13
-rw-r--r--doc/TODO4
3 files changed, 20 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 3fba2caf..9ade28f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2006-10-26 John (J5) Palmieri <johnp@redhat.com>
+ * dbus-sysdeps-unix.c (_dbus_set_local_creds): Clean up the
+ LOCAL_CREDS vs CMSGCRED stuff a bit. Prefer CMSGCRED. This
+ needs to be cleaned up more.
+
+ * doc/TODO: Add a todo that *BSD hackers should look at cleaning
+ up the CREDS issue.
+
+2006-10-26 John (J5) Palmieri <johnp@redhat.com>
+
* configure.in, dbus-1.pc.in: Check to see if thread methods
are in glibc or libpthread and add -lpthread to the link stage
if it is the latter
diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
index 45764050..75848b71 100644
--- a/dbus/dbus-sysdeps-unix.c
+++ b/dbus/dbus-sysdeps-unix.c
@@ -515,7 +515,11 @@ _dbus_set_local_creds (int fd, dbus_bool_t on)
{
dbus_bool_t retval = TRUE;
-#if defined(LOCAL_CREDS) && !defined(HAVE_CMSGCRED)
+#if defined(HAVE_CMSGCRED)
+ /* NOOP just to make sure only one codepath is used
+ * and to prefer CMSGCRED
+ */
+#elif defined(LOCAL_CREDS)
int val = on ? 1 : 0;
if (setsockopt (fd, 0, LOCAL_CREDS, &val, sizeof (val)) < 0)
{
@@ -828,16 +832,13 @@ write_credentials_byte (int server_fd,
{
int bytes_written;
char buf[1] = { '\0' };
-#if defined(HAVE_CMSGCRED) && !defined(LOCAL_CREDS)
+#if defined(HAVE_CMSGCRED)
struct {
struct cmsghdr hdr;
struct cmsgcred cred;
} cmsg;
struct iovec iov;
struct msghdr msg;
-#endif
-
-#if defined(HAVE_CMSGCRED) && !defined(LOCAL_CREDS)
iov.iov_base = buf;
iov.iov_len = 1;
@@ -857,7 +858,7 @@ write_credentials_byte (int server_fd,
again:
-#if defined(HAVE_CMSGCRED) && !defined(LOCAL_CREDS)
+#if defined(HAVE_CMSGCRED)
bytes_written = sendmsg (server_fd, &msg, 0);
#else
bytes_written = write (server_fd, buf, 1);
diff --git a/doc/TODO b/doc/TODO
index 0ede53b8..ca906680 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -42,6 +42,10 @@ Might as Well for 1.0
Can Be Post 1.0
===
+ - clean up the creds issue on *BSD's in dbus/dbus-sysdeps-unix.c.
+ They should work as is but we need to rearange it to make it
+ clearer which method is being used. configure.in should
+ be fixed up to make that decition.
- _dbus_connection_unref_unlocked() is essentially always broken because
the connection finalizer calls non-unlocked functions. One fix is to make