mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-24 13:05:53 +00:00
Add ripple_client module unity build and move RPCServer into it
This commit is contained in:
45
modules/ripple_client/ripple_client.cpp
Normal file
45
modules/ripple_client/ripple_client.cpp
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
Copyright (c) 2011-2013, OpenCoin, Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
/** Add this to get the @ref ripple_client module.
|
||||||
|
|
||||||
|
@file ripple_client.cpp
|
||||||
|
@ingroup ripple_client
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ripple_client.h"
|
||||||
|
|
||||||
|
// VFALCO: TODO, fix these warnings!
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
//#pragma warning (push) // Causes spurious C4503 "decorated name exceeds maximum length"
|
||||||
|
#pragma warning (disable: 4018) // signed/unsigned mismatch
|
||||||
|
#pragma warning (disable: 4244) // conversion, possible loss of data
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "src/cpp/ripple/CallRPC.cpp"
|
||||||
|
#include "src/cpp/ripple/HttpsClient.cpp"
|
||||||
|
#include "src/cpp/ripple/rpc.cpp"
|
||||||
|
#include "src/cpp/ripple/RPCDoor.cpp"
|
||||||
|
#include "src/cpp/ripple/RPCErr.cpp"
|
||||||
|
#include "src/cpp/ripple/RPCHandler.cpp"
|
||||||
|
#include "src/cpp/ripple/RPCServer.cpp"
|
||||||
|
#include "src/cpp/ripple/RPCSub.cpp"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
//#pragma warning (pop)
|
||||||
|
#endif
|
||||||
37
modules/ripple_client/ripple_client.h
Normal file
37
modules/ripple_client/ripple_client.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
Copyright (c) 2011-2013, OpenCoin, Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
/** Include this to get the @ref ripple_client module.
|
||||||
|
|
||||||
|
@file ripple_client.h
|
||||||
|
@ingroup ripple_client
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Client classes.
|
||||||
|
|
||||||
|
This module provides classes that perform client interaction with the server.
|
||||||
|
|
||||||
|
@defgroup ripple_client
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef RIPPLE_CLIENT_H
|
||||||
|
#define RIPPLE_CLIENT_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
150
newcoin.vcxproj
150
newcoin.vcxproj
@@ -168,6 +168,7 @@
|
|||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="modules\ripple_basics\ripple_basics.cpp" />
|
<ClCompile Include="modules\ripple_basics\ripple_basics.cpp" />
|
||||||
|
<ClCompile Include="modules\ripple_client\ripple_client.cpp" />
|
||||||
<ClCompile Include="modules\ripple_ledger\ripple_ledger.cpp" />
|
<ClCompile Include="modules\ripple_ledger\ripple_ledger.cpp" />
|
||||||
<ClCompile Include="src\cpp\database\database.cpp" />
|
<ClCompile Include="src\cpp\database\database.cpp" />
|
||||||
<ClCompile Include="src\cpp\database\sqlite3.c" />
|
<ClCompile Include="src\cpp\database\sqlite3.c" />
|
||||||
@@ -175,14 +176,20 @@
|
|||||||
<ClCompile Include="src\cpp\json\json_reader.cpp">
|
<ClCompile Include="src\cpp\json\json_reader.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\json\json_value.cpp">
|
<ClCompile Include="src\cpp\json\json_value.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\json\json_writer.cpp">
|
<ClCompile Include="src\cpp\json\json_writer.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\json_core.cpp" />
|
<ClCompile Include="src\cpp\json_core.cpp" />
|
||||||
<ClCompile Include="src\cpp\leveldb\db\builder.cc">
|
<ClCompile Include="src\cpp\leveldb\db\builder.cc">
|
||||||
@@ -532,9 +539,24 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\AmountRound.cpp" />
|
<ClCompile Include="src\cpp\ripple\AmountRound.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Application.cpp" />
|
<ClCompile Include="src\cpp\ripple\Application.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\BitcoinUtil.cpp" />
|
<ClCompile Include="src\cpp\ripple\BitcoinUtil.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\CallRPC.cpp" />
|
<ClCompile Include="src\cpp\ripple\CallRPC.cpp">
|
||||||
<ClCompile Include="src\cpp\ripple\CanonicalTXSet.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ClCompile Include="src\cpp\ripple\ChangeTransactor.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\CanonicalTXSet.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\ChangeTransactor.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\Config.cpp" />
|
<ClCompile Include="src\cpp\ripple\Config.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\ConnectionPool.cpp" />
|
<ClCompile Include="src\cpp\ripple\ConnectionPool.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Contract.cpp">
|
<ClCompile Include="src\cpp\ripple\Contract.cpp">
|
||||||
@@ -555,7 +577,12 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\FieldNames.cpp" />
|
<ClCompile Include="src\cpp\ripple\FieldNames.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\HashedObject.cpp" />
|
<ClCompile Include="src\cpp\ripple\HashedObject.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\HTTPRequest.cpp" />
|
<ClCompile Include="src\cpp\ripple\HTTPRequest.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\HttpsClient.cpp" />
|
<ClCompile Include="src\cpp\ripple\HttpsClient.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\InstanceCounter.cpp" />
|
<ClCompile Include="src\cpp\ripple\InstanceCounter.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Interpreter.cpp" />
|
<ClCompile Include="src\cpp\ripple\Interpreter.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\JobQueue.cpp" />
|
<ClCompile Include="src\cpp\ripple\JobQueue.cpp" />
|
||||||
@@ -693,12 +720,42 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\rpc.cpp" />
|
<ClCompile Include="src\cpp\ripple\rpc.cpp">
|
||||||
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCErr.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCServer.cpp" />
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCSub.cpp" />
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCErr.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCServer.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCSub.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\ScriptData.cpp" />
|
<ClCompile Include="src\cpp\ripple\ScriptData.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp">
|
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
@@ -857,44 +914,63 @@
|
|||||||
<ClInclude Include="database\sqlite3.h" />
|
<ClInclude Include="database\sqlite3.h" />
|
||||||
<ClInclude Include="database\sqlite3ext.h" />
|
<ClInclude Include="database\sqlite3ext.h" />
|
||||||
<ClInclude Include="modules\ripple_basics\ripple_basics.h" />
|
<ClInclude Include="modules\ripple_basics\ripple_basics.h" />
|
||||||
|
<ClInclude Include="modules\ripple_client\ripple_client.h" />
|
||||||
<ClInclude Include="modules\ripple_ledger\ripple_ledger.h" />
|
<ClInclude Include="modules\ripple_ledger\ripple_ledger.h" />
|
||||||
<ClInclude Include="src\cpp\database\database.h" />
|
<ClInclude Include="src\cpp\database\database.h" />
|
||||||
<ClInclude Include="src\cpp\database\SqliteDatabase.h" />
|
<ClInclude Include="src\cpp\database\SqliteDatabase.h" />
|
||||||
<ClInclude Include="src\cpp\json\autolink.h">
|
<ClInclude Include="src\cpp\json\autolink.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\config.h">
|
<ClInclude Include="src\cpp\json\config.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\features.h">
|
<ClInclude Include="src\cpp\json\features.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\forwards.h">
|
<ClInclude Include="src\cpp\json\forwards.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\json.h">
|
<ClInclude Include="src\cpp\json\json.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\json_batchallocator.h">
|
<ClInclude Include="src\cpp\json\json_batchallocator.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\reader.h">
|
<ClInclude Include="src\cpp\json\reader.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\value.h">
|
<ClInclude Include="src\cpp\json\value.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\json\writer.h">
|
<ClInclude Include="src\cpp\json\writer.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\leveldb\db\builder.h">
|
<ClInclude Include="src\cpp\leveldb\db\builder.h">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
@@ -1338,16 +1414,22 @@
|
|||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SrcDir)\%(Filename).pb.h;$(SrcDir)\%(Filename).pb.cc</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SrcDir)\%(Filename).pb.h;$(SrcDir)\%(Filename).pb.cc</Outputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<None Include="src\cpp\json\json_internalarray.inl">
|
<None Include="src\cpp\json\json_internalarray.inl">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</None>
|
</None>
|
||||||
<None Include="src\cpp\json\json_internalmap.inl">
|
<None Include="src\cpp\json\json_internalmap.inl">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</None>
|
</None>
|
||||||
<None Include="src\cpp\json\json_valueiterator.inl">
|
<None Include="src\cpp\json\json_valueiterator.inl">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
</None>
|
</None>
|
||||||
<None Include="src\cpp\protobuf\src\google\protobuf\descriptor.proto">
|
<None Include="src\cpp\protobuf\src\google\protobuf\descriptor.proto">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
|||||||
@@ -95,6 +95,9 @@
|
|||||||
<Filter Include="1. Modules\ripple_ledger\processing">
|
<Filter Include="1. Modules\ripple_ledger\processing">
|
||||||
<UniqueIdentifier>{c441b367-d096-401f-a3f0-5ac24290d7b7}</UniqueIdentifier>
|
<UniqueIdentifier>{c441b367-d096-401f-a3f0-5ac24290d7b7}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="1. Modules\ripple_client\rpc">
|
||||||
|
<UniqueIdentifier>{3f351c55-360d-40bc-a136-4944ce572efd}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\cpp\database\sqlite3.c">
|
<ClCompile Include="src\cpp\database\sqlite3.c">
|
||||||
@@ -433,15 +436,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\Application.cpp">
|
<ClCompile Include="src\cpp\ripple\Application.cpp">
|
||||||
<Filter>1. Modules\ripple_main</Filter>
|
<Filter>1. Modules\ripple_main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\CallRPC.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\CanonicalTXSet.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\ChangeTransactor.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\Config.cpp">
|
<ClCompile Include="src\cpp\ripple\Config.cpp">
|
||||||
<Filter>1. Modules\ripple_main</Filter>
|
<Filter>1. Modules\ripple_main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -508,9 +502,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\AccountSetTransactor.cpp">
|
<ClCompile Include="src\cpp\ripple\AccountSetTransactor.cpp">
|
||||||
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\HttpsClient.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\LoadManager.cpp">
|
<ClCompile Include="src\cpp\ripple\LoadManager.cpp">
|
||||||
<Filter>1. Modules\ripple_main</Filter>
|
<Filter>1. Modules\ripple_main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -535,21 +526,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\NetworkOPs.cpp">
|
<ClCompile Include="src\cpp\ripple\NetworkOPs.cpp">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\RPCErr.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\RPCSub.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\rpc.cpp">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp">
|
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp">
|
||||||
<Filter>1. Modules\ripple_ledger\serialization</Filter>
|
<Filter>1. Modules\ripple_ledger\serialization</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -571,9 +547,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\ValidationCollection.cpp">
|
<ClCompile Include="src\cpp\ripple\ValidationCollection.cpp">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\RPCServer.cpp">
|
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\WSDoor.cpp">
|
<ClCompile Include="src\cpp\ripple\WSDoor.cpp">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -697,6 +670,39 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\RippleState.cpp">
|
<ClCompile Include="src\cpp\ripple\RippleState.cpp">
|
||||||
<Filter>1. Modules\ripple_ledger\processing</Filter>
|
<Filter>1. Modules\ripple_ledger\processing</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\CallRPC.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\HttpsClient.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\rpc.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCErr.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCSub.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="modules\ripple_client\ripple_client.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\ChangeTransactor.cpp">
|
||||||
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\CanonicalTXSet.cpp">
|
||||||
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCServer.cpp">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="database\sqlite3ext.h">
|
<ClInclude Include="database\sqlite3ext.h">
|
||||||
@@ -1065,15 +1071,6 @@
|
|||||||
<ClInclude Include="src\cpp\ripple\AutoSocket.h">
|
<ClInclude Include="src\cpp\ripple\AutoSocket.h">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\ripple\CallRPC.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\CanonicalTXSet.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\ChangeTransactor.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\Config.h">
|
<ClInclude Include="src\cpp\ripple\Config.h">
|
||||||
<Filter>1. Modules\ripple_main</Filter>
|
<Filter>1. Modules\ripple_main</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -1134,9 +1131,6 @@
|
|||||||
<ClInclude Include="src\cpp\ripple\AccountSetTransactor.h">
|
<ClInclude Include="src\cpp\ripple\AccountSetTransactor.h">
|
||||||
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\ripple\HttpsClient.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\LoadManager.h">
|
<ClInclude Include="src\cpp\ripple\LoadManager.h">
|
||||||
<Filter>1. Modules\ripple_main</Filter>
|
<Filter>1. Modules\ripple_main</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -1155,21 +1149,6 @@
|
|||||||
<ClInclude Include="src\cpp\ripple\NetworkOPs.h">
|
<ClInclude Include="src\cpp\ripple\NetworkOPs.h">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\ripple\RPC.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\RPCDoor.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\RPCErr.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\RPCHandler.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\RPCSub.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\SerializedLedger.h">
|
<ClInclude Include="src\cpp\ripple\SerializedLedger.h">
|
||||||
<Filter>1. Modules\ripple_ledger\serialization</Filter>
|
<Filter>1. Modules\ripple_ledger\serialization</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -1194,12 +1173,6 @@
|
|||||||
<ClInclude Include="src\cpp\ripple\ValidationCollection.h">
|
<ClInclude Include="src\cpp\ripple\ValidationCollection.h">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\cpp\ripple\WSHandler.h">
|
|
||||||
<Filter>1. Modules\ripple_client</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\RPCServer.h">
|
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\cpp\ripple\WSDoor.h">
|
<ClInclude Include="src\cpp\ripple\WSDoor.h">
|
||||||
<Filter>1. Modules\ripple_net</Filter>
|
<Filter>1. Modules\ripple_net</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -1326,6 +1299,42 @@
|
|||||||
<ClInclude Include="src\cpp\ripple\RippleState.h">
|
<ClInclude Include="src\cpp\ripple\RippleState.h">
|
||||||
<Filter>1. Modules\ripple_ledger\processing</Filter>
|
<Filter>1. Modules\ripple_ledger\processing</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\WSHandler.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\CallRPC.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\HttpsClient.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPC.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPCDoor.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPCErr.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPCHandler.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPCSub.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="modules\ripple_client\ripple_client.h">
|
||||||
|
<Filter>1. Modules\ripple_client</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\ChangeTransactor.h">
|
||||||
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\CanonicalTXSet.h">
|
||||||
|
<Filter>1. Modules\ripple_ledger\transactions</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\cpp\ripple\RPCServer.h">
|
||||||
|
<Filter>1. Modules\ripple_client\rpc</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="wallet.xml" />
|
<None Include="wallet.xml" />
|
||||||
|
|||||||
@@ -14,8 +14,6 @@
|
|||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
|
||||||
|
|
||||||
#define CLIENT_MAX_HEADER (32*1024)
|
#define CLIENT_MAX_HEADER (32*1024)
|
||||||
|
|
||||||
using namespace boost::system;
|
using namespace boost::system;
|
||||||
@@ -84,7 +82,7 @@ void HttpsClient::httpsGet(
|
|||||||
|
|
||||||
void HttpsClient::httpsNext()
|
void HttpsClient::httpsNext()
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Fetch: " << mDeqSites[0];
|
WriteLog (lsTRACE, HttpsClient) << "Fetch: " << mDeqSites[0];
|
||||||
|
|
||||||
boost::shared_ptr<boost::asio::ip::tcp::resolver::query> query(new boost::asio::ip::tcp::resolver::query(mDeqSites[0], boost::lexical_cast<std::string>(mPort),
|
boost::shared_ptr<boost::asio::ip::tcp::resolver::query> query(new boost::asio::ip::tcp::resolver::query(mDeqSites[0], boost::lexical_cast<std::string>(mPort),
|
||||||
ip::resolver_query_base::numeric_service));
|
ip::resolver_query_base::numeric_service));
|
||||||
@@ -92,7 +90,7 @@ void HttpsClient::httpsNext()
|
|||||||
|
|
||||||
mDeadline.expires_from_now(mTimeout, mShutdown);
|
mDeadline.expires_from_now(mTimeout, mShutdown);
|
||||||
|
|
||||||
cLog(lsTRACE) << "expires_from_now: " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "expires_from_now: " << mShutdown.message();
|
||||||
|
|
||||||
if (!mShutdown)
|
if (!mShutdown)
|
||||||
{
|
{
|
||||||
@@ -105,7 +103,7 @@ void HttpsClient::httpsNext()
|
|||||||
|
|
||||||
if (!mShutdown)
|
if (!mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Resolving: " << mDeqSites[0];
|
WriteLog (lsTRACE, HttpsClient) << "Resolving: " << mDeqSites[0];
|
||||||
|
|
||||||
mResolver.async_resolve(*mQuery,
|
mResolver.async_resolve(*mQuery,
|
||||||
boost::bind(
|
boost::bind(
|
||||||
@@ -124,20 +122,20 @@ void HttpsClient::handleDeadline(const boost::system::error_code& ecResult)
|
|||||||
if (ecResult == boost::asio::error::operation_aborted)
|
if (ecResult == boost::asio::error::operation_aborted)
|
||||||
{
|
{
|
||||||
// Timer canceled because deadline no longer needed.
|
// Timer canceled because deadline no longer needed.
|
||||||
cLog(lsTRACE) << "Deadline cancelled.";
|
WriteLog (lsTRACE, HttpsClient) << "Deadline cancelled.";
|
||||||
|
|
||||||
nothing(); // Aborter is done.
|
nothing(); // Aborter is done.
|
||||||
}
|
}
|
||||||
else if (ecResult)
|
else if (ecResult)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Deadline error: " << mDeqSites[0] << ": " << ecResult.message();
|
WriteLog (lsTRACE, HttpsClient) << "Deadline error: " << mDeqSites[0] << ": " << ecResult.message();
|
||||||
|
|
||||||
// Can't do anything sound.
|
// Can't do anything sound.
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Deadline arrived.";
|
WriteLog (lsTRACE, HttpsClient) << "Deadline arrived.";
|
||||||
|
|
||||||
// Mark us as shutting down.
|
// Mark us as shutting down.
|
||||||
// XXX Use our own error code.
|
// XXX Use our own error code.
|
||||||
@@ -161,7 +159,7 @@ void HttpsClient::handleShutdown(
|
|||||||
{
|
{
|
||||||
if (ecResult)
|
if (ecResult)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Shutdown error: " << mDeqSites[0] << ": " << ecResult.message();
|
WriteLog (lsTRACE, HttpsClient) << "Shutdown error: " << mDeqSites[0] << ": " << ecResult.message();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,13 +173,13 @@ void HttpsClient::handleResolve(
|
|||||||
|
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Resolve error: " << mDeqSites[0] << ": " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "Resolve error: " << mDeqSites[0] << ": " << mShutdown.message();
|
||||||
|
|
||||||
invokeComplete(mShutdown);
|
invokeComplete(mShutdown);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Resolve complete.";
|
WriteLog (lsTRACE, HttpsClient) << "Resolve complete.";
|
||||||
|
|
||||||
boost::asio::async_connect(
|
boost::asio::async_connect(
|
||||||
mSocket.lowest_layer(),
|
mSocket.lowest_layer(),
|
||||||
@@ -200,19 +198,19 @@ void HttpsClient::handleConnect(const boost::system::error_code& ecResult)
|
|||||||
|
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Connect error: " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "Connect error: " << mShutdown.message();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mShutdown)
|
if (!mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Connected.";
|
WriteLog (lsTRACE, HttpsClient) << "Connected.";
|
||||||
|
|
||||||
if (theConfig.SSL_VERIFY)
|
if (theConfig.SSL_VERIFY)
|
||||||
{
|
{
|
||||||
mShutdown = mSocket.verify(mDeqSites[0]);
|
mShutdown = mSocket.verify(mDeqSites[0]);
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "set_verify_callback: " << mDeqSites[0] << ": " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "set_verify_callback: " << mDeqSites[0] << ": " << mShutdown.message();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -243,13 +241,13 @@ void HttpsClient::handleRequest(const boost::system::error_code& ecResult)
|
|||||||
|
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Handshake error:" << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "Handshake error:" << mShutdown.message();
|
||||||
|
|
||||||
invokeComplete(mShutdown);
|
invokeComplete(mShutdown);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Session started.";
|
WriteLog (lsTRACE, HttpsClient) << "Session started.";
|
||||||
|
|
||||||
mBuild(mRequest, mDeqSites[0]);
|
mBuild(mRequest, mDeqSites[0]);
|
||||||
|
|
||||||
@@ -269,13 +267,13 @@ void HttpsClient::handleWrite(const boost::system::error_code& ecResult, std::si
|
|||||||
|
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Write error: " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "Write error: " << mShutdown.message();
|
||||||
|
|
||||||
invokeComplete(mShutdown);
|
invokeComplete(mShutdown);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Wrote.";
|
WriteLog (lsTRACE, HttpsClient) << "Wrote.";
|
||||||
|
|
||||||
mSocket.async_read_until(
|
mSocket.async_read_until(
|
||||||
mHeader,
|
mHeader,
|
||||||
@@ -290,7 +288,7 @@ void HttpsClient::handleWrite(const boost::system::error_code& ecResult, std::si
|
|||||||
void HttpsClient::handleHeader(const boost::system::error_code& ecResult, std::size_t bytes_transferred)
|
void HttpsClient::handleHeader(const boost::system::error_code& ecResult, std::size_t bytes_transferred)
|
||||||
{
|
{
|
||||||
std::string strHeader((std::istreambuf_iterator<char>(&mHeader)), std::istreambuf_iterator<char>());
|
std::string strHeader((std::istreambuf_iterator<char>(&mHeader)), std::istreambuf_iterator<char>());
|
||||||
cLog(lsTRACE) << "Header: \"" << strHeader << "\"";
|
WriteLog (lsTRACE, HttpsClient) << "Header: \"" << strHeader << "\"";
|
||||||
|
|
||||||
static boost::regex reStatus("\\`HTTP/1\\S+ (\\d{3}) .*\\'"); // HTTP/1.1 200 OK
|
static boost::regex reStatus("\\`HTTP/1\\S+ (\\d{3}) .*\\'"); // HTTP/1.1 200 OK
|
||||||
static boost::regex reSize("\\`.*\\r\\nContent-Length:\\s+([0-9]+).*\\'");
|
static boost::regex reSize("\\`.*\\r\\nContent-Length:\\s+([0-9]+).*\\'");
|
||||||
@@ -302,7 +300,7 @@ void HttpsClient::handleHeader(const boost::system::error_code& ecResult, std::s
|
|||||||
if (!bMatch)
|
if (!bMatch)
|
||||||
{
|
{
|
||||||
// XXX Use our own error code.
|
// XXX Use our own error code.
|
||||||
cLog(lsTRACE) << "No status code";
|
WriteLog (lsTRACE, HttpsClient) << "No status code";
|
||||||
invokeComplete(boost::system::error_code(errc::bad_address, system_category()));
|
invokeComplete(boost::system::error_code(errc::bad_address, system_category()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -339,7 +337,7 @@ void HttpsClient::handleData(const boost::system::error_code& ecResult, std::siz
|
|||||||
|
|
||||||
if (mShutdown && mShutdown != boost::asio::error::eof)
|
if (mShutdown && mShutdown != boost::asio::error::eof)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Read error: " << mShutdown.message();
|
WriteLog (lsTRACE, HttpsClient) << "Read error: " << mShutdown.message();
|
||||||
|
|
||||||
invokeComplete(mShutdown);
|
invokeComplete(mShutdown);
|
||||||
}
|
}
|
||||||
@@ -347,7 +345,7 @@ void HttpsClient::handleData(const boost::system::error_code& ecResult, std::siz
|
|||||||
{
|
{
|
||||||
if (mShutdown)
|
if (mShutdown)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "Complete.";
|
WriteLog (lsTRACE, HttpsClient) << "Complete.";
|
||||||
|
|
||||||
nothing();
|
nothing();
|
||||||
}
|
}
|
||||||
@@ -369,10 +367,10 @@ void HttpsClient::invokeComplete(const boost::system::error_code& ecResult, int
|
|||||||
|
|
||||||
if (ecCancel)
|
if (ecCancel)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "HttpsClient::invokeComplete: Deadline cancel error: " << ecCancel.message();
|
WriteLog (lsTRACE, HttpsClient) << "HttpsClient::invokeComplete: Deadline cancel error: " << ecCancel.message();
|
||||||
}
|
}
|
||||||
|
|
||||||
cLog(lsDEBUG) << "HttpsClient::invokeComplete: Deadline popping: " << mDeqSites.size();
|
WriteLog (lsDEBUG, HttpsClient) << "HttpsClient::invokeComplete: Deadline popping: " << mDeqSites.size();
|
||||||
if (!mDeqSites.empty())
|
if (!mDeqSites.empty())
|
||||||
{
|
{
|
||||||
mDeqSites.pop_front();
|
mDeqSites.pop_front();
|
||||||
@@ -446,7 +444,7 @@ void HttpsClient::httpsRequest(
|
|||||||
#define SMS_TIMEOUT 30
|
#define SMS_TIMEOUT 30
|
||||||
|
|
||||||
bool responseSMS(const boost::system::error_code& ecResult, int iStatus, const std::string& strData) {
|
bool responseSMS(const boost::system::error_code& ecResult, int iStatus, const std::string& strData) {
|
||||||
cLog(lsINFO) << "SMS: Response:" << iStatus << " :" << strData;
|
WriteLog (lsINFO, HttpsClient) << "SMS: Response:" << iStatus << " :" << strData;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -459,7 +457,7 @@ void HttpsClient::sendSMS(boost::asio::io_service& io_service, const std::string
|
|||||||
|
|
||||||
if (theConfig.SMS_URL == "" || !parseUrl(theConfig.SMS_URL, strScheme, strDomain, iPort, strPath))
|
if (theConfig.SMS_URL == "" || !parseUrl(theConfig.SMS_URL, strScheme, strDomain, iPort, strPath))
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "SMSRequest: Bad URL:" << theConfig.SMS_URL;
|
WriteLog (lsWARNING, HttpsClient) << "SMSRequest: Bad URL:" << theConfig.SMS_URL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -475,8 +473,8 @@ void HttpsClient::sendSMS(boost::asio::io_service& io_service, const std::string
|
|||||||
% theConfig.SMS_SECRET
|
% theConfig.SMS_SECRET
|
||||||
% urlEncode(strText));
|
% urlEncode(strText));
|
||||||
|
|
||||||
// cLog(lsINFO) << "SMS: Request:" << strURI;
|
// WriteLog (lsINFO) << "SMS: Request:" << strURI;
|
||||||
cLog(lsINFO) << "SMS: Request: '" << strText << "'";
|
WriteLog (lsINFO, HttpsClient) << "SMS: Request: '" << strText << "'";
|
||||||
|
|
||||||
if (iPort < 0)
|
if (iPort < 0)
|
||||||
iPort = bSSL ? 443 : 80;
|
iPort = bSSL ? 443 : 80;
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
SETUP_LOG();
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace boost::asio::ip;
|
using namespace boost::asio::ip;
|
||||||
|
|
||||||
@@ -14,13 +12,13 @@ RPCDoor::RPCDoor(boost::asio::io_service& io_service) :
|
|||||||
mAcceptor(io_service, tcp::endpoint(address::from_string(theConfig.RPC_IP), theConfig.RPC_PORT)),
|
mAcceptor(io_service, tcp::endpoint(address::from_string(theConfig.RPC_IP), theConfig.RPC_PORT)),
|
||||||
mDelayTimer(io_service)
|
mDelayTimer(io_service)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "RPC port: " << theConfig.RPC_IP << " " << theConfig.RPC_PORT << " allow remote: " << theConfig.RPC_ALLOW_REMOTE;
|
WriteLog (lsINFO, RPCDoor) << "RPC port: " << theConfig.RPC_IP << " " << theConfig.RPC_PORT << " allow remote: " << theConfig.RPC_ALLOW_REMOTE;
|
||||||
startListening();
|
startListening();
|
||||||
}
|
}
|
||||||
|
|
||||||
RPCDoor::~RPCDoor()
|
RPCDoor::~RPCDoor()
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "RPC port: " << theConfig.RPC_IP << " " << theConfig.RPC_PORT << " allow remote: " << theConfig.RPC_ALLOW_REMOTE;
|
WriteLog (lsINFO, RPCDoor) << "RPC port: " << theConfig.RPC_IP << " " << theConfig.RPC_PORT << " allow remote: " << theConfig.RPC_ALLOW_REMOTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RPCDoor::startListening()
|
void RPCDoor::startListening()
|
||||||
@@ -63,7 +61,7 @@ void RPCDoor::handleConnect(RPCServer::pointer new_connection,
|
|||||||
{
|
{
|
||||||
if (error == boost::system::errc::too_many_files_open)
|
if (error == boost::system::errc::too_many_files_open)
|
||||||
delay = true;
|
delay = true;
|
||||||
cLog(lsINFO) << "RPCDoor::handleConnect Error: " << error;
|
WriteLog (lsINFO, RPCDoor) << "RPCDoor::handleConnect Error: " << error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delay)
|
if (delay)
|
||||||
|
|||||||
@@ -6,7 +6,10 @@
|
|||||||
|
|
||||||
#include "../json/writer.h"
|
#include "../json/writer.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
// For logging
|
||||||
|
struct RPCErr
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
Json::Value rpcError(int iError, Json::Value jvResult)
|
Json::Value rpcError(int iError, Json::Value jvResult)
|
||||||
{
|
{
|
||||||
@@ -88,7 +91,7 @@ Json::Value rpcError(int iError, Json::Value jvResult)
|
|||||||
|
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "rpcError: "
|
WriteLog (lsDEBUG, RPCErr) << "rpcError: "
|
||||||
<< errorInfoA[i].pToken << ": " << errorInfoA[i].pMessage << std::endl;
|
<< errorInfoA[i].pToken << ": " << errorInfoA[i].pMessage << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,6 @@
|
|||||||
#include "PFRequest.h"
|
#include "PFRequest.h"
|
||||||
#include "ProofOfWork.h"
|
#include "ProofOfWork.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
|
||||||
|
|
||||||
static const int rpcCOST_DEFAULT = 10;
|
static const int rpcCOST_DEFAULT = 10;
|
||||||
static const int rpcCOST_EXCEPTION = 20;
|
static const int rpcCOST_EXCEPTION = 20;
|
||||||
static const int rpcCOST_EXPENSIVE = 50;
|
static const int rpcCOST_EXPENSIVE = 50;
|
||||||
@@ -81,7 +79,7 @@ Json::Value RPCHandler::transactionSign(Json::Value jvRequest, bool bSubmit)
|
|||||||
RippleAddress naSeed;
|
RippleAddress naSeed;
|
||||||
RippleAddress raSrcAddressID;
|
RippleAddress raSrcAddressID;
|
||||||
|
|
||||||
cLog(lsDEBUG) << boost::str(boost::format("transactionSign: %s") % jvRequest);
|
WriteLog (lsDEBUG, RPCHandler) << boost::str(boost::format("transactionSign: %s") % jvRequest);
|
||||||
|
|
||||||
if (!jvRequest.isMember("secret") || !jvRequest.isMember("tx_json"))
|
if (!jvRequest.isMember("secret") || !jvRequest.isMember("tx_json"))
|
||||||
{
|
{
|
||||||
@@ -114,7 +112,7 @@ Json::Value RPCHandler::transactionSign(Json::Value jvRequest, bool bSubmit)
|
|||||||
AccountState::pointer asSrc = mNetOps->getAccountState(mNetOps->getCurrentLedger(), raSrcAddressID);
|
AccountState::pointer asSrc = mNetOps->getAccountState(mNetOps->getCurrentLedger(), raSrcAddressID);
|
||||||
if (!asSrc)
|
if (!asSrc)
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << boost::str(boost::format("transactionSign: Failed to find source account in current ledger: %s")
|
WriteLog (lsDEBUG, RPCHandler) << boost::str(boost::format("transactionSign: Failed to find source account in current ledger: %s")
|
||||||
% raSrcAddressID.humanAccountID());
|
% raSrcAddressID.humanAccountID());
|
||||||
|
|
||||||
return rpcError(rpcSRC_ACT_NOT_FOUND);
|
return rpcError(rpcSRC_ACT_NOT_FOUND);
|
||||||
@@ -187,13 +185,13 @@ Json::Value RPCHandler::transactionSign(Json::Value jvRequest, bool bSubmit)
|
|||||||
|
|
||||||
if (!bValid || !pf.findPaths(theConfig.PATH_SEARCH_SIZE, 3, spsPaths))
|
if (!bValid || !pf.findPaths(theConfig.PATH_SEARCH_SIZE, 3, spsPaths))
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "transactionSign: build_path: No paths found.";
|
WriteLog (lsDEBUG, RPCHandler) << "transactionSign: build_path: No paths found.";
|
||||||
|
|
||||||
return rpcError(rpcNO_PATH);
|
return rpcError(rpcNO_PATH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "transactionSign: build_path: " << spsPaths.getJson(0);
|
WriteLog (lsDEBUG, RPCHandler) << "transactionSign: build_path: " << spsPaths.getJson(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!spsPaths.isEmpty())
|
if (!spsPaths.isEmpty())
|
||||||
@@ -243,7 +241,7 @@ Json::Value RPCHandler::transactionSign(Json::Value jvRequest, bool bSubmit)
|
|||||||
{
|
{
|
||||||
naMasterAccountPublic.setAccountPublic(naMasterGenerator, iIndex);
|
naMasterAccountPublic.setAccountPublic(naMasterGenerator, iIndex);
|
||||||
|
|
||||||
cLog(lsWARNING) << "authorize: " << iIndex << " : " << naMasterAccountPublic.humanAccountID() << " : " << raSrcAddressID.humanAccountID();
|
WriteLog (lsWARNING, RPCHandler) << "authorize: " << iIndex << " : " << naMasterAccountPublic.humanAccountID() << " : " << raSrcAddressID.humanAccountID();
|
||||||
|
|
||||||
bFound = raSrcAddressID.getAccountID() == naMasterAccountPublic.getAccountID();
|
bFound = raSrcAddressID.getAccountID() == naMasterAccountPublic.getAccountID();
|
||||||
if (!bFound)
|
if (!bFound)
|
||||||
@@ -458,7 +456,7 @@ Json::Value RPCHandler::authorize(Ledger::ref lrLedger,
|
|||||||
{
|
{
|
||||||
naMasterAccountPublic.setAccountPublic(naMasterGenerator, iIndex);
|
naMasterAccountPublic.setAccountPublic(naMasterGenerator, iIndex);
|
||||||
|
|
||||||
cLog(lsDEBUG) << "authorize: " << iIndex << " : " << naMasterAccountPublic.humanAccountID() << " : " << naSrcAccountID.humanAccountID();
|
WriteLog (lsDEBUG, RPCHandler) << "authorize: " << iIndex << " : " << naMasterAccountPublic.humanAccountID() << " : " << naSrcAccountID.humanAccountID();
|
||||||
|
|
||||||
bFound = naSrcAccountID.getAccountID() == naMasterAccountPublic.getAccountID();
|
bFound = naSrcAccountID.getAccountID() == naMasterAccountPublic.getAccountID();
|
||||||
if (!bFound)
|
if (!bFound)
|
||||||
@@ -489,7 +487,7 @@ Json::Value RPCHandler::authorize(Ledger::ref lrLedger,
|
|||||||
|
|
||||||
if (saSrcBalance < saFee)
|
if (saSrcBalance < saFee)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "authorize: Insufficient funds for fees: fee=" << saFee.getText() << " balance=" << saSrcBalance.getText();
|
WriteLog (lsINFO, RPCHandler) << "authorize: Insufficient funds for fees: fee=" << saFee.getText() << " balance=" << saSrcBalance.getText();
|
||||||
|
|
||||||
return rpcError(rpcINSUF_FUNDS);
|
return rpcError(rpcINSUF_FUNDS);
|
||||||
}
|
}
|
||||||
@@ -1207,7 +1205,7 @@ Json::Value RPCHandler::doBookOffers(Json::Value jvRequest, int& cost, ScopedLoc
|
|||||||
if (!jvTakerPays.isMember("currency")
|
if (!jvTakerPays.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -1219,7 +1217,7 @@ Json::Value RPCHandler::doBookOffers(Json::Value jvRequest, int& cost, ScopedLoc
|
|||||||
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays issuer.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_ISR_MALFORMED);
|
return rpcError(rpcSRC_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -1232,7 +1230,7 @@ Json::Value RPCHandler::doBookOffers(Json::Value jvRequest, int& cost, ScopedLoc
|
|||||||
if (!jvTakerGets.isMember("currency")
|
if (!jvTakerGets.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -1244,14 +1242,14 @@ Json::Value RPCHandler::doBookOffers(Json::Value jvRequest, int& cost, ScopedLoc
|
|||||||
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_gets issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_gets issuer.";
|
||||||
|
|
||||||
return rpcError(rpcDST_ISR_MALFORMED);
|
return rpcError(rpcDST_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
||||||
&& uTakerPaysIssuerID == uTakerGetsIssuerID) {
|
&& uTakerPaysIssuerID == uTakerGetsIssuerID) {
|
||||||
cLog(lsINFO) << "taker_gets same as taker_pays.";
|
WriteLog (lsINFO, RPCHandler) << "taker_gets same as taker_pays.";
|
||||||
|
|
||||||
return rpcError(rpcBAD_MARKET);
|
return rpcError(rpcBAD_MARKET);
|
||||||
}
|
}
|
||||||
@@ -1355,7 +1353,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
int jc = theApp->getJobQueue().getJobCountGE(jtCLIENT);
|
int jc = theApp->getJobQueue().getJobCountGE(jtCLIENT);
|
||||||
if (jc > 200)
|
if (jc > 200)
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "Too busy for RPF: " << jc;
|
WriteLog (lsDEBUG, RPCHandler) << "Too busy for RPF: " << jc;
|
||||||
return rpcError(rpcTOO_BUSY);
|
return rpcError(rpcTOO_BUSY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1392,7 +1390,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
|| !saDstAmount.bSetJson(jvRequest["destination_amount"])
|
|| !saDstAmount.bSetJson(jvRequest["destination_amount"])
|
||||||
|| (!!saDstAmount.getCurrency() && (!saDstAmount.getIssuer() || ACCOUNT_ONE == saDstAmount.getIssuer())))
|
|| (!!saDstAmount.getCurrency() && (!saDstAmount.getIssuer() || ACCOUNT_ONE == saDstAmount.getIssuer())))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad destination_amount.";
|
WriteLog (lsINFO, RPCHandler) << "Bad destination_amount.";
|
||||||
jvResult = rpcError(rpcINVALID_PARAMS);
|
jvResult = rpcError(rpcINVALID_PARAMS);
|
||||||
}
|
}
|
||||||
else if (
|
else if (
|
||||||
@@ -1402,7 +1400,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
|| !jvRequest["source_currencies"].size()) // Don't allow empty currencies.
|
|| !jvRequest["source_currencies"].size()) // Don't allow empty currencies.
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad source_currencies.";
|
WriteLog (lsINFO, RPCHandler) << "Bad source_currencies.";
|
||||||
jvResult = rpcError(rpcINVALID_PARAMS);
|
jvResult = rpcError(rpcINVALID_PARAMS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1460,7 +1458,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
if (!jvSource.isMember("currency")
|
if (!jvSource.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uSrcCurrencyID, jvSource["currency"].asString()))
|
|| !STAmount::currencyFromString(uSrcCurrencyID, jvSource["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -1474,7 +1472,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
(uSrcIssuerID.isZero() != uSrcCurrencyID.isZero()) ||
|
(uSrcIssuerID.isZero() != uSrcCurrencyID.isZero()) ||
|
||||||
(ACCOUNT_ONE == uSrcIssuerID)))
|
(ACCOUNT_ONE == uSrcIssuerID)))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad issuer.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_ISR_MALFORMED);
|
return rpcError(rpcSRC_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -1485,7 +1483,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
|
|
||||||
if (!bValid || !pf.findPaths(theConfig.PATH_SEARCH_SIZE, 3, spsComputed))
|
if (!bValid || !pf.findPaths(theConfig.PATH_SEARCH_SIZE, 3, spsComputed))
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "ripple_path_find: No paths found.";
|
WriteLog (lsWARNING, RPCHandler) << "ripple_path_find: No paths found.";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1521,10 +1519,10 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
false, // --> Allow direct ripple to be added to path set. to path set.
|
false, // --> Allow direct ripple to be added to path set. to path set.
|
||||||
true); // --> Stand alone mode, no point in deleting unfundeds.
|
true); // --> Stand alone mode, no point in deleting unfundeds.
|
||||||
|
|
||||||
// cLog(lsDEBUG) << "ripple_path_find: PATHS IN: " << spsComputed.size() << " : " << spsComputed.getJson(0);
|
// WriteLog (lsDEBUG, RPCHandler) << "ripple_path_find: PATHS IN: " << spsComputed.size() << " : " << spsComputed.getJson(0);
|
||||||
// cLog(lsDEBUG) << "ripple_path_find: PATHS EXP: " << vpsExpanded.size();
|
// WriteLog (lsDEBUG, RPCHandler) << "ripple_path_find: PATHS EXP: " << vpsExpanded.size();
|
||||||
|
|
||||||
cLog(lsWARNING)
|
WriteLog (lsWARNING, RPCHandler)
|
||||||
<< boost::str(boost::format("ripple_path_find: saMaxAmount=%s saDstAmount=%s saMaxAmountAct=%s saDstAmountAct=%s")
|
<< boost::str(boost::format("ripple_path_find: saMaxAmount=%s saDstAmount=%s saMaxAmountAct=%s saDstAmountAct=%s")
|
||||||
% saMaxAmount
|
% saMaxAmount
|
||||||
% saDstAmount
|
% saDstAmount
|
||||||
@@ -1555,7 +1553,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
|
|
||||||
transResultInfo(terResult, strToken, strHuman);
|
transResultInfo(terResult, strToken, strHuman);
|
||||||
|
|
||||||
cLog(lsDEBUG)
|
WriteLog (lsDEBUG, RPCHandler)
|
||||||
<< boost::str(boost::format("ripple_path_find: %s %s %s")
|
<< boost::str(boost::format("ripple_path_find: %s %s %s")
|
||||||
% strToken
|
% strToken
|
||||||
% strHuman
|
% strHuman
|
||||||
@@ -1568,7 +1566,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost, Scope
|
|||||||
jvResult["alternatives"] = jvArray;
|
jvResult["alternatives"] = jvArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
cLog(lsDEBUG)
|
WriteLog (lsDEBUG, RPCHandler)
|
||||||
<< boost::str(boost::format("ripple_path_find< %s")
|
<< boost::str(boost::format("ripple_path_find< %s")
|
||||||
% jvResult);
|
% jvResult);
|
||||||
|
|
||||||
@@ -2025,7 +2023,7 @@ Json::Value RPCHandler::doValidationCreate(Json::Value jvRequest, int& cost, Sco
|
|||||||
|
|
||||||
if (!jvRequest.isMember("secret"))
|
if (!jvRequest.isMember("secret"))
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "Creating random validation seed.";
|
WriteLog (lsDEBUG, RPCHandler) << "Creating random validation seed.";
|
||||||
|
|
||||||
raSeed.setSeedRandom(); // Get a random seed.
|
raSeed.setSeedRandom(); // Get a random seed.
|
||||||
}
|
}
|
||||||
@@ -2815,7 +2813,7 @@ Json::Value RPCHandler::doLedgerEntry(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
|| jvRippleState["accounts"][0u].asString() == jvRippleState["accounts"][1u].asString()
|
|| jvRippleState["accounts"][0u].asString() == jvRippleState["accounts"][1u].asString()
|
||||||
) {
|
) {
|
||||||
|
|
||||||
cLog(lsINFO)
|
WriteLog (lsINFO, RPCHandler)
|
||||||
<< boost::str(boost::format("ledger_entry: ripple_state: accounts: %d currency: %d array: %d size: %d equal: %d")
|
<< boost::str(boost::format("ledger_entry: ripple_state: accounts: %d currency: %d array: %d size: %d equal: %d")
|
||||||
% jvRippleState.isMember("accounts")
|
% jvRippleState.isMember("accounts")
|
||||||
% jvRippleState.isMember("currency")
|
% jvRippleState.isMember("currency")
|
||||||
@@ -2930,7 +2928,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
if (!mInfoSub && !jvRequest.isMember("url"))
|
if (!mInfoSub && !jvRequest.isMember("url"))
|
||||||
{
|
{
|
||||||
// Must be a JSON-RPC call.
|
// Must be a JSON-RPC call.
|
||||||
cLog(lsINFO) << boost::str(boost::format("doSubscribe: RPC subscribe requires a url"));
|
WriteLog (lsINFO, RPCHandler) << boost::str(boost::format("doSubscribe: RPC subscribe requires a url"));
|
||||||
|
|
||||||
return rpcError(rpcINVALID_PARAMS);
|
return rpcError(rpcINVALID_PARAMS);
|
||||||
}
|
}
|
||||||
@@ -2955,14 +2953,14 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
ispSub = mNetOps->findRpcSub(strUrl);
|
ispSub = mNetOps->findRpcSub(strUrl);
|
||||||
if (!ispSub)
|
if (!ispSub)
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << boost::str(boost::format("doSubscribe: building: %s") % strUrl);
|
WriteLog (lsDEBUG, RPCHandler) << boost::str(boost::format("doSubscribe: building: %s") % strUrl);
|
||||||
|
|
||||||
RPCSub::pointer rspSub = boost::make_shared<RPCSub>(strUrl, strUsername, strPassword);
|
RPCSub::pointer rspSub = boost::make_shared<RPCSub>(strUrl, strUsername, strPassword);
|
||||||
ispSub = mNetOps->addRpcSub(strUrl, boost::dynamic_pointer_cast<InfoSub>(rspSub));
|
ispSub = mNetOps->addRpcSub(strUrl, boost::dynamic_pointer_cast<InfoSub>(rspSub));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << boost::str(boost::format("doSubscribe: reusing: %s") % strUrl);
|
WriteLog (lsTRACE, RPCHandler) << boost::str(boost::format("doSubscribe: reusing: %s") % strUrl);
|
||||||
|
|
||||||
if (jvRequest.isMember("username"))
|
if (jvRequest.isMember("username"))
|
||||||
dynamic_cast<RPCSub*>(&*ispSub)->setUsername(strUsername);
|
dynamic_cast<RPCSub*>(&*ispSub)->setUsername(strUsername);
|
||||||
@@ -2982,7 +2980,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
}
|
}
|
||||||
else if (!jvRequest["streams"].isArray())
|
else if (!jvRequest["streams"].isArray())
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << boost::str(boost::format("doSubscribe: streams requires an array."));
|
WriteLog (lsINFO, RPCHandler) << boost::str(boost::format("doSubscribe: streams requires an array."));
|
||||||
|
|
||||||
return rpcError(rpcINVALID_PARAMS);
|
return rpcError(rpcINVALID_PARAMS);
|
||||||
}
|
}
|
||||||
@@ -3068,7 +3066,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
{
|
{
|
||||||
mNetOps->subAccount(ispSub, usnaAccoundIds, uLedgerIndex, false);
|
mNetOps->subAccount(ispSub, usnaAccoundIds, uLedgerIndex, false);
|
||||||
|
|
||||||
cLog(lsDEBUG) << boost::str(boost::format("doSubscribe: accounts: %d") % usnaAccoundIds.size());
|
WriteLog (lsDEBUG, RPCHandler) << boost::str(boost::format("doSubscribe: accounts: %d") % usnaAccoundIds.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3109,7 +3107,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
if (!jvTakerPays.isMember("currency")
|
if (!jvTakerPays.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3121,7 +3119,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays issuer.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_ISR_MALFORMED);
|
return rpcError(rpcSRC_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3130,7 +3128,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
if (!jvTakerGets.isMember("currency")
|
if (!jvTakerGets.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3142,7 +3140,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_gets issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_gets issuer.";
|
||||||
|
|
||||||
return rpcError(rpcDST_ISR_MALFORMED);
|
return rpcError(rpcDST_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3150,7 +3148,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
||||||
&& uTakerPaysIssuerID == uTakerGetsIssuerID)
|
&& uTakerPaysIssuerID == uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "taker_gets same as taker_pays.";
|
WriteLog (lsINFO, RPCHandler) << "taker_gets same as taker_pays.";
|
||||||
|
|
||||||
return rpcError(rpcBAD_MARKET);
|
return rpcError(rpcBAD_MARKET);
|
||||||
}
|
}
|
||||||
@@ -3168,7 +3166,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost, ScopedLock
|
|||||||
|
|
||||||
if (!Ledger::isValidBook(uTakerPaysCurrencyID, uTakerPaysIssuerID, uTakerGetsCurrencyID, uTakerGetsIssuerID))
|
if (!Ledger::isValidBook(uTakerPaysCurrencyID, uTakerPaysIssuerID, uTakerGetsCurrencyID, uTakerGetsIssuerID))
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "Bad market: " <<
|
WriteLog (lsWARNING, RPCHandler) << "Bad market: " <<
|
||||||
uTakerPaysCurrencyID << ":" << uTakerPaysIssuerID << " -> " <<
|
uTakerPaysCurrencyID << ":" << uTakerPaysIssuerID << " -> " <<
|
||||||
uTakerGetsCurrencyID << ":" << uTakerGetsIssuerID;
|
uTakerGetsCurrencyID << ":" << uTakerGetsIssuerID;
|
||||||
return rpcError(rpcBAD_MARKET);
|
return rpcError(rpcBAD_MARKET);
|
||||||
@@ -3335,7 +3333,7 @@ Json::Value RPCHandler::doUnsubscribe(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
if (!jvTakerPays.isMember("currency")
|
if (!jvTakerPays.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerPaysCurrencyID, jvTakerPays["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3347,7 +3345,7 @@ Json::Value RPCHandler::doUnsubscribe(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
|| (!uTakerPaysCurrencyID != !uTakerPaysIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
|| ACCOUNT_ONE == uTakerPaysIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays issuer.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_ISR_MALFORMED);
|
return rpcError(rpcSRC_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3356,7 +3354,7 @@ Json::Value RPCHandler::doUnsubscribe(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
if (!jvTakerGets.isMember("currency")
|
if (!jvTakerGets.isMember("currency")
|
||||||
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
|| !STAmount::currencyFromString(uTakerGetsCurrencyID, jvTakerGets["currency"].asString()))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_pays currency.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_pays currency.";
|
||||||
|
|
||||||
return rpcError(rpcSRC_CUR_MALFORMED);
|
return rpcError(rpcSRC_CUR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3368,7 +3366,7 @@ Json::Value RPCHandler::doUnsubscribe(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
|| (!uTakerGetsCurrencyID != !uTakerGetsIssuerID)
|
||||||
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
|| ACCOUNT_ONE == uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Bad taker_gets issuer.";
|
WriteLog (lsINFO, RPCHandler) << "Bad taker_gets issuer.";
|
||||||
|
|
||||||
return rpcError(rpcDST_ISR_MALFORMED);
|
return rpcError(rpcDST_ISR_MALFORMED);
|
||||||
}
|
}
|
||||||
@@ -3376,7 +3374,7 @@ Json::Value RPCHandler::doUnsubscribe(Json::Value jvRequest, int& cost, ScopedLo
|
|||||||
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
if (uTakerPaysCurrencyID == uTakerGetsCurrencyID
|
||||||
&& uTakerPaysIssuerID == uTakerGetsIssuerID)
|
&& uTakerPaysIssuerID == uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "taker_gets same as taker_pays.";
|
WriteLog (lsINFO, RPCHandler) << "taker_gets same as taker_pays.";
|
||||||
|
|
||||||
return rpcError(rpcBAD_MARKET);
|
return rpcError(rpcBAD_MARKET);
|
||||||
}
|
}
|
||||||
@@ -3397,7 +3395,7 @@ Json::Value RPCHandler::doRpcCommand(const std::string& strMethod, Json::Value&
|
|||||||
{
|
{
|
||||||
if (cost == 0)
|
if (cost == 0)
|
||||||
cost = rpcCOST_DEFAULT;
|
cost = rpcCOST_DEFAULT;
|
||||||
cLog(lsTRACE) << "doRpcCommand:" << strMethod << ":" << jvParams;
|
WriteLog (lsTRACE, RPCHandler) << "doRpcCommand:" << strMethod << ":" << jvParams;
|
||||||
|
|
||||||
if (!jvParams.isArray() || jvParams.size() > 1)
|
if (!jvParams.isArray() || jvParams.size() > 1)
|
||||||
return rpcError(rpcINVALID_PARAMS);
|
return rpcError(rpcINVALID_PARAMS);
|
||||||
@@ -3441,7 +3439,7 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole, int &
|
|||||||
int jc = theApp->getJobQueue().getJobCountGE(jtCLIENT);
|
int jc = theApp->getJobQueue().getJobCountGE(jtCLIENT);
|
||||||
if (jc > 500)
|
if (jc > 500)
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "Too busy for command: " << jc;
|
WriteLog (lsDEBUG, RPCHandler) << "Too busy for command: " << jc;
|
||||||
return rpcError(rpcTOO_BUSY);
|
return rpcError(rpcTOO_BUSY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3451,8 +3449,8 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole, int &
|
|||||||
|
|
||||||
std::string strCommand = jvRequest["command"].asString();
|
std::string strCommand = jvRequest["command"].asString();
|
||||||
|
|
||||||
cLog(lsTRACE) << "COMMAND:" << strCommand;
|
WriteLog (lsTRACE, RPCHandler) << "COMMAND:" << strCommand;
|
||||||
cLog(lsTRACE) << "REQUEST:" << jvRequest;
|
WriteLog (lsTRACE, RPCHandler) << "REQUEST:" << jvRequest;
|
||||||
|
|
||||||
mRole = iRole;
|
mRole = iRole;
|
||||||
|
|
||||||
@@ -3547,7 +3545,7 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole, int &
|
|||||||
|
|
||||||
if ((commandsA[i].iOptions & optNetwork) && (mNetOps->getOperatingMode() < NetworkOPs::omSYNCING))
|
if ((commandsA[i].iOptions & optNetwork) && (mNetOps->getOperatingMode() < NetworkOPs::omSYNCING))
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Insufficient network mode for RPC: " << mNetOps->strOperatingMode();
|
WriteLog (lsINFO, RPCHandler) << "Insufficient network mode for RPC: " << mNetOps->strOperatingMode();
|
||||||
|
|
||||||
return rpcError(rpcNO_NETWORK);
|
return rpcError(rpcNO_NETWORK);
|
||||||
}
|
}
|
||||||
@@ -3584,7 +3582,7 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole, int &
|
|||||||
}
|
}
|
||||||
catch (std::exception& e)
|
catch (std::exception& e)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << "Caught throw: " << e.what();
|
WriteLog (lsINFO, RPCHandler) << "Caught throw: " << e.what();
|
||||||
if (cost == rpcCOST_DEFAULT)
|
if (cost == rpcCOST_DEFAULT)
|
||||||
cost = rpcCOST_EXCEPTION;
|
cost = rpcCOST_EXCEPTION;
|
||||||
|
|
||||||
@@ -3608,9 +3606,9 @@ Json::Value RPCInternalHandler::runHandler(const std::string& name, const Json::
|
|||||||
{
|
{
|
||||||
if (name == h->mName)
|
if (name == h->mName)
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "Internal command " << name << ": " << params;
|
WriteLog (lsWARNING, RPCHandler) << "Internal command " << name << ": " << params;
|
||||||
Json::Value ret = h->mHandler(params);
|
Json::Value ret = h->mHandler(params);
|
||||||
cLog(lsWARNING) << "Internal command returns: " << ret;
|
WriteLog (lsWARNING, RPCHandler) << "Internal command returns: " << ret;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
h = h->mNextHandler;
|
h = h->mNextHandler;
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
#include "../json/reader.h"
|
#include "../json/reader.h"
|
||||||
#include "../json/writer.h"
|
#include "../json/writer.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
|
||||||
|
|
||||||
#ifndef RPC_MAXIMUM_QUERY
|
#ifndef RPC_MAXIMUM_QUERY
|
||||||
#define RPC_MAXIMUM_QUERY (1024*1024)
|
#define RPC_MAXIMUM_QUERY (1024*1024)
|
||||||
#endif
|
#endif
|
||||||
@@ -66,7 +64,7 @@ void RPCServer::handle_read_line(const boost::system::error_code& e)
|
|||||||
|
|
||||||
if (action == haDO_REQUEST)
|
if (action == haDO_REQUEST)
|
||||||
{ // request with no body
|
{ // request with no body
|
||||||
cLog(lsWARNING) << "RPC HTTP request with no body";
|
WriteLog (lsWARNING, RPCServer) << "RPC HTTP request with no body";
|
||||||
boost::system::error_code ignore_ec;
|
boost::system::error_code ignore_ec;
|
||||||
mSocket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignore_ec);
|
mSocket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignore_ec);
|
||||||
return;
|
return;
|
||||||
@@ -82,7 +80,7 @@ void RPCServer::handle_read_line(const boost::system::error_code& e)
|
|||||||
int rLen = mHTTPRequest.getDataSize();
|
int rLen = mHTTPRequest.getDataSize();
|
||||||
if ((rLen < 0) || (rLen > RPC_MAXIMUM_QUERY))
|
if ((rLen < 0) || (rLen > RPC_MAXIMUM_QUERY))
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "Illegal RPC request length " << rLen;
|
WriteLog (lsWARNING, RPCServer) << "Illegal RPC request length " << rLen;
|
||||||
boost::system::error_code ignore_ec;
|
boost::system::error_code ignore_ec;
|
||||||
mSocket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignore_ec);
|
mSocket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignore_ec);
|
||||||
return;
|
return;
|
||||||
@@ -95,7 +93,7 @@ void RPCServer::handle_read_line(const boost::system::error_code& e)
|
|||||||
mQueryVec.resize(rLen - alreadyHave);
|
mQueryVec.resize(rLen - alreadyHave);
|
||||||
boost::asio::async_read(mSocket, boost::asio::buffer(mQueryVec),
|
boost::asio::async_read(mSocket, boost::asio::buffer(mQueryVec),
|
||||||
boost::bind(&RPCServer::handle_read_req, shared_from_this(), boost::asio::placeholders::error));
|
boost::bind(&RPCServer::handle_read_req, shared_from_this(), boost::asio::placeholders::error));
|
||||||
cLog(lsTRACE) << "Waiting for completed request: " << rLen;
|
WriteLog (lsTRACE, RPCServer) << "Waiting for completed request: " << rLen;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // we have the whole thing
|
{ // we have the whole thing
|
||||||
@@ -112,7 +110,7 @@ void RPCServer::handle_read_line(const boost::system::error_code& e)
|
|||||||
|
|
||||||
std::string RPCServer::handleRequest(const std::string& requestStr)
|
std::string RPCServer::handleRequest(const std::string& requestStr)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "handleRequest " << requestStr;
|
WriteLog (lsTRACE, RPCServer) << "handleRequest " << requestStr;
|
||||||
|
|
||||||
Json::Value id;
|
Json::Value id;
|
||||||
|
|
||||||
@@ -163,10 +161,10 @@ std::string RPCServer::handleRequest(const std::string& requestStr)
|
|||||||
|
|
||||||
RPCHandler mRPCHandler(mNetOps);
|
RPCHandler mRPCHandler(mNetOps);
|
||||||
|
|
||||||
cLog(lsTRACE) << valParams;
|
WriteLog (lsTRACE, RPCServer) << valParams;
|
||||||
int cost = 10;
|
int cost = 10;
|
||||||
Json::Value result = mRPCHandler.doRpcCommand(strMethod, valParams, mRole, cost);
|
Json::Value result = mRPCHandler.doRpcCommand(strMethod, valParams, mRole, cost);
|
||||||
cLog(lsTRACE) << result;
|
WriteLog (lsTRACE, RPCServer) << result;
|
||||||
|
|
||||||
std::string strReply = JSONRPCReply(result, Json::Value(), id);
|
std::string strReply = JSONRPCReply(result, Json::Value(), id);
|
||||||
return HTTPReply(200, strReply);
|
return HTTPReply(200, strReply);
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
#include "CallRPC.h"
|
#include "CallRPC.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
|
||||||
|
|
||||||
RPCSub::RPCSub(const std::string& strUrl, const std::string& strUsername, const std::string& strPassword)
|
RPCSub::RPCSub(const std::string& strUrl, const std::string& strUsername, const std::string& strPassword)
|
||||||
: mUrl(strUrl), mSSL(false), mUsername(strUsername), mPassword(strPassword), mSending(false)
|
: mUrl(strUrl), mSSL(false), mUsername(strUsername), mPassword(strPassword), mSending(false)
|
||||||
{
|
{
|
||||||
@@ -30,7 +28,7 @@ RPCSub::RPCSub(const std::string& strUrl, const std::string& strUsername, const
|
|||||||
if (mPort < 0)
|
if (mPort < 0)
|
||||||
mPort = mSSL ? 443 : 80;
|
mPort = mSSL ? 443 : 80;
|
||||||
|
|
||||||
cLog(lsINFO) << boost::str(boost::format("callRPC sub: ip='%s' port=%d ssl=%d path='%s'")
|
WriteLog (lsINFO, RPCSub) << boost::str(boost::format("callRPC sub: ip='%s' port=%d ssl=%d path='%s'")
|
||||||
% mIp
|
% mIp
|
||||||
% mPort
|
% mPort
|
||||||
% mSSL
|
% mSSL
|
||||||
@@ -73,7 +71,7 @@ void RPCSub::sendThread()
|
|||||||
// XXX Might not need this in a try.
|
// XXX Might not need this in a try.
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << boost::str(boost::format("callRPC calling: %s") % mIp);
|
WriteLog (lsINFO, RPCSub) << boost::str(boost::format("callRPC calling: %s") % mIp);
|
||||||
|
|
||||||
callRPC(
|
callRPC(
|
||||||
theApp->getIOService(),
|
theApp->getIOService(),
|
||||||
@@ -85,7 +83,7 @@ void RPCSub::sendThread()
|
|||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
cLog(lsINFO) << boost::str(boost::format("callRPC exception: %s") % e.what());
|
WriteLog (lsINFO, RPCSub) << boost::str(boost::format("callRPC exception: %s") % e.what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (bSend);
|
} while (bSend);
|
||||||
@@ -98,11 +96,11 @@ void RPCSub::send(const Json::Value& jvObj, bool broadcast)
|
|||||||
if (RPC_EVENT_QUEUE_MAX == mDeque.size())
|
if (RPC_EVENT_QUEUE_MAX == mDeque.size())
|
||||||
{
|
{
|
||||||
// Drop the previous event.
|
// Drop the previous event.
|
||||||
cLog(lsWARNING) << boost::str(boost::format("callRPC drop"));
|
WriteLog (lsWARNING, RPCSub) << boost::str(boost::format("callRPC drop"));
|
||||||
mDeque.pop_back();
|
mDeque.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
cLog(broadcast ? lsDEBUG : lsINFO) << boost::str(boost::format("callRPC push: %s") % jvObj);
|
WriteLog (broadcast ? lsDEBUG : lsINFO, RPCSub) << boost::str(boost::format("callRPC push: %s") % jvObj);
|
||||||
|
|
||||||
mDeque.push_back(std::make_pair(mSeq++, jvObj));
|
mDeque.push_back(std::make_pair(mSeq++, jvObj));
|
||||||
|
|
||||||
@@ -111,7 +109,7 @@ void RPCSub::send(const Json::Value& jvObj, bool broadcast)
|
|||||||
// Start a sending thread.
|
// Start a sending thread.
|
||||||
mSending = true;
|
mSending = true;
|
||||||
|
|
||||||
cLog(lsINFO) << boost::str(boost::format("callRPC start"));
|
WriteLog (lsINFO, RPCSub) << boost::str(boost::format("callRPC start"));
|
||||||
boost::thread(boost::bind(&RPCSub::sendThread, this)).detach();
|
boost::thread(boost::bind(&RPCSub::sendThread, this)).detach();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,10 @@
|
|||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Version.h"
|
#include "Version.h"
|
||||||
|
|
||||||
SETUP_LOG();
|
// Used for logging
|
||||||
|
struct RPC
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
using namespace boost::asio;
|
using namespace boost::asio;
|
||||||
@@ -77,7 +80,7 @@ std::string rfc1123Time()
|
|||||||
|
|
||||||
std::string HTTPReply(int nStatus, const std::string& strMsg)
|
std::string HTTPReply(int nStatus, const std::string& strMsg)
|
||||||
{
|
{
|
||||||
cLog(lsTRACE) << "HTTP Reply " << nStatus << " " << strMsg;
|
WriteLog (lsTRACE, RPC) << "HTTP Reply " << nStatus << " " << strMsg;
|
||||||
|
|
||||||
if (nStatus == 401)
|
if (nStatus == 401)
|
||||||
return strprintf("HTTP/1.0 401 Authorization Required\r\n"
|
return strprintf("HTTP/1.0 401 Authorization Required\r\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user