summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commands.cpp1
-rw-r--r--src/inspircd.cpp12
2 files changed, 11 insertions, 2 deletions
diff --git a/src/commands.cpp b/src/commands.cpp
index 3adf3fc33..a36dc5425 100644
--- a/src/commands.cpp
+++ b/src/commands.cpp
@@ -1932,6 +1932,7 @@ void handle_dollar(char token,char* params,serverrec* source,serverrec* reply, c
void handle_amp(char token,char* params,serverrec* source,serverrec* reply, char* tcp_host)
{
log(DEBUG,"Netsplit! %s split from mesh, removing!",params);
+ WriteOpers("*** NOTICE - Controlled netsplit: %s split from %s",params,ServerName);
bool go_again = true;
while (go_again)
{
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 80909b312..18c4c4fb8 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -3201,9 +3201,17 @@ int InspIRCd(void)
break;
}
// during a netburst, send all data to all other linked servers
- if ((nb_start>0) && (udp_msg[0] != 'Y') && (udp_msg[0] != 'X') && (udp_msg[0] != 'F'))
+ if ((((nb_start>0) && (udp_msg[0] != 'Y') && (udp_msg[0] != 'X') && (udp_msg[0] != 'F'))) || (is_uline(tcp_host)))
{
- NetSendToAllExcept(tcp_host,udp_msg);
+ if (is_uline(tcp_host))
+ {
+ if ((udp_msg[0] != 'Y') && (udp_msg[0] != 'X') && (udp_msg[0] != 'F'))
+ {
+ NetSendToAllExcept(tcp_host,udp_msg);
+ }
+ }
+ else
+ NetSendToAllExcept(tcp_host,udp_msg);
}
FOREACH_MOD OnPacketReceive(udp_msg);
handle_link_packet(udp_msg, tcp_host, me[x]);