@@ -539,6 +539,17 @@ static void handle_peer_splice_locked(struct peer *peer, const u8 *msg)
539539 check_mutual_splice_locked (peer );
540540}
541541
542+ static void send_peer_my_alt_addr (struct peer * peer )
543+ {
544+ /* Send my alt addr to peer db */
545+ u8 * peer_msg = towire_peer_alt_addr (peer , peer -> my_alt_addr );
546+ peer_write (peer -> pps , take (peer_msg ));
547+
548+ /* We need the addrs in my own db too for later whitelist confirmation */
549+ u8 * msg = towire_channeld_my_alt_addr (tmpctx , peer -> my_alt_addr );
550+ wire_sync_write (MASTER_FD , take (msg ));
551+ }
552+
542553static void handle_peer_channel_ready (struct peer * peer , const u8 * msg )
543554{
544555 struct channel_id chanid ;
@@ -4164,6 +4175,9 @@ static void peer_in(struct peer *peer, const u8 *msg)
41644175
41654176 check_tx_abort (peer , msg );
41664177
4178+ if (peer -> my_alt_addr )
4179+ send_peer_my_alt_addr (peer );
4180+
41674181 /* If we're in STFU mode and aren't waiting for a STFU mode
41684182 * specific message, the only valid message was tx_abort */
41694183 if (is_stfu_active (peer ) && !peer -> stfu_wait_single_msg ) {
@@ -4296,6 +4310,7 @@ static void peer_in(struct peer *peer, const u8 *msg)
42964310 case WIRE_ONION_MESSAGE :
42974311 case WIRE_PEER_STORAGE :
42984312 case WIRE_YOUR_PEER_STORAGE :
4313+ case WIRE_PEER_ALT_ADDR :
42994314 abort ();
43004315 }
43014316
@@ -5666,6 +5681,18 @@ static void handle_dev_quiesce(struct peer *peer, const u8 *msg)
56665681 maybe_send_stfu (peer );
56675682}
56685683
5684+ static void handle_channeld_peer_alt_addr (struct peer * peer , const u8 * msg )
5685+ {
5686+ u8 * my_alt_addr ;
5687+
5688+ if (!fromwire_channeld_peer_alt_addr (peer , msg , & my_alt_addr ))
5689+ master_badmsg (WIRE_CHANNELD_PEER_ALT_ADDR , msg );
5690+
5691+ u8 * peer_msg = towire_peer_alt_addr (peer , my_alt_addr );
5692+ peer_write (peer -> pps , take (peer_msg ));
5693+ tal_free (my_alt_addr );
5694+ }
5695+
56695696static void req_in (struct peer * peer , const u8 * msg )
56705697{
56715698 enum channeld_wire t = fromwire_peektype (msg );
@@ -5705,6 +5732,9 @@ static void req_in(struct peer *peer, const u8 *msg)
57055732 case WIRE_CHANNELD_SEND_ERROR :
57065733 handle_send_error (peer , msg );
57075734 return ;
5735+ case WIRE_CHANNELD_PEER_ALT_ADDR :
5736+ handle_channeld_peer_alt_addr (peer , msg );
5737+ return ;
57085738 case WIRE_CHANNELD_SPLICE_INIT :
57095739 handle_splice_init (peer , msg );
57105740 return ;
@@ -5768,6 +5798,7 @@ static void req_in(struct peer *peer, const u8 *msg)
57685798 case WIRE_CHANNELD_SPLICE_STATE_ERROR :
57695799 case WIRE_CHANNELD_LOCAL_ANCHOR_INFO :
57705800 case WIRE_CHANNELD_REESTABLISHED :
5801+ case WIRE_CHANNELD_MY_ALT_ADDR :
57715802 break ;
57725803 }
57735804 master_badmsg (-1 , msg );
0 commit comments