{"push_id":557764160,"size":135,"distinct_size":1,"ref":"refs/heads/develop-ds2","head":"5f63f8baf9f799e095460276bb36b904e37b77d1","before":"d22b895fef3acecb52e0e556c5fcd890873564a5","commits":[{"sha":"30123eaa4a254db7f6439a0f29f78ea48968ddf5","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Add WrappedSink:\nThis class puts a configured string prefix in front of\neach line of Journal output.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/30123eaa4a254db7f6439a0f29f78ea48968ddf5"},{"sha":"d4fd5e4fcef9c0a351f6124049fa7e13b679cc72","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"HTTP Handshaking for Peers on Universal Port (RIPD-446):\n\nThis introduces a considerable change in the way that peers handshake. Instead\nof sending the TMHello protocol message, the peer making the connection (client\nrole) sends an HTTP Upgrade request along with some special headers. The peer\nacting in the server role sends an HTTP response completing the upgrade and\ntransition to RTXP (Ripple Transaction Protocol, a.k.a. peer protocol). If the\nserver has no available slots, then it sends a 503 Service Unavailable HTTP\nresponse with a JSON content-body containing IP addresses of other servers to\ntry. The information that was previously contained in the TMHello message is\nnow communicated in the HTTP request and HTTP response including the secure\ncookie to prevent man in the middle attacks. This information is documented\nin the overlay README.md file.\n\nTo prevent disruption on the network, the handshake feature is rolled out in\ntwo parts. This is part 1, where new servents acting in the client role will\nsend the old style TMHello handshake, and new servents acting in the server\nrole can automatically detect and accept both the old style TMHello handshake,\nor the HTTP request accordingly. This detection happens in the Server module,\nwhich supports the universal port. An experimental .cfg setting allows clients\nto instead send HTTP handshakes when establishing peer connections. When this\ncode has reached a significant fraction of the network, these clients will be\nable to establish a connection to the Ripple network using HTTP handshakes.\n\nThese changes clean up the handling of the socket for peers. It fixes a long\nstanding bug in the graceful close sequence, where remaining data such as the\nIP addresses of other servers to try, did not get sent. Redundant state\nvariables for the peer are removed and the treatment of completion handlers is\nstreamlined. The treatment of SSL short reads and secure shutdown is also fixed.\n\nLogging for the peers in the overlay module are divided into two partitions:\n\"Peer\" and \"Protocol\". The Peer partition records activity taking place on the\nsocket while the Protocol partition informs about RTXP specific actions such as\ntransaction relay, fetch packs, and consensus rounds. The severity on the log\npartitions may be adjusted independently to diagnose problems. Every log\nmessage for peers is prefixed with a small, unique integer id in brackets,\nto accurately associate log messages with peers.\n\nHTTP handshaking is the first step in implementing the Hub and Spoke feature,\nwhich transforms the network from a homogeneous network where all peers are\nthe same, into a structured network where peers with above average capabilities\nin their ability to process ledgers and transactions self-assemble to form a\nbackbone of high powered machines which in turn serve a much larger number of\n'leaves' with lower capacities with a goal to improve the number of\ntransactions that may be retired over time.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/d4fd5e4fcef9c0a351f6124049fa7e13b679cc72"},{"sha":"b44974677ea510ff13e3333e39cf958e0161e7a1","author":{"email":"1cc84daa5e6d2d231e5512b2b64df3210b02948f@GMail.com","name":"JoelKatz"},"message":"Cleanup some stray formatting left in logs","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/b44974677ea510ff13e3333e39cf958e0161e7a1"},{"sha":"02529a0fc2634f83edc08ab2ad1993626d059f93","author":{"email":"1cd669d9da15cc323339ad6f2a7c0587b8e41a63@ripple.com","name":"Mark Travis"},"message":"SHAMapStore Online Delete (RIPD-415):\n\nMakes rippled configurable to support deletion of all data in its key-value\nstore (nodestore) and ledger and transaction SQLite databases based on\nvalidated ledger sequence numbers. All records from a specified ledger\nand forward shall remain available in the key-value store and SQLite, and\nall data prior to that specific ledger may be deleted.\n\nAdditionally, the administrator may require that an RPC command be\nexecuted to enable deletion. This is to align data deletion with local\npolicy.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/02529a0fc2634f83edc08ab2ad1993626d059f93"},{"sha":"7d72dfe0bed8c0bf5d70a81c31da8c642a99fe76","author":{"email":"f3c66b3e5a697e33f3e74b459b4f0cf5cc5df732@gmail.com","name":"Nicholas Dudfield"},"message":"Updated freeze tests:\n* Always run freeze tests (and  enforcement tests)\n* book_offers filtering tests are broken","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/7d72dfe0bed8c0bf5d70a81c31da8c642a99fe76"},{"sha":"55637f75085448c5211b54cdeaaf0d63c13123e5","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Template abstract_clock on Clock:\nThe abstract_clock is now templated on a type meeting the requirements of\nthe Clock concept. It inherits the nested types of the Clock on which it\nis based. This resolves a problem with the original design which broke the\ntype-safety of time_point from different abstract clocks.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/55637f75085448c5211b54cdeaaf0d63c13123e5"},{"sha":"5180e71a0d71b950c6fd1e67f02ac6c1e17846bc","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Remove unused chrono::time_point stream conversions","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/5180e71a0d71b950c6fd1e67f02ac6c1e17846bc"},{"sha":"685fe5b0fbaf5f759806c305c16f8004ebca8057","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Don't call std::exit on clean exit","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/685fe5b0fbaf5f759806c305c16f8004ebca8057"},{"sha":"f9aa3e0da5d9e7e00214615738d3492636e82678","author":{"email":"625600233cb3bcab32268c17610882e0fdaed295@ripple.com","name":"Scott Schurr"},"message":"Add more unit tests to rpc/impl/TransactionSign (RIPD-480):\n\nBy adding a mock it is possible to test the transactionSign\nfunction without interacting with the ledger.  This is the\nsmallest change I could come up with that allows transactionSign\nto be unit tested.\n\nThe unit tests are white boxed.  Each test case is a result\nof examining the code and identifying behavior associated with\ndifferent JSON fields.  That means the tests are not based on\nrequirements, they are based on observed behavior.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/f9aa3e0da5d9e7e00214615738d3492636e82678"},{"sha":"62d400c3a9571d6bc31af313138a739955e8d618","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Move the call to cancel_timer to the right place","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/62d400c3a9571d6bc31af313138a739955e8d618"},{"sha":"252f271dc5588cc4a6efe862788dd0ce69e95d1e","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Fixes to beast::asio::streambuf:\n* Fix to_string conversion\n* Fix assert on debug invariant checks\n* Fix the treatment of the output position when the entire output is committed.\n* Add unit test","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/252f271dc5588cc4a6efe862788dd0ce69e95d1e"},{"sha":"cd8ec89cbbaa58a509ba9ccdbe08498997914a24","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Use injections from OverlayImpl in PeerImp","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/cd8ec89cbbaa58a509ba9ccdbe08498997914a24"},{"sha":"fb0d44d40316066f724521101fe32c789d1675da","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Use cluster state in Slot instead of PeerImp","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/fb0d44d40316066f724521101fe32c789d1675da"},{"sha":"aa7b0a31b058f26992f712cf3f549693e0d35638","author":{"email":"1bdbf174ae259a7f4e3ba59bc521b3b5e3908bc5@gmail.com","name":"Vinnie Falco"},"message":"Refactor protocol message parsing:\n\nThis replaces the stateful class parser with a stateless free function.\nThe protocol buffer message is parsed using a ZeroCopyInputStream.\n\n* Invoke method is now a free function.\n* Protocol handler doesn't need to derive from an abstract interface\n* Only up to one message is processed at a time by the invoker.\n* Remove error_code return from the handler's message processing functions.\n* Add ZeroCopyInputStream implementation that wraps a BufferSequence.\n* Free function parses up to one protocol message and calls the handler.\n* Message type and size can be calculated from an iterator\n  range or a buffer sequence.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/aa7b0a31b058f26992f712cf3f549693e0d35638"},{"sha":"3273ed26167c224d3af47d2831e18079b706f7d1","author":{"email":"96835dd8bfa718bd6447ccc87af89ae1675daeca@swirly.com","name":"Tom Ritchford"},"message":"Remove unused BEAST_COMPILER_CHECKS_SOCKET_OVERRIDES.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/3273ed26167c224d3af47d2831e18079b706f7d1"},{"sha":"fffdf1dfbac790699ea20cd2ba9138e8e6bd2726","author":{"email":"96835dd8bfa718bd6447ccc87af89ae1675daeca@swirly.com","name":"Tom Ritchford"},"message":"Make beast::detail::chunk_encoded_buffers::to_hex() static","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/fffdf1dfbac790699ea20cd2ba9138e8e6bd2726"},{"sha":"b0d47ebcc6b90d17cba2131577db01a4f6da3a34","author":{"email":"96835dd8bfa718bd6447ccc87af89ae1675daeca@swirly.com","name":"Tom Ritchford"},"message":"Use better base64 handling in ServerHandlerImp.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/b0d47ebcc6b90d17cba2131577db01a4f6da3a34"},{"sha":"86df4828420dbe31b842bed8a618fcc3ebbfcada","author":{"email":"96835dd8bfa718bd6447ccc87af89ae1675daeca@swirly.com","name":"Tom Ritchford"},"message":"Make sure that handlers always return Json::objectValue.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/86df4828420dbe31b842bed8a618fcc3ebbfcada"},{"sha":"1084a39a4568d7d9062c8444fc03358bc68926f0","author":{"email":"67faa8d99f09d9a9397420bd1d97e4d509b1cd52@gmail.com","name":"David Schwartz"},"message":"Improve the humanAccountID cache (RIPD-693)\n\nProfiling indicated some performance issues coming from the\ncache of 160-bit account IDs to base58 format. This replaces\nthe single cache with two caches and rotates out old\nentries.","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/1084a39a4568d7d9062c8444fc03358bc68926f0"},{"sha":"36f8e4f2adf6aaee01b715004e218ceb739d3160","author":{"email":"4a416701259b164bd390dc51e65a2e3b423e9ccc@bougalis.net","name":"Nik Bougalis"},"message":"Improve hex conversion & parsing routines","distinct":false,"url":"https://api.github.com/repos/ripple/rippled/commits/36f8e4f2adf6aaee01b715004e218ceb739d3160"}]}