From de056f2625205db5c8a6b206be0f8a325c30c1d9 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 26 May 2013 16:34:56 -0700 Subject: [PATCH 1/4] Restore change. --- src/cpp/ripple/RPCHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index a350ae65c7..0d2d492799 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -3486,7 +3486,7 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole, int & { "path_find", &RPCHandler::doPathFind, false, optCurrent }, { "ping", &RPCHandler::doPing, false, optNone }, // { "profile", &RPCHandler::doProfile, false, optCurrent }, - { "proof_create", &RPCHandler::doProofCreate, false, optNone }, + { "proof_create", &RPCHandler::doProofCreate, true, optNone }, { "proof_solve", &RPCHandler::doProofSolve, true, optNone }, { "proof_verify", &RPCHandler::doProofVerify, true, optNone }, { "random", &RPCHandler::doRandom, false, optNone }, From 30a8e5f4732b0c466e1bae07be3ec803aa3d1662 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 26 May 2013 16:37:41 -0700 Subject: [PATCH 2/4] Make PreviousTxnID optional in all transctions for secure chaining. --- src/cpp/ripple/TransactionFormats.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cpp/ripple/TransactionFormats.cpp b/src/cpp/ripple/TransactionFormats.cpp index ef3b9c0c3a..ea92335fb6 100644 --- a/src/cpp/ripple/TransactionFormats.cpp +++ b/src/cpp/ripple/TransactionFormats.cpp @@ -9,6 +9,7 @@ std::map TransactionFormat::byName; << SOElement(sfSourceTag, SOE_OPTIONAL) \ << SOElement(sfAccount, SOE_REQUIRED) \ << SOElement(sfSequence, SOE_REQUIRED) \ + << SOElement(sfPreviousTxnID, SOE_OPTIONAL) \ << SOElement(sfFee, SOE_REQUIRED) \ << SOElement(sfOperationLimit, SOE_OPTIONAL) \ << SOElement(sfSigningPubKey, SOE_REQUIRED) \ From c4ef86968ec274f83c0e637148a973f5d6401b92 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 27 May 2013 12:16:41 -0700 Subject: [PATCH 3/4] WebSocket ping frequency must be tunable to work around ELB issue. --- src/cpp/ripple/Config.cpp | 5 +++++ src/cpp/ripple/Config.h | 2 ++ src/cpp/ripple/WSConnection.h | 6 +----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/cpp/ripple/Config.cpp b/src/cpp/ripple/Config.cpp index 4db17eb2a0..3f88dc93bc 100644 --- a/src/cpp/ripple/Config.cpp +++ b/src/cpp/ripple/Config.cpp @@ -61,6 +61,7 @@ #define SECTION_WEBSOCKET_PUBLIC_IP "websocket_public_ip" #define SECTION_WEBSOCKET_PUBLIC_PORT "websocket_public_port" #define SECTION_WEBSOCKET_PUBLIC_SECURE "websocket_public_secure" +#define SECTION_WEBSOCKET_PING_FREQ "weboscket_ping_frequency" #define SECTION_WEBSOCKET_IP "websocket_ip" #define SECTION_WEBSOCKET_PORT "websocket_port" #define SECTION_WEBSOCKET_SECURE "websocket_secure" @@ -211,6 +212,7 @@ Config::Config() WEBSOCKET_PUBLIC_PORT = SYSTEM_WEBSOCKET_PUBLIC_PORT; WEBSOCKET_PUBLIC_SECURE = 1; WEBSOCKET_SECURE = 0; + WEBSOCKET_PING_FREQ = (5 * 60); NUMBER_CONNECTIONS = 30; // a new ledger every minute @@ -404,6 +406,9 @@ void Config::load() if (sectionSingleB(secConfig, SECTION_WEBSOCKET_PUBLIC_SECURE, strTemp)) WEBSOCKET_PUBLIC_SECURE = boost::lexical_cast(strTemp); + if (sectionSingleB(secConfig, SECTION_WEBSOCKET_PING_FREQ, strTemp)) + WEBSOCKET_PING_FREQ = boost::lexical_cast(strTemp); + sectionSingleB(secConfig, SECTION_WEBSOCKET_SSL_CERT, WEBSOCKET_SSL_CERT); sectionSingleB(secConfig, SECTION_WEBSOCKET_SSL_CHAIN, WEBSOCKET_SSL_CHAIN); sectionSingleB(secConfig, SECTION_WEBSOCKET_SSL_KEY, WEBSOCKET_SSL_KEY); diff --git a/src/cpp/ripple/Config.h b/src/cpp/ripple/Config.h index 65b02bcc01..c6f28d8ba2 100644 --- a/src/cpp/ripple/Config.h +++ b/src/cpp/ripple/Config.h @@ -135,6 +135,8 @@ public: int WEBSOCKET_PORT; int WEBSOCKET_SECURE; + int WEBSOCKET_PING_FREQ; + std::string WEBSOCKET_SSL_CERT; std::string WEBSOCKET_SSL_CHAIN; std::string WEBSOCKET_SSL_KEY; diff --git a/src/cpp/ripple/WSConnection.h b/src/cpp/ripple/WSConnection.h index baa8e3ab89..3c77f58e67 100644 --- a/src/cpp/ripple/WSConnection.h +++ b/src/cpp/ripple/WSConnection.h @@ -20,10 +20,6 @@ DEFINE_INSTANCE(WebSocketConnection); -#ifndef WEBSOCKET_PING_FREQUENCY -#define WEBSOCKET_PING_FREQUENCY (5*60) -#endif - template class WSServerHandler; // @@ -210,7 +206,7 @@ public: connection_ptr ptr = mConnection.lock(); if (ptr) { - mPingTimer.expires_from_now(boost::posix_time::seconds(WEBSOCKET_PING_FREQUENCY)); + mPingTimer.expires_from_now(boost::posix_time::seconds(theConfig.WEBSOCKET_PING_FREQ)); mPingTimer.async_wait(ptr->get_strand().wrap(boost::bind( &WSConnection::pingTimer, mConnection, mHandler, boost::asio::placeholders::error))); } From bb931f1d06f023671f7c34857b19c6f3cbf20baa Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 27 May 2013 12:19:02 -0700 Subject: [PATCH 4/4] Typo. --- src/cpp/ripple/Config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/ripple/Config.cpp b/src/cpp/ripple/Config.cpp index 3f88dc93bc..87672a5b3b 100644 --- a/src/cpp/ripple/Config.cpp +++ b/src/cpp/ripple/Config.cpp @@ -61,7 +61,7 @@ #define SECTION_WEBSOCKET_PUBLIC_IP "websocket_public_ip" #define SECTION_WEBSOCKET_PUBLIC_PORT "websocket_public_port" #define SECTION_WEBSOCKET_PUBLIC_SECURE "websocket_public_secure" -#define SECTION_WEBSOCKET_PING_FREQ "weboscket_ping_frequency" +#define SECTION_WEBSOCKET_PING_FREQ "websocket_ping_frequency" #define SECTION_WEBSOCKET_IP "websocket_ip" #define SECTION_WEBSOCKET_PORT "websocket_port" #define SECTION_WEBSOCKET_SECURE "websocket_secure"