MCPcopy Create free account
hub / github.com/ElementsProject/lightning / update_remote_addr

Function update_remote_addr

lightningd/peer_control.c:1774–1808  ·  view source on GitHub ↗

Consider `remote_addr` from peer: if it could change things, reconsider * what our discoverd IP is. Returns new address, or NULL. */

Source from the content-addressed store, hash-verified

1772/* Consider `remote_addr` from peer: if it could change things, reconsider
1773 * what our discoverd IP is. Returns new address, or NULL. */
1774static const struct wireaddr *update_remote_addr(struct lightningd *ld,
1775 const struct wireaddr *remote_addr)
1776{
1777 /* failsafe to prevent privacy leakage. */
1778 if (ld->always_use_proxy ||
1779 ld->config.ip_discovery == OPT_AUTOBOOL_FALSE)
1780 return NULL;
1781
1782 switch (remote_addr->type) {
1783 case ADDR_TYPE_IPV4:
1784 /* If it's telling us what we already know, don't reevaluate */
1785 if (!ld->discovered_ip_v4
1786 || !wireaddr_eq(ld->discovered_ip_v4, remote_addr)) {
1787 ld->discovered_ip_v4 = tal_free(ld->discovered_ip_v4);
1788 ld->discovered_ip_v4 = best_remote_addr(ld, ld, ADDR_TYPE_IPV4);
1789 return ld->discovered_ip_v4;
1790 }
1791 return NULL;
1792 case ADDR_TYPE_IPV6:
1793 /* If it's telling us what we already know, don't reevaluate */
1794 if (!ld->discovered_ip_v6
1795 || !wireaddr_eq(ld->discovered_ip_v6, remote_addr)) {
1796 ld->discovered_ip_v6 = tal_free(ld->discovered_ip_v6);
1797 ld->discovered_ip_v6 = best_remote_addr(ld, ld, ADDR_TYPE_IPV6);
1798 return ld->discovered_ip_v6;
1799 }
1800 return NULL;
1801 /* ignore all other cases */
1802 case ADDR_TYPE_TOR_V2_REMOVED:
1803 case ADDR_TYPE_TOR_V3:
1804 case ADDR_TYPE_DNS:
1805 return NULL;
1806 }
1807 abort();
1808}
1809
1810REGISTER_PLUGIN_HOOK(peer_connected,
1811 peer_connected_hook_deserialize,

Callers 1

handle_peer_connectedFunction · 0.85

Calls 4

wireaddr_eqFunction · 0.85
tal_freeFunction · 0.85
best_remote_addrFunction · 0.85
abortFunction · 0.85

Tested by

no test coverage detected