sony / nmos-cpp

An NMOS (Networked Media Open Specifications) Registry and Node in C++ (IS-04, IS-05)
Apache License 2.0
136 stars 79 forks source link

Avahi issue #323

Closed JamieLuo closed 1 year ago

JamieLuo commented 1 year ago

Any idea about the following error: 2023-04-19 09:27:45.018: info: 140484610125056: Starting nmos-cpp node 2023-04-19 09:27:45.019: info: 140484610125056: Process ID: 7029 2023-04-19 09:27:45.019: info: 140484610125056: Build settings: cpprestsdk/2.10.18 (listener=asio; client=asio); WebSocket++/0.8.2; Boost 1.80.0; OpenSSL 1.1.1s 1 Nov 2022 2023-04-19 09:27:45.019: info: 140484610125056: Initial settings: {"host_address":"172.17.0.4","host_addresses":["172.17.0.4"],"seed_id":"2b399263-5b4f-4e4a-9b5e-67213ece3ef5"} 2023-04-19 09:27:45.020: info: 140484610125056: Configuring nmos-cpp node with its primary Node API at: 172.17.0.4:3212 2023-04-19 09:27:45.157: info: 140484610125056: Preparing for connections 2023-04-19 09:27:45.163: info: 140484101871360: Updated model with node: 331063d3-9176-5717-814c-89c9385a1253 WARNING The program 'nmos-cpp-node' uses the Apple Bonjour compatibility layer of Avahi. WARNING Please fix your application to use the native API of Avahi! WARNING For more information see http://0pointer.de/blog/projects/avahi-compat.html WARNING The program 'nmos-cpp-node' called 'DNSServiceCreateConnection()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. 2023-04-19 WARNING Please fix your application to use the native API of Avahi! 09: WARNING For more information see http://0pointer.de/blog/projects/avahi-compat.html 27:45.165: info: 140484610125056: Ready for connections 2023-04-19 WARNING The program 'nmos-cpp-node' called 'DNSServiceCreateConnection()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. 09:27:45.165: error: 140484286510848: DNSServiceCreateConnection reported error: -65544 WARNING Please fix your application to use the native API of Avahi! WARNING For more information see http://0pointer.de/blog/projects/avahi-compat.html

garethsb commented 1 year ago

Hmm. It's expected to see that warning once at start up when using Avahi. But I've not seen it repeated over and over. Does it keep repeating continuously in your environment?

JamieLuo commented 1 year ago

It's not repeating continuously and only reported at start up, but if that will cause any problem? Since I see there is an error also reported. 09:27:45.165: error: 140484286510848: DNSServiceCreateConnection reported error: -65544

JamieLuo commented 1 year ago

Nerver mind, the nmos-cpp-registry and nmos-cpp-node could work in my enviroment. I will close this ticket. BTW, thank you for your reply : ).

garethsb commented 1 year ago

@JamieLuo

The feature that is missing with Avahi is registering addresses for a custom host name in mDNS mode. If you are just using the actual host name, this isn't a problem because Avahi takes care of this anyway.

https://github.com/sony/nmos-cpp/blob/a0ff5f372cd828e87e6ccbfa18aa0f35b01a3c2f/Development/mdns/service_advertiser_impl.cpp#L89-L93

andywangevertz commented 11 months ago

Hi @garethsb

I am still seeing above error on Ubuntu 22.04 after successfully compiling and running the nmos-cpp-registry

WARNING The program 'nmos-cpp-registry' uses the Apple Bonjour compatibility layer of Avahi. WARNING Please fix your application to use the native API of Avahi! WARNING For more information see http://0pointer.de/blog/projects/avahi-compat.html WARNING The program 'nmos-cpp-registry' called 'DNSServiceCreateConnection()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. WARNING Please fix your application to use the native API of Avahi! WARNING For more information see http://0pointer.de/blog/projects/avahi-compat.html 2023-08-25 16:50:01.901: error: 140484982842944: DNSServiceCreateConnection reported error: -65544

2023-08-25 16:50:01.906: info: 140484966057536: Registered advertisement for: nmos-cpp_query_172-16-246-13:8080._nmos-query._tcp 2023-08-25 16:50:01.908: error: 140484957664832: DNSServiceRegister reported error: -65537 while registering advertisement for: nmos-cpp_query_172-16-246-13:8080._nmos-query._tcp.DOMAINS

could you please provide more details of how to use this avahi-publish-address to get around this issue? I tried but so far it did not work for me.

Thanks!

garethsb commented 11 months ago

I don't think I can explain it more clearly than in my previous comment and the code comment that includes. https://github.com/sony/nmos-cpp/issues/323#issuecomment-1515752599

What problem are you having? Looks like you may have specified your domain as DOMAINS?

andywangevertz commented 11 months ago

@garethsb Wow! thanks for the quick reply. I am the newbie here so I guess that I just missed the domains. I thought that it was by default 'local.'. now it works! Thanks again!

So above error is fine and it won't affect the 'local' domain. here are my running commands: ./nmos-cpp-registry registery.conf ./nmos-cpp-node node1.conf

registery.conf { "domain": "local.", "http_port": 8080 }

node1.conf { "domain": "local.", "http_port": 1080 }

One further follow-up question. How can I run the Registry on machine A and Node on machine B? what would the config look like? is the 'local.' still works across the network (in the same subnet) ?

garethsb commented 11 months ago

Yes, assuming same subnet, and both machines have avahi-daemon running, "that should just work" 🤞

andywangevertz commented 10 months ago

@garethsb So far I did not see it working in our environment. if they are on the same host then it works perfectly and once they are on the different machine (both machines are connected to the same switch and they are in the same subnet) and nothing works. I confirmed that it has nothing to do with the nmos-cpp itself and it is more of the issue on the avahi-daemon side. I will dig it deeper and update. Thanks again for the quick response and help!

garethsb commented 10 months ago

May depend on multicast config on the network switch, and/or firewall rules on the hosts. You could take nmos-cpp completely out of the equation and just use avahi-publish-service to test basics?