Subject: [bug#44800] [PATCH v2 1/3] Add Avahi support.

From: Mathieu Othacehe <[email-masked]>
Date: Sun, 29 Nov 2020 15:18:24 +0100

Hey Ludo,

Thanks for the review :)

> An argument in favor of making it mandatory is that it would help make
> the feature more widely used, and thus more widely useful.

Yes, and most of the other Guile dependencies are mandatory, so having
Guile-Avahi also mandatory feels safer. Plus I'm sure that it can be
useful for other use cases such as offloading.

> You could use (srfi srfi-9) ‘define-record-type’ since the extra (guix
> records) features are not necessary here.

I use (guix records) feature allowing to call the record constructor
with non positional arguments.

> (I wanted to add an API in Guile-Avahi to “invert inversion of control”
> so that one could escape callback hell but never got around to
> completing it.)

Sure, it would be nice, but given libavahi design, not an easy task :).

> Can’t we obtain the IP address without creating a socket actually?  Noob
> here.

I think we can use "getifaddrs" and the its "network-interfaces"
binding, but the resulting code does not seem more readable.

>
>> +    ;; Handle service resolution events.
>> +    (cond ((eq? event resolver-event/found)
>> +           (info (G_ "resolved service `~a' at `~a:~a'~%")
>> +                 service-name (inet-ntop family address) port)
>
> IWBN to not add UI code in here.

Sure, removed!

Mathieu