* | 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
*/
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());
}
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;
-}