@@ -788,6 +788,8 @@ static void try_connect_one_addr(struct connecting *connect)
788
788
bool use_proxy = connect -> daemon -> always_use_proxy ;
789
789
const struct wireaddr_internal * addr = & connect -> addrs [connect -> addrnum ];
790
790
struct io_conn * conn ;
791
+ struct addrinfo hints , * ais ; //, *aii;
792
+ int gai_err ;
791
793
792
794
/* In case we fail without a connection, make destroy_io_conn happy */
793
795
connect -> conn = NULL ;
@@ -836,7 +838,28 @@ static void try_connect_one_addr(struct connecting *connect)
836
838
af = AF_INET6 ;
837
839
break ;
838
840
case ADDR_TYPE_DNS :
839
- // TODO: resolve with getaddrinfo and set af
841
+ /* Resolve with getaddrinfo */
842
+ memset (& hints , 0 , sizeof (hints ));
843
+ hints .ai_socktype = SOCK_STREAM ;
844
+ hints .ai_family = AF_UNSPEC ;
845
+ hints .ai_protocol = 0 ;
846
+ hints .ai_flags = AI_ADDRCONFIG ;
847
+ gai_err = getaddrinfo ((char * )addr -> u .wireaddr .addr ,
848
+ tal_fmt (tmpctx , "%d" ,
849
+ addr -> u .wireaddr .port ),
850
+ & hints , & ais );
851
+ if (gai_err != 0 )
852
+ status_failed (STATUS_FAIL_INTERNAL_ERROR ,
853
+ gai_strerror (gai_err ));
854
+ /*for (aii = ais; aii; aii = aii->ai_next) {
855
+ if (aii->ai_family == AF_INET6 || aii->ai_family == AF_INET) {
856
+ memcpy(&ai, aii, sizeof(struct addrinfo));
857
+ freeaddrinfo(ais);
858
+ return ai;
859
+ }
860
+ }
861
+ freeaddrinfo(ais);*/
862
+ // TODO: handle no suitable ai_family found
840
863
break ;
841
864
}
842
865
}
0 commit comments