* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
return -1;
const char * opt = ___argv[arg_counter];
- int return_val = 0;
// if we're not an option, return an error.
if (strnicmp(opt, "--", 2) != 0)
if (!res)
{
if (GetLastError() != ERROR_SEM_TIMEOUT)
- Instance->Log(DEFAULT, "IPC Pipe Error %u: %s", GetLastError(), dlerror());
+ Instance->Logs->Log("win32",DEFAULT, "IPC Pipe Error %u: %s", GetLastError(), dlerror());
return;
}
switch (action)
{
case IPC_MESSAGE_REHASH:
- Instance->Rehash();
+ Instance->Rehash("due to IPC message");
break;
case IPC_MESSAGE_DIE:
*/
void ChangeWindowsSpecificPointers(InspIRCd* Instance)
{
- Instance->Log(DEBUG,"Changing to windows specific pointer and functor set");
+ Instance->Logs->Log("win32",DEBUG,"Changing to windows specific pointer and functor set");
Instance->Config->DNSServerValidator = &ValidateWindowsDnsServer;
}
if (!*(data.GetString()))
{
std::string nameserver;
- conf->GetInstance()->Log(DEFAULT,"WARNING: <dns:server> not defined, attempting to find working server in the registry...");
+ conf->GetInstance()->Logs->Log("win32",DEFAULT,"WARNING: <dns:server> not defined, attempting to find working server in the registry...");
nameserver = FindNameServerWin();
/* Windows stacks multiple nameservers in one registry key, seperated by commas.
* Spotted by Cataclysm.
*/
if (nameserver.find(',') != std::string::npos)
nameserver = nameserver.substr(0, nameserver.find(','));
+ /* Just to be FUCKING AKWARD, windows fister... err i mean vista...
+ * seperates the nameservers with spaces instead.
+ */
+ if (nameserver.find(' ') != std::string::npos)
+ nameserver = nameserver.substr(0, nameserver.find(' '));
data.Set(nameserver.c_str());
- conf->GetInstance()->Log(DEFAULT,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
+ conf->GetInstance()->Logs->Log("win32",DEFAULT,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
}
return true;
}
tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000;
return 0;
}
-
-int __exceptionHandler(PEXCEPTION_POINTERS pExceptPtrs)
-{
- SYSTEMTIME _time;
- HANDLE hDump;
- char mod[MAX_PATH*2];
- char * pMod = mod;
- char dump_filename[MAX_PATH];
- MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
- DWORD code;
-
- if(pExceptPtrs == NULL) {
- __try {
- RaiseException(EXCEPTION_BREAKPOINT, 0, 0, NULL);
- } __except(__exceptionHandler(GetExceptionInformation()), EXCEPTION_CONTINUE_EXECUTION) {}
- }
-
- printf("Exception caught at 0x%.8X! Attempting to write crash dump file.\n", (unsigned long)pExceptPtrs->ExceptionRecord->ExceptionAddress);
-
- if(GetModuleFileName(0, mod, MAX_PATH*2) > 0)
- {
- if( (pMod = strrchr(mod, '\\')) != NULL )
- ++pMod;
- else
- strcpy(mod, "unk");
- }
- else
- strcpy(mod, "unk");
-
- GetSystemTime(&_time);
- snprintf(dump_filename, MAX_PATH, "dump-%s-%u-%u-%u-%u-%u-%u.dmp",
- pMod, _time.wYear, _time.wMonth, _time.wDay, _time.wHour, _time.wMinute, _time.wSecond);
-
- hDump = CreateFile(dump_filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, 0);
- if(hDump != INVALID_HANDLE_VALUE)
- {
- dumpInfo.ClientPointers = FALSE;
- dumpInfo.ExceptionPointers = pExceptPtrs;
- dumpInfo.ThreadId = GetCurrentThreadId();
-
- /* let's write a full memory dump. insp shouldn't be using much memory anyway, and it will help a lot with debugging. */
- MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDump, MiniDumpWithFullMemory, &dumpInfo, NULL, NULL);
- FlushFileBuffers(hDump);
- CloseHandle(hDump);
- }
-
- /* check for a debugger */
- __asm {
- pushad
- pushfd
- mov eax, fs:[18h]
- mov eax, dword ptr [eax+30h]
- mov ebx, dword ptr [eax]
- mov code, ebx
- popfd
- popad
- }
-
- /* break into debugger if we have one */
- if(code & 0x10000)
- return EXCEPTION_CONTINUE_SEARCH;
- else /* otherwise exit abnormally */
- return EXCEPTION_CONTINUE_EXECUTION;
-}