From ec7ce09ef45c491ea833ca39ee2dc0ff3cdf5f90 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 22 Dec 2016 20:52:43 -0500 Subject: [PATCH] Make User::Mask behave more like 1.8 --- include/users.h | 7 +++---- src/users.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/users.h b/include/users.h index 6f50d0cbd..27fce6cf8 100644 --- a/include/users.h +++ b/include/users.h @@ -347,10 +347,9 @@ class CoreExport User : public virtual Base, public Extensible, public CommandRe /* Returns a mask that will most likely match any address the * user will have from that location. For IP addresses, wildcards the - * appropriate subnet mask (e.g. 35.1.1.1 -> 35.*; 128.2.1.1 -> 128.2.*); - * for named addresses, wildcards the leftmost part of the name unless the - * name only contains two parts. If the username begins with a ~, delete - * it. + * last octet (e.g. 35.1.1.1 -> 35.1.1.*). for named addresses, wildcards + * the leftmost part of the name unless the name only contains two parts. + * If the username begins with a ~, replace with *. */ Anope::string Mask() const; diff --git a/src/users.cpp b/src/users.cpp index 25e558c5f..059b89377 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -781,7 +781,7 @@ Anope::string User::Mask() const sockaddrs addr(mhost); if (addr.valid() && addr.sa.sa_family == AF_INET) { - size_t dot = mhost.find('.'); + size_t dot = mhost.rfind('.'); mask += mhost.substr(0, dot) + (dot == Anope::string::npos ? "" : ".*"); } else