diff --git a/src/public/package.cpp b/src/public/package.cpp index f4818a7..1e7a5a5 100644 --- a/src/public/package.cpp +++ b/src/public/package.cpp @@ -27,7 +27,10 @@ bool Package::isValid() const { if (hdr.size > maximumSize()) return false; - return calcHash() == hdr.hash; + if ( calcHash() == hdr.hash) + return true; + + return calcHashOld() == hdr.hash; } void Package::reset() { diff --git a/src/public/packages/abstractdata.cpp b/src/public/packages/abstractdata.cpp index 790ff39..1609462 100644 --- a/src/public/packages/abstractdata.cpp +++ b/src/public/packages/abstractdata.cpp @@ -38,7 +38,12 @@ bool AbstractData::toPackage(Package &package, package.hdr.command = cmd(); package.hdr.triggerHash = triggerHash; package.hdr.size = package.data.size(); - package.hdr.hash = package.calcHash(); + + if (isOldPackage()) { + package.hdr.hash = package.calcHashOld(); + } else { + package.hdr.hash = package.calcHash(); + } return package.isValid(); } @@ -66,6 +71,10 @@ AbstractData::~AbstractData() { } +bool QH::PKG::AbstractData::isOldPackage() const { + return false; +} + } } diff --git a/src/public/packages/abstractdata.h b/src/public/packages/abstractdata.h index 2ff957f..64e0dd1 100644 --- a/src/public/packages/abstractdata.h +++ b/src/public/packages/abstractdata.h @@ -164,6 +164,11 @@ protected: */ virtual unsigned int localCode() const = 0; + /** + * @brief isOldPackage This method mark package as a old, old pacakges use the Package::calcHashOld method for calculation hash sum of packages. + * @return true if the pacakge is old. + */ + virtual bool isOldPackage() const; private: /** * @brief checkCmd This method check QH_PACKAGE macross.