diff --git a/src/SHAMap.h b/src/SHAMap.h index 2e1af1dcaf..64eec583a8 100644 --- a/src/SHAMap.h +++ b/src/SHAMap.h @@ -157,11 +157,12 @@ public: SHAMapTreeNode(const SHAMapTreeNode& node, uint32 seq); // copy node from older tree SHAMapTreeNode(const SHAMapNode& nodeID, SHAMapItem::pointer item, TNType type, uint32 seq); - // raw node functions - SHAMapTreeNode(const SHAMapNode& id, const std::vector& contents, uint32 seq, int format); - +#define STN_ARF_UNKNOWN 0 #define STN_ARF_PREFIXED 1 #define STN_ARF_WIRE 2 + + // raw node functions + SHAMapTreeNode(const SHAMapNode& id, const std::vector& contents, uint32 seq, int format); void addRaw(Serializer &, int format); virtual bool isPopulated() const { return true; } diff --git a/src/SHAMapNodes.cpp b/src/SHAMapNodes.cpp index dbdc8ee109..3a9c682414 100644 --- a/src/SHAMapNodes.cpp +++ b/src/SHAMapNodes.cpp @@ -192,6 +192,14 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& node, SHAMapItem::pointer item, SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector& rawNode, uint32 seq, int format) : SHAMapNode(id), mSeq(seq), mType(tnERROR), mFullBelow(false) { + if (format == STN_ARF_UNKNOWN) + { + if ((rawNode.size() < 4) || (rawNode[0] < 10)) + format = STN_ARF_WIRE; + else + format = STN_ARF_PREFIXED; + } + if (format == STN_ARF_WIRE) { Serializer s(rawNode);