+ unsigned char prev_map[256];
+
+ void CheckRehash()
+ {
+ // See if anything changed
+ if (!memcmp(prev_map, national_case_insensitive_map, sizeof(prev_map)))
+ return;
+
+ memcpy(prev_map, national_case_insensitive_map, sizeof(prev_map));
+
+ ServerInstance->RehashUsersAndChans();
+
+ // The OnGarbageCollect() method in m_watch rebuilds the hashmap used by it
+ Module* mod = ServerInstance->Modules->Find("m_watch.so");
+ if (mod)
+ mod->OnGarbageCollect();
+
+ // Send a Request to m_spanningtree asking it to rebuild its hashmaps
+ mod = ServerInstance->Modules->Find("m_spanningtree.so");
+ if (mod)
+ {
+ Request req(this, mod, "rehash");
+ req.Send();
+ }
+ }