Hi Andrew, On 04/28/2016 10:32 PM, Andrew Zaborowski wrote: > FD values can't be handled same as int32 values ('i' and 'u'). > --- > ell/dbus-message.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/ell/dbus-message.c b/ell/dbus-message.c > index 8151c69..5f91360 100644 > --- a/ell/dbus-message.c > +++ b/ell/dbus-message.c > @@ -1137,7 +1137,6 @@ static bool append_arguments(struct l_dbus_message *message, > } > case 'i': > case 'u': > - case 'h': > { > uint32_t u = va_arg(args, uint32_t); > > @@ -1146,6 +1145,20 @@ static bool append_arguments(struct l_dbus_message *message, > > break; > } > + case 'h': > + { > + int fd = va_arg(args, int); > + > + if (!driver->append_basic(builder, *s, > + &message->num_fds)) > + goto error; > + > + if (message->num_fds < L_ARRAY_SIZE(message->fds)) > + message->fds[message->num_fds++] = > + fd = fcntl(fd, F_DUPFD_CLOEXEC, 3); > + This compound assignment is a bit weird, especially given that fd is not used afterward. Can we simply assign message->fds[...] = fcntl? Or: fd = fcntl(...); message->fds[...] = fd; > + break; > + } > case 'x': > case 't': > { > Regards, -Denis