Estamos servindo uma porta no localhost e queremos verificar em outro processo se a porta está disponível. Devido a um bug em nosso código, ele está tentando se conectar ao IP 0.0.0.0:<port>
e, por algum motivo, consegue - como prova o strace:
[...]
connect(3, {sa_family=AF_INET, sin_port=htons(10002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[...]
O que isto significa? Por que funciona?
0.0.0.0 como um endereço de destino refere-se a um host não roteável ou a “este host” . Na prática, conectar-se a 0.0.0.0 é equivalente a conectar-se a localhost. (A rigor, não é válido como endereço de destino, apenas como endereço de origem, mas a prática não corresponde à teoria.)
Ao vincular, “este host” se expande para “qualquer endereço neste host” — portanto, os aplicativos geralmente aceitam conexões vinculando-se a 0.0.0.0, o que significa que receberão pacotes endereçados a qualquer endereço IPv4 no sistema.