From c4ef86968ec274f83c0e637148a973f5d6401b92 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 27 May 2013 12:16:41 -0700 Subject: [PATCH] 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))); }