Re: sd_bus_process semantics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I looked a bit into the source code:

This part is responsible for storing the message processed in *ret:

static int process_running(sd_bus *bus, sd_bus_message **ret) {
[...]
        r = process_message(bus, m);
        if (r != 0)
                goto null_message;

        if (ret) {
                r = sd_bus_message_rewind(m, true);
                if (r < 0)
                        return r;

                *ret = TAKE_PTR(m);
                return 1;
        }
[...]
null_message:
        if (r >= 0 && ret)
                *ret = NULL;

        return r;
}

static int process_message(sd_bus *bus, sd_bus_message *m) {
[...]
        r = process_hello(bus, m);
        if (r != 0)
                goto finish;
[...]
        r = process_builtin(bus, m);
        if (r != 0)
                goto finish;

        r = bus_process_object(bus, m);

finish:
        bus->current_message = NULL;
        return r;
}

My analysis might be flawed since I am still new to sd-bus, but to me it
seems like 'process_message' should return 0 on success, but since
'bus_process_object' returns 0 on failure it does not quite work as
intended.



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux