OSDN Git Service

DoS耐性を向上 IM0045
authoreru <eru01@users.sourceforge.jp>
Sun, 6 May 2012 11:31:04 +0000 (20:31 +0900)
committereru <eru01@users.sourceforge.jp>
Sun, 6 May 2012 11:31:04 +0000 (20:31 +0900)
14 files changed:
PeerCast.sln
core/common/addrCont.h [new file with mode: 0644]
core/common/servent.cpp
core/common/servent.h
core/common/servhs.cpp
core/common/servmgr.cpp
core/common/servmgr.h
core/common/ts_vector.h [new file with mode: 0644]
core/common/version2.h
core/win32/lib/corelib.vcproj
core/win32/ts_vector.h [new file with mode: 0644]
ui/win32/Simple_vp/Simple_vp.vcproj
ui/win32/simple/Simple.vcproj
\82ê\82Ç\82ß.txt

index dfb73e7..d119e31 100644 (file)
@@ -73,7 +73,6 @@ Global
                {7D4833CE-1286-4587-9470-52E098B29C12}.Release|x64.ActiveCfg = Release|x64
                {7D4833CE-1286-4587-9470-52E098B29C12}.Release|x64.Build.0 = Release|x64
                {E60173A7-1FC8-444B-BBAB-BB3D663D5C05}.Debug|Win32.ActiveCfg = Debug|Win32
-               {E60173A7-1FC8-444B-BBAB-BB3D663D5C05}.Debug|Win32.Build.0 = Debug|Win32
                {E60173A7-1FC8-444B-BBAB-BB3D663D5C05}.Debug|x64.ActiveCfg = Debug|Win32
                {E60173A7-1FC8-444B-BBAB-BB3D663D5C05}.Private Debug|Win32.ActiveCfg = Private Debug|Win32
                {E60173A7-1FC8-444B-BBAB-BB3D663D5C05}.Private Debug|Win32.Build.0 = Private Debug|Win32
diff --git a/core/common/addrCont.h b/core/common/addrCont.h
new file mode 100644 (file)
index 0000000..882c861
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Container type for IP-addr blacklist
+ * 
+ *                        Impl. by Eru
+ */
+
+#ifndef _CORELIB_COMMON_ADDRCONT_H_
+#define _CORELIB_COMMON_ADDRCONT_H_
+
+#include <limits.h>
+
+class addrCont
+{
+public:
+       unsigned int addr;
+       unsigned int count;
+
+       addrCont() : addr(0), count(0)
+       {
+       }
+
+       addrCont(unsigned int addr) : addr(addr), count(0)
+       {
+       }
+
+       addrCont& operator++()
+       {
+               if (this->count < UINT_MAX)
+                       ++(this->count);
+
+               return *this;
+       }
+
+       inline bool operator==(const addrCont &op)
+       {
+               return this->addr == op.addr;
+       }
+
+       inline bool operator==(const unsigned int op)
+       {
+               return this->addr == op;
+       }
+};
+
+#endif
index 0a96a7f..b6e8ed2 100644 (file)
@@ -380,7 +380,6 @@ void Servent::initIncoming(ClientSocket *s, unsigned int a)
                sock->host.toStr(ipStr);
                LOG_DEBUG("Incoming from %s",ipStr);
 
-
                if (!sys->startThread(&thread))
                        throw StreamException("Can`t start thread");
        }catch(StreamException &e)
@@ -3051,7 +3050,46 @@ int Servent::serverProcMain(ThreadInfo *thread)
                                        peercastApp->notifyMessage(ServMgr::NT_PEERCAST, "reject multicast address");
                                } else
                                if (cs)
-                               {       
+                               {
+                                       // countermeasure against DoS Atk
+                                       if (cs->host.ip != (0x7F000001)) // bypass loopback
+                                       {
+                                               // check blacklist
+                                               addrCont clientAddr(cs->host.ip);
+                                               servMgr->IP_blacklist->lock();
+                                               if (servMgr->IP_blacklist->find(clientAddr))
+                                               {
+                                                       // blacklisted
+                                                       servMgr->IP_blacklist->unlock();
+
+                                                       LOG_DEBUG("REFUSED: %d.%d.%d.%d", (cs->host.ip >> 24), (cs->host.ip >> 16) & 0xFF, (cs->host.ip >> 8) & 0xFF, cs->host.ip & 0xFF);
+                                                       cs->close();
+                                                       sys->sleep(100);
+
+                                                       continue;
+                                               }
+
+                                               servMgr->IP_blacklist->unlock();
+                                               LOG_DEBUG("ACCEPT: %d.%d.%d.%d", (cs->host.ip >> 24), (cs->host.ip >> 16) & 0xFF, (cs->host.ip >> 8) & 0xFF, cs->host.ip & 0xFF);
+
+
+                                               // check graylist
+                                               servMgr->IP_graylist->lock();
+                                               size_t idx;
+                                               if (servMgr->IP_graylist->find(clientAddr, &idx))
+                                               {
+                                                       // update
+                                                       ++(servMgr->IP_graylist->at(idx));
+                                                       LOG_DEBUG("UPDATE: %d.%d.%d.%d", (cs->host.ip >> 24), (cs->host.ip >> 16) & 0xFF, (cs->host.ip >> 8) & 0xFF, cs->host.ip & 0xFF);
+                                               } else
+                                               {
+                                                       // graylisted
+                                                       servMgr->IP_graylist->push_back(clientAddr);
+                                                       LOG_DEBUG("GRAYED: %d.%d.%d.%d", (cs->host.ip >> 24), (cs->host.ip >> 16) & 0xFF, (cs->host.ip >> 8) & 0xFF, cs->host.ip & 0xFF);
+                                               }
+                                               servMgr->IP_graylist->unlock();
+                                       }
+
                                        LOG_DEBUG("accepted incoming");
                                        Servent *ns = servMgr->allocServent();
                                        if (ns)
@@ -3064,7 +3102,7 @@ int Servent::serverProcMain(ThreadInfo *thread)
                                                LOG_ERROR("Out of servents");
                                }
                        }
-                       sys->sleep(100);
+                       sys->sleep(10);
                }
        }catch(StreamException &e)
        {
index 2159db4..c4b518b 100644 (file)
 #include "http.h"
 #include "rtsp.h"
 #include "pcp.h"
+#include "addrCont.h"
+#ifdef _WIN32
+#include "win32/ts_vector.h"
+#endif
 
 class HTML;
 
index 192658e..66f8e38 100644 (file)
@@ -540,19 +540,19 @@ void Servent::handshakeIncoming()
 
        if (stristr(buf,RTSP_PROTO1))
        {
-               LOG_DEBUG("RTSP from %s '%s'",sb,buf);
+               LOG_DEBUG("RTSP from %s '%.100s'",sb,buf);
                RTSP rtsp(*sock);
                rtsp.initRequest(buf);
                handshakeRTSP(rtsp);
        }else if (stristr(buf,HTTP_PROTO1))
        {
-               LOG_DEBUG("HTTP from %s '%s'",sb,buf);
+               LOG_DEBUG("HTTP from %s '%.100s'",sb,buf);
                HTTP http(*sock);
                http.initRequest(buf);
                handshakeHTTP(http,true);
        }else
        {
-               LOG_DEBUG("Connect from %s '%s'",sb,buf);
+               LOG_DEBUG("Connect from %s '%.100s'",sb,buf);
                HTTP http(*sock);
                http.initRequest(buf);
                handshakeHTTP(http,false);
@@ -1868,7 +1868,7 @@ void Servent::handshakeICY(Channel::SRC_TYPE type, bool isHTTP)
 
        while (http.nextHeader())
        {
-               LOG_DEBUG("ICY %s",http.cmdLine);
+               LOG_DEBUG("ICY %.100s",http.cmdLine);
                readICYHeader(http, info, loginPassword.cstr(), loginPassword.MAX_LEN);
        }
 
index 29be937..e2b911c 100644 (file)
@@ -160,6 +160,16 @@ ServMgr::ServMgr()
        versionDNS = 0;
 #endif
 
+       // init gray/black-lists
+#ifdef _WIN32
+       IP_graylist = new WTSVector<addrCont>();
+       IP_blacklist = new WTSVector<addrCont>();
+#else
+       // TODO for linux
+#endif
+       dosInterval = 30;
+       dosThreashold = 20;
+
        chanLog="";
 
        maxRelaysIndexTxt = 1;  // for PCRaw (relay)
@@ -183,6 +193,15 @@ ServMgr::ServMgr()
                disableAutoBumpIfDirect = 1;
                asxDetailedMode = 1;
        }
+
+       // start thread (graylist)
+       {
+               ThreadInfo t;
+
+               t.func = ServMgr::graylistThreadFunc;
+               t.active = true;
+               sys->startThread(&t);
+       }
 }
 // -----------------------------------
 BCID *ServMgr::findValidBCID(int index)
@@ -2847,3 +2866,41 @@ int ServMgr::kickUnrelayableHost(GnuID &chid, ChanHit &sendhit)
 
        return 0;
 }
+
+int WINAPI ServMgr::graylistThreadFunc(ThreadInfo *t)
+{
+       while (t->active)
+       {
+               LOG_DEBUG("******************** check graylist: begin");
+
+               servMgr->IP_graylist->lock();
+               servMgr->IP_blacklist->lock();
+
+
+               for (size_t i=0; i<servMgr->IP_graylist->count; ++i)
+               {
+                       addrCont addr = servMgr->IP_graylist->at(i);
+                       LOG_NETWORK("######## %d.%d.%d.%d  # %d", (addr.addr >> 24), (addr.addr >> 16) & 0xFF, (addr.addr >> 8) & 0xFF, addr.addr & 0xFF, addr.count);
+                       if (addr.count >= servMgr->dosThreashold)
+                       {
+                               servMgr->IP_blacklist->push_back(addr);
+                               LOG_DEBUG("BANNED: %d.%d.%d.%d", (addr.addr >> 24), (addr.addr >> 16) & 0xFF, (addr.addr >> 8) & 0xFF, addr.addr & 0xFF);
+                       }
+               }
+
+               servMgr->IP_graylist->clear();
+
+
+               servMgr->IP_graylist->unlock();
+               servMgr->IP_blacklist->unlock();
+
+               LOG_DEBUG("******************** check graylist: end");
+
+               sys->sleep(servMgr->dosInterval*1000);
+       }
+
+       t->finish = true;
+       sys->endThread(t);
+
+       return 0;
+}
index 309d98d..f67221c 100644 (file)
@@ -113,8 +113,6 @@ public:
 class ServMgr
 {
 
-
-
 public:
 
        enum NOTIFY_TYPE
@@ -322,6 +320,9 @@ public:
                return maxBitrateOut ? (BYTES_TO_KBPS(totalOutput(false))+br) > maxBitrateOut  : false;
        }
 
+       // thread func (graylist)
+       static int WINAPI graylistThreadFunc(ThreadInfo *t);
+
        unsigned int            totalOutput(bool);
        unsigned int            totalInput(bool);
 
@@ -424,6 +425,11 @@ public:
 
        int versionDNS; // DNS\82©\82ç\8eæ\93¾\82µ\82½\8dÅ\90V\83o\81[\83W\83\87\83\93\82Ì\94Ô\8d\86
 
+       ITSVector<addrCont> *IP_graylist; // gray/black-lists for DoS atk
+       ITSVector<addrCont> *IP_blacklist;
+       unsigned dosThreashold;
+       unsigned dosInterval;
+
        int maxRelaysIndexTxt;  // for PCRaw (relay)
 
 #ifdef WIN32 //JP-MOD
diff --git a/core/common/ts_vector.h b/core/common/ts_vector.h
new file mode 100644 (file)
index 0000000..ba3156c
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Simple vector (Thread safe implementation)
+ *
+ *                               Impl. by Eru
+ */
+
+#ifndef _CORELIB_COMMON_TS_VECTOR_H_
+#define _CORELIB_COMMON_TS_VECTOR_H_
+
+
+// Interface
+template <class T> class ITSVector
+{
+protected:
+       size_t capacity;
+       T **ary;
+
+public:
+       size_t count;
+
+       ITSVector() : count(0), capacity(32)
+       {
+               ary = new T*[capacity];
+       }
+
+       ~ITSVector()
+       {
+               for (size_t i=0; i<count; ++i)
+                       delete ary[i];
+               delete[] ary;
+       }
+
+       virtual bool empty()
+       {
+               return count == 0;
+       }
+
+       virtual void lock() = 0;
+       virtual void unlock() = 0;
+
+       virtual bool erase(size_t idx)
+       {
+               delete ary[idx];
+//             for (size_t i=idx+1; i<count; ++i)
+//                     ary[i-1] = ary[i];
+               memmove(&ary[idx], &ary[idx+1], sizeof(T*) * (--count - idx));
+
+               return true;
+       }
+
+       virtual bool clear()
+       {
+               for (size_t i=0; i<count; ++i)
+               {
+                       delete ary[i];
+               }
+               count = 0;
+
+               return true;
+       }
+
+       virtual bool find(const T& tgt)
+       {
+               for (size_t i=0; i<count; ++i)
+               {
+                       if (*ary[i] == tgt)
+                               return true;
+               }
+
+               return false;
+       }
+
+       virtual bool find(const T& tgt, size_t* idx)
+       {
+               for (size_t i=0; i<count; ++i)
+               {
+                       if (*ary[i] == tgt)
+                       {
+                               *idx = i;
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       virtual bool push_back(const T& val)
+       {
+               T *ptr = new T(val);
+
+               if (count + 1 > capacity)
+               {
+                       T **ptr = new T*[capacity * 2];
+                       if (!ptr)
+                               return false;
+
+                       for (size_t i=0; i<capacity; ++i)
+                               ptr[i] = ary[i];
+                       delete[] ary;
+
+                       ary = ptr;
+                       capacity <<= 1;
+               }
+
+               ary[count++] = ptr;
+
+               return true;
+       }
+
+       virtual T& at(size_t idx)
+       {
+               if (idx >= count)
+                       throw std::out_of_range("out of bounds");
+
+               return *ary[idx];
+       }
+
+       virtual T& operator[](size_t idx)
+       {
+               return at(idx);
+       }
+};
+
+
+#endif
index d87d713..ce680f9 100644 (file)
@@ -44,9 +44,9 @@ extern int version_ex; // VERSION_EX
 #if 1 /* for VP extend version */
 //#define VERSION_EX 1
 static const char *PCP_CLIENT_VERSION_EX_PREFIX = "IM"; // 2bytes only
-static const int  PCP_CLIENT_VERSION_EX_NUMBER = 44;
-static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0044)";
-static const char *PCX_VERSTRING_EX = "v0.1218(IM0044)";
+static const int  PCP_CLIENT_VERSION_EX_NUMBER = 45;
+static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0045)";
+static const char *PCX_VERSTRING_EX = "v0.1218(IM0045)";
 
 static const char *PCP_CLIENT_DIST_URL = "http://pecaim.net/";
 static const char *PCP_CLIENT_VERSION_URL = "version.pecaim.net";
index 07314e7..887649a 100644 (file)
                        Name="Core Includes"
                        >
                        <File
+                               RelativePath="..\..\common\addrCont.h"
+                               >
+                       </File>
+                       <File
                                RelativePath="..\..\common\asf.h"
                                >
                        </File>
                                >
                        </File>
                        <File
+                               RelativePath="..\..\common\ts_vector.h"
+                               >
+                       </File>
+                       <File
                                RelativePath="..\..\common\url.h"
                                >
                        </File>
                                >
                        </File>
                        <File
+                               RelativePath="..\ts_vector.h"
+                               >
+                       </File>
+                       <File
                                RelativePath="..\wsocket.h"
                                >
                        </File>
diff --git a/core/win32/ts_vector.h b/core/win32/ts_vector.h
new file mode 100644 (file)
index 0000000..15f4449
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Simple vector (Thread safe implementation)
+ *                        for Windows w/ VC++
+ *
+ *                               Impl. by Eru
+ */
+
+#ifndef _CORELIB_WIN32_TS_VECTOR_H_
+#define _CORELIB_WIN32_TS_VECTOR_H_
+
+#include <stdlib.h>
+#include <stdexcept>
+#include <windows.h>
+#include "common/ts_vector.h"
+
+template <class T>
+class WTSVector : public ITSVector<T>
+{
+private:
+       CRITICAL_SECTION csec;
+
+public:
+       WTSVector()
+       {
+               InitializeCriticalSection(&csec);
+       }
+
+       ~WTSVector()
+       {
+               DeleteCriticalSection(&csec);
+       }
+
+       inline virtual void lock()
+       {
+               EnterCriticalSection(&csec);
+       }
+
+       inline virtual void unlock()
+       {
+               LeaveCriticalSection(&csec);
+       }
+};
+
+#endif
index 05740a0..b0ebaaf 100644 (file)
                        />
                </Configuration>
                <Configuration
-                       Name="Release|Win32"
-                       OutputDirectory=".\Release"
-                       IntermediateDirectory=".\Release"
+                       Name="Private Debug|x64"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
                        ConfigurationType="1"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        />
                        <Tool
                                Name="VCMIDLTool"
-                               PreprocessorDefinitions="NDEBUG"
+                               PreprocessorDefinitions="_DEBUG"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
-                               TargetEnvironment="1"
-                               TypeLibraryName=".\Release/Simple.tlb"
+                               TargetEnvironment="3"
+                               TypeLibraryName=".\Simple___Win32_Private_Debug/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
-                               Optimization="2"
-                               InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-                               StringPooling="true"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="true"
-                               PrecompiledHeaderFile=".\Release/Simple.pch"
-                               AssemblerListingLocation=".\Release/"
-                               ObjectFile=".\Release/"
-                               ProgramDataBaseFileName=".\Release/"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="../../../core,../../../core/common"
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;PRIVATE_BROADCASTER"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               PrecompiledHeaderFile=".\Simple___Win32_Private_Debug/Simple.pch"
+                               AssemblerListingLocation=".\Simple___Win32_Private_Debug/"
+                               ObjectFile=".\Simple___Win32_Private_Debug/"
+                               ProgramDataBaseFileName=".\Simple___Win32_Private_Debug/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
+                               DebugInformationFormat="3"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
+                               PreprocessorDefinitions="_DEBUG"
                                Culture="1033"
                        />
                        <Tool
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib ole32.lib"
-                               OutputFile="Release/PeerCast.exe"
+                               AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+                               OutputFile="Debug/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               AdditionalLibraryDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib&quot;"
-                               ProgramDatabaseFile=".\Release/PeerCast.pdb"
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Simple___Win32_Private_Debug/PeerCast.pdb"
                                SubSystem="2"
-                               LinkTimeCodeGeneration="1"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
-                               TargetMachine="1"
+                               TargetMachine="17"
                        />
                        <Tool
                                Name="VCALinkTool"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Release/Simple.bsc"
+                               OutputFile=".\Simple___Win32_Private_Debug/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                        />
                        <Tool
                                Name="VCPostBuildEventTool"
-                               Description="Copy exe to pimp &amp; program files"
-                               CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
-                               ExcludedFromBuild="true"
+                               Description="Copy exe to program files"
+                               CommandLine="copy           debug\peercast.exe           &quot;c:\program files\peercast&quot;"
                        />
                </Configuration>
                <Configuration
-                       Name="Private Release|Win32"
-                       OutputDirectory=".\Simple___Win32_Private_Release"
-                       IntermediateDirectory=".\Simple___Win32_Private_Release"
+                       Name="Release|Win32"
+                       OutputDirectory=".\Release"
+                       IntermediateDirectory=".\Release"
                        ConfigurationType="1"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
                                TargetEnvironment="1"
-                               TypeLibraryName=".\Simple___Win32_Private_Release/Simple.tlb"
+                               TypeLibraryName=".\Release/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="2"
                                InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="../../../core,../../../core/common"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PRIVATE_BROADCASTER"
+                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
                                StringPooling="true"
                                RuntimeLibrary="0"
                                EnableFunctionLevelLinking="true"
-                               PrecompiledHeaderFile=".\Simple___Win32_Private_Release/Simple.pch"
-                               AssemblerListingLocation=".\Simple___Win32_Private_Release/"
-                               ObjectFile=".\Simple___Win32_Private_Release/"
-                               ProgramDataBaseFileName=".\Simple___Win32_Private_Release/"
+                               PrecompiledHeaderFile=".\Release/Simple.pch"
+                               AssemblerListingLocation=".\Release/"
+                               ObjectFile=".\Release/"
+                               ProgramDataBaseFileName=".\Release/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
-                               OutputFile="PrivRelease/PeerCast.exe"
+                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib ole32.lib"
+                               OutputFile="Release/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               ProgramDatabaseFile=".\Simple___Win32_Private_Release/PeerCast.pdb"
+                               AdditionalLibraryDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib&quot;"
+                               ProgramDatabaseFile=".\Release/PeerCast.pdb"
                                SubSystem="2"
+                               LinkTimeCodeGeneration="1"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
                                TargetMachine="1"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Simple___Win32_Private_Release/Simple.bsc"
+                               OutputFile=".\Release/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                                Name="VCPostBuildEventTool"
                                Description="Copy exe to pimp &amp; program files"
                                CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
+                               ExcludedFromBuild="true"
                        />
                </Configuration>
                <Configuration
-                       Name="Debug|Win32"
-                       OutputDirectory=".\Debug"
-                       IntermediateDirectory=".\Debug"
+                       Name="Release|x64"
+                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
                        ConfigurationType="1"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        />
                        <Tool
                                Name="VCMIDLTool"
-                               PreprocessorDefinitions="_DEBUG"
+                               PreprocessorDefinitions="NDEBUG"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
-                               TargetEnvironment="1"
-                               TypeLibraryName=".\Debug/Simple.tlb"
+                               TargetEnvironment="3"
+                               TypeLibraryName=".\Release/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft Platform SDK\Include&quot;"
-                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
-                               MinimalRebuild="true"
-                               BasicRuntimeChecks="3"
-                               RuntimeLibrary="1"
-                               PrecompiledHeaderFile=".\Debug/Simple.pch"
-                               AssemblerListingLocation=".\Debug/"
-                               ObjectFile=".\Debug/"
-                               ProgramDataBaseFileName=".\Debug/"
+                               Optimization="2"
+                               InlineFunctionExpansion="1"
+                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN64"
+                               StringPooling="true"
+                               RuntimeLibrary="0"
+                               EnableFunctionLevelLinking="true"
+                               PrecompiledHeaderFile=".\Release/Simple.pch"
+                               AssemblerListingLocation=".\Release/"
+                               ObjectFile=".\Release/"
+                               ProgramDataBaseFileName=".\Release/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
-                               DebugInformationFormat="4"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
+                               PreprocessorDefinitions="NDEBUG"
                                Culture="1033"
                        />
                        <Tool
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib"
-                               OutputFile="Debug/PeerCast.exe"
+                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib ole32.lib"
+                               OutputFile="Release/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
                                AdditionalLibraryDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib&quot;"
-                               GenerateDebugInformation="true"
-                               ProgramDatabaseFile=".\Debug/PeerCast.pdb"
+                               ProgramDatabaseFile=".\Release/PeerCast.pdb"
                                SubSystem="2"
+                               LinkTimeCodeGeneration="1"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
-                               TargetMachine="1"
+                               TargetMachine="17"
                        />
                        <Tool
                                Name="VCALinkTool"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Debug/Simple.bsc"
+                               OutputFile=".\Release/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                        />
                        <Tool
                                Name="VCPostBuildEventTool"
-                               Description="Copy exe to program files"
-                               CommandLine="copy           debug\peercast.exe           &quot;c:\program files\peercast&quot;"
+                               Description="Copy exe to pimp &amp; program files"
+                               CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
+                               ExcludedFromBuild="true"
                        />
                </Configuration>
                <Configuration
-                       Name="Private Debug|x64"
-                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
-                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       Name="Private Release|Win32"
+                       OutputDirectory=".\Simple___Win32_Private_Release"
+                       IntermediateDirectory=".\Simple___Win32_Private_Release"
                        ConfigurationType="1"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        />
                        <Tool
                                Name="VCMIDLTool"
-                               PreprocessorDefinitions="_DEBUG"
+                               PreprocessorDefinitions="NDEBUG"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
-                               TargetEnvironment="3"
-                               TypeLibraryName=".\Simple___Win32_Private_Debug/Simple.tlb"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Simple___Win32_Private_Release/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
-                               Optimization="0"
+                               Optimization="2"
+                               InlineFunctionExpansion="1"
                                AdditionalIncludeDirectories="../../../core,../../../core/common"
-                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;PRIVATE_BROADCASTER"
-                               MinimalRebuild="true"
-                               BasicRuntimeChecks="3"
-                               RuntimeLibrary="1"
-                               PrecompiledHeaderFile=".\Simple___Win32_Private_Debug/Simple.pch"
-                               AssemblerListingLocation=".\Simple___Win32_Private_Debug/"
-                               ObjectFile=".\Simple___Win32_Private_Debug/"
-                               ProgramDataBaseFileName=".\Simple___Win32_Private_Debug/"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PRIVATE_BROADCASTER"
+                               StringPooling="true"
+                               RuntimeLibrary="0"
+                               EnableFunctionLevelLinking="true"
+                               PrecompiledHeaderFile=".\Simple___Win32_Private_Release/Simple.pch"
+                               AssemblerListingLocation=".\Simple___Win32_Private_Release/"
+                               ObjectFile=".\Simple___Win32_Private_Release/"
+                               ProgramDataBaseFileName=".\Simple___Win32_Private_Release/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
-                               DebugInformationFormat="3"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
+                               PreprocessorDefinitions="NDEBUG"
                                Culture="1033"
                        />
                        <Tool
                        <Tool
                                Name="VCLinkerTool"
                                AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
-                               OutputFile="Debug/PeerCast.exe"
+                               OutputFile="PrivRelease/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               GenerateDebugInformation="true"
-                               ProgramDatabaseFile=".\Simple___Win32_Private_Debug/PeerCast.pdb"
+                               ProgramDatabaseFile=".\Simple___Win32_Private_Release/PeerCast.pdb"
                                SubSystem="2"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
-                               TargetMachine="17"
+                               TargetMachine="1"
                        />
                        <Tool
                                Name="VCALinkTool"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Simple___Win32_Private_Debug/Simple.bsc"
+                               OutputFile=".\Simple___Win32_Private_Release/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                        />
                        <Tool
                                Name="VCPostBuildEventTool"
-                               Description="Copy exe to program files"
-                               CommandLine="copy           debug\peercast.exe           &quot;c:\program files\peercast&quot;"
+                               Description="Copy exe to pimp &amp; program files"
+                               CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
                        />
                </Configuration>
                <Configuration
-                       Name="Release|x64"
+                       Name="Private Release|x64"
                        OutputDirectory="$(PlatformName)\$(ConfigurationName)"
                        IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
                        ConfigurationType="1"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
                                TargetEnvironment="3"
-                               TypeLibraryName=".\Release/Simple.tlb"
+                               TypeLibraryName=".\Simple___Win32_Private_Release/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="2"
                                InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN64"
+                               AdditionalIncludeDirectories="../../../core,../../../core/common"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PRIVATE_BROADCASTER"
                                StringPooling="true"
                                RuntimeLibrary="0"
                                EnableFunctionLevelLinking="true"
-                               PrecompiledHeaderFile=".\Release/Simple.pch"
-                               AssemblerListingLocation=".\Release/"
-                               ObjectFile=".\Release/"
-                               ProgramDataBaseFileName=".\Release/"
+                               PrecompiledHeaderFile=".\Simple___Win32_Private_Release/Simple.pch"
+                               AssemblerListingLocation=".\Simple___Win32_Private_Release/"
+                               ObjectFile=".\Simple___Win32_Private_Release/"
+                               ProgramDataBaseFileName=".\Simple___Win32_Private_Release/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib ole32.lib"
-                               OutputFile="Release/PeerCast.exe"
+                               AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+                               OutputFile="PrivRelease/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               AdditionalLibraryDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib&quot;"
-                               ProgramDatabaseFile=".\Release/PeerCast.pdb"
+                               ProgramDatabaseFile=".\Simple___Win32_Private_Release/PeerCast.pdb"
                                SubSystem="2"
-                               LinkTimeCodeGeneration="1"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
                                TargetMachine="17"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Release/Simple.bsc"
+                               OutputFile=".\Simple___Win32_Private_Release/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                                Name="VCPostBuildEventTool"
                                Description="Copy exe to pimp &amp; program files"
                                CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
-                               ExcludedFromBuild="true"
                        />
                </Configuration>
                <Configuration
-                       Name="Private Release|x64"
-                       OutputDirectory="$(PlatformName)\$(ConfigurationName)"
-                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+                       Name="Debug|Win32"
+                       OutputDirectory=".\Debug"
+                       IntermediateDirectory=".\Debug"
                        ConfigurationType="1"
                        InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
                        UseOfMFC="0"
                        />
                        <Tool
                                Name="VCMIDLTool"
-                               PreprocessorDefinitions="NDEBUG"
+                               PreprocessorDefinitions="_DEBUG"
                                MkTypLibCompatible="true"
                                SuppressStartupBanner="true"
-                               TargetEnvironment="3"
-                               TypeLibraryName=".\Simple___Win32_Private_Release/Simple.tlb"
+                               TargetEnvironment="1"
+                               TypeLibraryName=".\Debug/Simple.tlb"
                                HeaderFileName=""
                        />
                        <Tool
                                Name="VCCLCompilerTool"
-                               Optimization="2"
-                               InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="../../../core,../../../core/common"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PRIVATE_BROADCASTER"
-                               StringPooling="true"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="true"
-                               PrecompiledHeaderFile=".\Simple___Win32_Private_Release/Simple.pch"
-                               AssemblerListingLocation=".\Simple___Win32_Private_Release/"
-                               ObjectFile=".\Simple___Win32_Private_Release/"
-                               ProgramDataBaseFileName=".\Simple___Win32_Private_Release/"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="../../../core;../../../core/common;&quot;C:\Program Files\Microsoft Platform SDK\Include&quot;"
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               PrecompiledHeaderFile=".\Debug/Simple.pch"
+                               AssemblerListingLocation=".\Debug/"
+                               ObjectFile=".\Debug/"
+                               ProgramDataBaseFileName=".\Debug/"
                                BrowseInformation="1"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
+                               DebugInformationFormat="4"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
+                               PreprocessorDefinitions="_DEBUG"
                                Culture="1033"
                        />
                        <Tool
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
-                               OutputFile="PrivRelease/PeerCast.exe"
+                               AdditionalDependencies="ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib odbc32.lib odbccp32.lib uuid.lib"
+                               OutputFile="Debug/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               ProgramDatabaseFile=".\Simple___Win32_Private_Release/PeerCast.pdb"
+                               AdditionalLibraryDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib&quot;"
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Debug/PeerCast.pdb"
                                SubSystem="2"
                                RandomizedBaseAddress="1"
                                DataExecutionPrevention="0"
-                               TargetMachine="17"
+                               TargetMachine="1"
                        />
                        <Tool
                                Name="VCALinkTool"
                        <Tool
                                Name="VCBscMakeTool"
                                SuppressStartupBanner="true"
-                               OutputFile=".\Simple___Win32_Private_Release/Simple.bsc"
+                               OutputFile=".\Debug/Simple.bsc"
                        />
                        <Tool
                                Name="VCFxCopTool"
                        />
                        <Tool
                                Name="VCPostBuildEventTool"
-                               Description="Copy exe to pimp &amp; program files"
-                               CommandLine="copy                   release\peercast.exe                   &quot;c:\program files\peercast&quot;&#x0D;&#x0A;copy                   release\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
+                               Description=""
+                               CommandLine=""
                        />
                </Configuration>
                <Configuration
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                                PreprocessorDefinitions=""
-                                               AdditionalIncludeDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                                PreprocessorDefinitions=""
+                                               AdditionalIncludeDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                                PreprocessorDefinitions=""
-                                               AdditionalIncludeDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCResourceCompilerTool"
                                                PreprocessorDefinitions=""
+                                               AdditionalIncludeDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|Win32"
+                                       Name="Private Debug|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|Win32"
+                                       Name="Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Debug|x64"
+                                       Name="Private Release|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Private Release|x64"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Private Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCLCompilerTool"
index cab34d3..ad72611 100644 (file)
                                OutputFile="Debug/PeerCast.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
-                               AdditionalLibraryDirectories="&quot;C:\Visual Studio Projects\PeCa-IMAS7651\core\win32\lib\Debug&quot;"
+                               AdditionalLibraryDirectories="../../../core\win32\lib\Release"
                                GenerateDebugInformation="true"
                                ProgramDatabaseFile=".\Debug/PeerCast.pdb"
                                SubSystem="2"
                        />
                        <Tool
                                Name="VCPostBuildEventTool"
-                               Description="Copy exe to pimp"
-                               CommandLine="copy                   debug\peercast.exe                   ..\pimp\&#x0D;&#x0A;"
+                               Description=""
+                               CommandLine=""
                        />
                </Configuration>
                <Configuration
index 6844aa3..386058c 100644 (file)
@@ -1,4 +1,4 @@
-PeerCast IM0044 (released on 20110309 by えるー)
+PeerCast IM0045 (released on 20120506 by えるー)
 based on PeerCast IM7651 by Trill, Original: (c) 2005-2007 giles/peercast.org
 
 
@@ -46,6 +46,9 @@ based on PeerCast IM7651 by Trill, Original: (c) 2005-2007 giles/peercast.org
 
 
 = 改訂履歴
+  - IM0045 (120506)
+    + DoS攻撃への耐性を向上。
+
   - IM0044 (110309)
     + GUIの右クリックメニューからリレーしていないチャンネル情報を
       一括削除できるようになりました。