diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-02 08:54:43 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-02 08:54:43 +0000 |
commit | 9fcf4c08a11282a24dbbf376c3326b69c1afd8ac (patch) | |
tree | 96f8c6df360505cc6bb012c211a32fb32918bceb /src/server.cpp | |
parent | 4b2dda4d80ee0855e577cbd6099d9d1bd915e8da (diff) |
Unneeded
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9255 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 65 |
1 files changed, 63 insertions, 2 deletions
diff --git a/src/server.cpp b/src/server.cpp index 4814852c4..f1ed20c59 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -141,7 +141,68 @@ bool InspIRCd::FindServerName(const std::string &servername) */ std::string InspIRCd::GetUID() { - int i; + static int curindex = -1; + + if (curindex == -1) + { + // Starting up + current_uid[0] = Config->sid[0]; + current_uid[1] = Config->sid[1]; + current_uid[2] = Config->sid[2]; + + for (int i = 3; i < UUID_LENGTH; i++) + current_uid[i] = 'Z'; + + current_uid[3] = 'Y'; // force fake client to get ZZZZZZZZ + + curindex = 3; + } + + while (1) + { + printf("Getting ID. curindex %d, current_uid %s\n", curindex, current_uid); + + if (curindex == 3) + { + // Down to the last few. + if (current_uid[curindex] == 'Z') + { + // Reset. + for (int i = 3; i < UUID_LENGTH; i++) + { + current_uid[i] = 'A'; + curindex = UUID_LENGTH - 1; + } + } + else + current_uid[curindex]++; + } + else + { + if (current_uid[curindex] == 'Z') + current_uid[curindex] = '0'; + else if (current_uid[curindex] == '9') + { + current_uid[curindex] = 'A'; + curindex--; + continue; + } + else + current_uid[curindex]++; + } + + if (this->FindUUID(current_uid)) + { + /* + * It's in use. We need to try the loop again. + */ + continue; + } + + return current_uid; + } + +#if 0 /* * This will only finish once we return a UUID that is not in use. @@ -205,7 +266,7 @@ std::string InspIRCd::GetUID() return current_uid; } } - +#endif /* not reached. */ return ""; } |