@@ -789,11 +789,12 @@ struct io_plan *connection_out(struct io_conn *conn, struct connecting *connect)
789789 */
790790static void connect_failed (struct daemon * daemon ,
791791 const struct node_id * id ,
792+ bool connect_attempted ,
792793 const char * connect_reason ,
793794 struct timemono start ,
794795 enum jsonrpc_errcode errcode ,
795796 const char * errfmt , ...)
796- PRINTF_FMT (6 , 7 );
797+ PRINTF_FMT (7 , 8 );
797798
798799static void reconnect (struct important_id * imp )
799800{
@@ -865,6 +866,7 @@ void release_one_waiting_connection(struct daemon *daemon, const char *why)
865866
866867static void connect_failed (struct daemon * daemon ,
867868 const struct node_id * id ,
869+ bool connect_attempted ,
868870 const char * connect_reason ,
869871 struct timemono start ,
870872 enum jsonrpc_errcode errcode ,
@@ -885,7 +887,8 @@ static void connect_failed(struct daemon *daemon,
885887 msg = towire_connectd_connect_failed (NULL , id ,
886888 connect_reason ,
887889 time_to_nsec (timemono_since (start )),
888- errcode , errmsg );
890+ errcode , errmsg ,
891+ connect_attempted );
889892 daemon_conn_send (daemon -> master , take (msg ));
890893
891894 /* If we're supposed to schedule a reconnect, do so */
@@ -1037,7 +1040,7 @@ static void try_connect_one_addr(struct connecting *connect)
10371040 struct node_id id = connect -> id ;
10381041 const char * errors = tal_steal (tmpctx , connect -> errors );
10391042
1040- connect_failed (daemon , & id ,
1043+ connect_failed (daemon , & id , connect -> connect_attempted ,
10411044 connect -> reason , connect -> start ,
10421045 CONNECT_ALL_ADDRESSES_FAILED ,
10431046 "All addresses failed: %s" ,
@@ -1166,6 +1169,8 @@ static void try_connect_one_addr(struct connecting *connect)
11661169 goto next ;
11671170 }
11681171
1172+ connect -> connect_attempted = true;
1173+
11691174 /* This creates the new connection using our fd, with the initialization
11701175 * function one of the above. */
11711176 if (use_proxy )
@@ -1872,7 +1877,7 @@ static void try_connect_peer(struct daemon *daemon,
18721877 /* Still no address? Fail immediately. Important ones get
18731878 * retried; an address may get gossiped. */
18741879 if (tal_count (addrs ) == 0 ) {
1875- connect_failed (daemon , id , reason , time_mono (),
1880+ connect_failed (daemon , id , false, reason , time_mono (),
18761881 CONNECT_NO_KNOWN_ADDRESS ,
18771882 "Unable to connect, no address known for peer" );
18781883 return ;
@@ -1892,6 +1897,7 @@ static void try_connect_peer(struct daemon *daemon,
18921897 connect -> connstate = "Connection establishment" ;
18931898 connect -> errors = tal_strdup (connect , "" );
18941899 connect -> conn = NULL ;
1900+ connect -> connect_attempted = false;
18951901 connecting_htable_add (daemon -> connecting , connect );
18961902 tal_add_destructor (connect , destroy_connecting );
18971903
0 commit comments