diff options
author | Test_User <hax@andrewyu.org> | 2024-07-24 04:34:17 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-07-24 04:34:29 -0400 |
commit | f097bc9a2db4ac103b20f4680722dc7d46fad7b3 (patch) | |
tree | e84e4093394db899a165796765fc11076564be7f /protocols.c | |
parent | ba9b6325705e828c29c8e433beba5ad3ff5bb639 (diff) | |
download | haxircd-f097bc9a2db4ac103b20f4680722dc7d46fad7b3.tar.gz haxircd-f097bc9a2db4ac103b20f4680722dc7d46fad7b3.zip |
Fix cross-protocol netsplit propagations
Diffstat (limited to 'protocols.c')
-rw-r--r-- | protocols.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/protocols.c b/protocols.c index 63b3171..3ed647d 100644 --- a/protocols.c +++ b/protocols.c @@ -51,6 +51,7 @@ struct protocol protocols[NUM_PROTOCOLS] = { .propagate = inspircd2_protocol_propagate, .propagate_new_server = inspircd2_protocol_propagate_new_server, + .propagate_remove_server = inspircd2_protocol_propagate_remove_server, .propagate_unlink_server = inspircd2_protocol_propagate_unlink_server, .propagate_new_user = inspircd2_protocol_propagate_new_user, @@ -114,6 +115,7 @@ struct protocol protocols[NUM_PROTOCOLS] = { .propagate = inspircd3_protocol_propagate, .propagate_new_server = inspircd3_protocol_propagate_new_server, + .propagate_remove_server = inspircd3_protocol_propagate_remove_server, .propagate_unlink_server = inspircd3_protocol_propagate_unlink_server, .propagate_new_user = inspircd3_protocol_propagate_new_user, @@ -177,6 +179,7 @@ struct protocol protocols[NUM_PROTOCOLS] = { .propagate = inspircd4_protocol_propagate, .propagate_new_server = inspircd4_protocol_propagate_new_server, + .propagate_remove_server = inspircd4_protocol_propagate_remove_server, .propagate_unlink_server = inspircd4_protocol_propagate_unlink_server, .propagate_new_user = inspircd4_protocol_propagate_new_user, @@ -279,6 +282,15 @@ void protocols_propagate_new_server(struct string from, struct string attached_t protocols[i].propagate_new_server(from, attached_to, info); } } + +void protocols_propagate_remove_server(struct string from, struct server_info *server, struct string reason) { + for (size_t i = 0; i < NUM_PROTOCOLS; i++) { + if (!active_protocols[i]) + continue; + protocols[i].propagate_remove_server(from, server, reason); + } +} + void protocols_propagate_unlink_server(struct string from, struct server_info *a, struct server_info *b, size_t protocol) { for (size_t i = 0; i < NUM_PROTOCOLS; i++) { if (!active_protocols[i]) |