summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inspircd.cpp6
-rw-r--r--src/modules/extra/m_httpclienttest.cpp79
-rw-r--r--src/server.cpp65
3 files changed, 69 insertions, 81 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index bf103328d..e53e6f56f 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -595,6 +595,8 @@ void InspIRCd::InitialiseUID()
{
int i = 3;
+printf("FUCKING UID IS %s\n", current_uid);
+
current_uid[0] = Config->sid[0];
current_uid[1] = Config->sid[1];
current_uid[2] = Config->sid[2];
@@ -603,7 +605,11 @@ void InspIRCd::InitialiseUID()
for(i = 3; i < UUID_LENGTH - 1; i++)
current_uid[i] = 'A';
+printf("FUCKING UID IS %s %d\n", current_uid, strlen(current_uid));
+
current_uid[UUID_LENGTH] = '\0';
+
+printf("FUCKING UID IS %s %d\n", current_uid, strlen(current_uid));
}
int InspIRCd::Run()
diff --git a/src/modules/extra/m_httpclienttest.cpp b/src/modules/extra/m_httpclienttest.cpp
deleted file mode 100644
index 382546196..000000000
--- a/src/modules/extra/m_httpclienttest.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#include "inspircd.h"
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-#include "httpclient.h"
-
-/* $ModDep: httpclient.h */
-
-class MyModule : public Module
-{
-
-public:
-
- MyModule(InspIRCd* Me)
- : Module::Module(Me)
- {
- Implementation eventlist[] = { I_OnRequest, I_OnUserJoin, I_OnUserPart };
- ServerInstance->Modules->Attach(eventlist, this, 3);
- }
-
- virtual ~MyModule()
- {
- }
-
-
- virtual Version GetVersion()
- {
- return Version(1,0,0,1,VF_VENDOR,API_VERSION);
- }
-
- virtual void OnUserJoin(User* user, Channel* channel, bool sync, bool &silent)
- {
- // method called when a user joins a channel
-
- std::string chan = channel->name;
- std::string nick = user->nick;
- ServerInstance->Log(DEBUG,"User " + nick + " joined " + chan);
-
- Module* target = ServerInstance->Modules->Find("m_http_client.so");
- if(target)
- {
- HTTPClientRequest req(ServerInstance, this, target, "http://znc.in/~psychon");
- req.Send();
- }
- else
- ServerInstance->Log(DEBUG,"module not found, load it!!");
- }
-
- virtual const char* OnRequest(Request* req)
- {
- HTTPClientResponse* resp = (HTTPClientResponse*)req;
- if(!strcmp(resp->GetId(), HTTP_CLIENT_RESPONSE))
- {
- ServerInstance->Log(DEBUG, resp->GetData());
- }
- return NULL;
- }
-
- virtual void OnUserPart(User* user, Channel* channel, const std::string &partmessage, bool &silent)
- {
- }
-
-};
-
-MODULE_INIT(MyModule)
-
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 "";
}