@@ -318,19 +318,44 @@ static struct io_plan *handshake_in_success(struct io_conn *conn,
318318 node_id_from_pubkey (& id , id_key );
319319 status_peer_debug (& id , "Connect IN" );
320320
321+ // Retrieve and print local addresses and ports
322+ struct sockaddr_in local_addr ;
323+ socklen_t addr_len = sizeof (struct sockaddr_in );
324+
325+ // Get local address and port
326+ if (getsockname (io_conn_fd (conn ), (struct sockaddr * )& local_addr , & addr_len ) == -1 ) {
327+ perror ("getsockname failed" );
328+ } else {
329+ fprintf (stderr , "--> Listening on %s:%d\n" ,
330+ inet_ntoa (local_addr .sin_addr ),
331+ ntohs (local_addr .sin_port ));
332+ }
333+
321334 /* Confirm that peer connects to the alt-bind-addr you sent */
322335 if (daemon -> alt_bind_addr ) {
323- char * incoming_addr = fmt_wireaddr_internal (tmpctx , addr );
324- fprintf (stderr , "--> incoming connection addr: '%s'\n" , incoming_addr );
325-
326- char * bind_addrs = tal_strdup (NULL , (char * )daemon -> alt_bind_addr );
336+ char listening_addr [INET_ADDRSTRLEN ];
337+ inet_ntop (AF_INET , & (local_addr .sin_addr ), listening_addr , INET_ADDRSTRLEN );
338+ int listening_port = ntohs (local_addr .sin_port );
339+
340+ // Create a string with the full address including port
341+ char full_listening_addr [INET_ADDRSTRLEN + 6 ]; // Extra space for ':port'
342+ snprintf (full_listening_addr ,
343+ sizeof (full_listening_addr ),
344+ "%s:%d" ,
345+ listening_addr ,
346+ listening_port );
347+
348+ char * bind_addrs = tal_strdup (tmpctx , (char * )daemon -> alt_bind_addr );
327349 char * token = strtok (bind_addrs , "," );
328350
329351 while (token != NULL ) {
330- fprintf (stderr , "--> comparing '%s' with token '%s'\n" , incoming_addr , token );
331- if (strcmp (incoming_addr , token ) == 0 ) {
352+ fprintf (stderr , "--> comparing '%s' with token '%s'\n" , full_listening_addr , token );
353+ if (strcmp (full_listening_addr , token ) == 0 ) {
354+ char * whitelist_addr = tal_strdup (tmpctx , full_listening_addr );
332355 fprintf (stderr , "--> INSIDE\n" );
333- towire_connectd_alt_addr_whitelist (tmpctx , id_key , (u8 * )incoming_addr );
356+ u8 * msg = towire_connectd_alt_addr_whitelist (NULL , id_key , (u8 * )whitelist_addr );
357+ daemon_conn_send (daemon -> master , take (msg ));
358+ tal_free (whitelist_addr );
334359 break ;
335360 }
336361 token = strtok (NULL , "," );
@@ -533,18 +558,16 @@ static struct io_plan *connection_in(struct io_conn *conn,
533558
534559void handle_peer_alt_addr (struct peer * peer , const u8 * msg )
535560{
536- u8 * peer_alt_addr ;
537- struct pubkey peer_id ;
538- /* FIXME(maxrantil): u32 *timestamp = NULL; */
561+ u8 * p_alt_addrs ;
562+ struct pubkey p_id ;
539563
540- if (!fromwire_peer_alt_addr (peer , msg , & peer_id , & peer_alt_addr /* FIXME(maxrantil): , timestamp */ )) {
564+ if (!fromwire_peer_alt_addr (peer , msg , & p_id , & p_alt_addrs ))
541565 master_badmsg (WIRE_PEER_ALT_ADDR , msg );
542- }
543566
544- u8 * fwd_msg = towire_connectd_alt_addr ( NULL , & peer_id , peer_alt_addr );
567+ u8 * fwd_msg = towire_connectd_peer_alt_addr ( tmpctx , & p_id , p_alt_addrs );
545568 daemon_conn_send (peer -> daemon -> master , take (fwd_msg ));
546569
547- tal_free (peer_alt_addr ); /* FIXME(maxrantil): Investigare further on freeing like this */
570+ tal_free (p_alt_addrs ); /* FIXME(maxrantil): Investigare further on freeing like this */
548571}
549572
550573/*~ <hello>I speak web socket</hello>.
@@ -2127,18 +2150,18 @@ static void dev_exhaust_fds(struct daemon *daemon, const u8 *msg)
21272150 daemon -> dev_exhausted_fds = true;
21282151}
21292152
2130- #include <stdio.h>
21312153static void handle_alt_addr_whitelist_reply (struct daemon * daemon , const u8 * msg )
21322154{
21332155 struct pubkey p_pk ;
21342156 struct peer * peer ;
21352157 u8 * incoming_addr ;
21362158 bool is_whitelisted ;
21372159
2138- fprintf (stderr , "INSIDE WHITELIST\n" );
2139-
21402160 if (!fromwire_connectd_alt_addr_whitelist_reply (tmpctx ,
2141- msg , & p_pk , & incoming_addr , & is_whitelisted )) {
2161+ msg ,
2162+ & p_pk ,
2163+ & incoming_addr ,
2164+ & is_whitelisted )) {
21422165 master_badmsg (WIRE_CONNECTD_ALT_ADDR_WHITELIST_REPLY , msg );
21432166 return ;
21442167 }
@@ -2155,12 +2178,14 @@ static void handle_alt_addr_whitelist_reply(struct daemon *daemon, const u8 *msg
21552178
21562179 if (is_whitelisted ) {
21572180 status_peer_unusual (& peer -> id ,
2158- "Peer's address %s is in the whitelist. Accepting connection." ,
2159- incoming_addr );
2181+ "Peer's address %s is in the whitelist. Accepting connection." ,
2182+ incoming_addr );
2183+ fprintf (stderr , "END GOAL! YES\n" );
21602184 } else {
21612185 status_peer_unusual (& peer -> id ,
2162- "Connection attempt from address %s which is not in the whitelist. The peer has not received an alternative address from me. Closing connection." ,
2163- incoming_addr );
2186+ "Connection attempt from address %s which is not in the whitelist. The peer has not received an alternative address from me. Closing connection." ,
2187+ incoming_addr );
2188+ fprintf (stderr , "END GOAL! NO\n" );
21642189 io_close (peer -> to_peer );
21652190 }
21662191}
@@ -2267,7 +2292,7 @@ static struct io_plan *recv_req(struct io_conn *conn,
22672292 case WIRE_CONNECTD_CUSTOMMSG_IN :
22682293 case WIRE_CONNECTD_PEER_DISCONNECT_DONE :
22692294 case WIRE_CONNECTD_START_SHUTDOWN_REPLY :
2270- case WIRE_CONNECTD_ALT_ADDR :
2295+ case WIRE_CONNECTD_PEER_ALT_ADDR :
22712296 case WIRE_CONNECTD_ALT_ADDR_WHITELIST :
22722297 break ;
22732298 }
0 commit comments