diff options
| author | 2024-09-19 01:26:21 +0100 | |
|---|---|---|
| committer | 2024-09-19 01:26:21 +0100 | |
| commit | fbbc362ebbb13bfab70d74a1ba75bcb5b235592f (patch) | |
| tree | f0dbc19593db7fe4e667f9dcd35ce2cb03580001 /src/modules/m_connectban.cpp | |
| parent | Fix rebuilding the 004 numeric on reloading core_info. (diff) | |
| parent | Expand IPv6 addresses in connectban to avoid breaking S2S. (diff) | |
Merge branch 'insp3' into insp4.
Diffstat (limited to 'src/modules/m_connectban.cpp')
| -rw-r--r-- | src/modules/m_connectban.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/modules/m_connectban.cpp b/src/modules/m_connectban.cpp index 0d8e4df86..f624630ae 100644 --- a/src/modules/m_connectban.cpp +++ b/src/modules/m_connectban.cpp @@ -147,14 +147,20 @@ public: if (i->second >= threshold) { + // If an IPv6 address begins with a colon then expand it + // slightly to avoid breaking the server protocol. + std::string maskstr = mask.str(); + if (maskstr[0] == ':') + maskstr.insert(maskstr.begin(), 1, '0'); + // Create Z-line for set duration. - auto* zl = new ZLine(ServerInstance->Time(), banduration, MODNAME "@" + ServerInstance->Config->ServerName, banmessage, mask.str()); + auto* zl = new ZLine(ServerInstance->Time(), banduration, MODNAME "@" + ServerInstance->Config->ServerName, banmessage, maskstr); if (!ServerInstance->XLines->AddLine(zl, nullptr)) { delete zl; return; } - std::string maskstr = mask.str(); + ServerInstance->SNO.WriteToSnoMask('x', "{} added a timed Z-line on {}, expires in {} (on {}): {}", zl->source, maskstr, Duration::ToString(zl->duration), Time::ToString(zl->expiry), zl->reason); |
