What version of Synapse are you using?
I think the *nix version in Synapse 40.1 also uses getaddrinfo (at least... if you haven't defined FORCEOLDAPI).
I use Synapse 40 but there is no difference from Synapse 40.1 in this regard.
*nix version does not call getaddrinfo.
No such code can be found in ssfpc.inc which is used when compiling with FPC.
I can see it in sslinux.inc but this is not compiled with FPC (I assume this was originally a Kylix code?).
BTW. for me nslookup hostname_local_machine works fine on Linux for my internal systems.
So you are using a DNS which doesn't resolve internal systems correctly.
That does work most of the time but isn't ideal.
Edit: Using sock.Connect('local_machine_hostname', 'open_port'); also works on a Linux testmachine here.
Edit #2: Only works for clients which correctly registers itself to the local DNS server (and only if you use that local DNS server in resolv.conf).
BTW. Did you try without the .local after the name. Sometimes the resolver doesn't like the suffix in the query.
I must use 'devicename.local'. It is a recommended way to address the device I need to communicate with.
As said, ping works on all systems, web access as well (
http://devicename.local put into browser works fine).
I'm not familiar with what protocols are (or can be) used to determine this IP but it is definitely not the DNS protocol.
In Wireshark on Windows I can see a Netbios Name Query and also a MDNS call.