I've for now pushed a fix where the detection that ARM is running isn't
done in PROGRAM_run() or SERVICE_run() but specifically by the programs
where we know that they need it, so in

$ gnunet-arm -e

and

$ gnunet-gns

The test (was/is) written to be synchronous, so if it is needed/desired
elsewhere, it can easily be done by calling

GNUNET_CLIENT_test (cfg, "arm");

(code works for other services, but I don't quite see how this can be
used usefully for anything but "arm").

It was a bit more complicated than expected, as I had to add signaling
from gnunet-service-arm to "gnunet-arm -s" to signal when
gnunet-service-arm is finished opening the listen socket.  This is now
done by passing over a pipe *hacking/abusing* the mechanism we
previously used for listen socket passing from ARM to *its* child
services.  Basically, when the ARM service inherits listen socket(s), it
just closes them _after_ opening its listen sockets, while all other
services would use these _as_ their listen socket(s).

On 9/27/19 2:25 PM, Schanzenbach, Martin wrote:
> Right now, my best idea is to modify GNUNET_PROGRAM_run() to detect "is
> ARM running" by asking it which services are running, and if we fail to
> detect the ARM listen socket, we give up hard.  Furthermore, we could
> pass information to GNUNET_PROGRAM_run() which subset of services ARM
> must support (via autostart or have launched), and again give up if the
> required service(s) are not in the set.

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
GNUnet-developers mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnunet-developers

Reply via email to