1. 27 Apr, 2017 1 commit
    • Julien Muchembled's avatar
      Check protocol version, on both connection sides, before parsing any packet · a60e36e8
      Julien Muchembled authored
      This fixes 2 issues:
      - Because neoctl connects to admin nodes without requesting identification,
        the protocol version was not checked, which could even be dangerous
        (think of a user asking for information, but the packet sent by neoctl
        could be decoded as a packet to alter data, like Truncate).
      - In case of mismatched protocol version, the error was not loggued on the
        node that initiated the connection.
      
      Compatibility is handled as follows:
      - For an old node receiving data from a new node, the 2 high order bytes of the
        packet id, which is always 0 for the first packet, is decoded as the packet
        code. Packet 0 has never existed, which results in PacketMalformedError.
      - For a new node receiving data from an old node, the id of the first packet,
        which is always 0, is decoded as the version, which results in a version
        mismatch error.
      
      This new protocol also guarantees that there's no conflict with SSL.
      
      For simplification, the packet length does not count the header anymore.
      a60e36e8
  2. 25 Apr, 2017 4 commits
  3. 24 Apr, 2017 6 commits
  4. 19 Apr, 2017 2 commits
  5. 18 Apr, 2017 4 commits
  6. 13 Apr, 2017 1 commit
  7. 04 Apr, 2017 1 commit
  8. 31 Mar, 2017 14 commits
  9. 30 Mar, 2017 1 commit
  10. 23 Mar, 2017 6 commits