Mercurial > hg > orthanc
comparison OrthancServer/Sources/ServerContext.cpp @ 4752:2f35e6b765e5
Fix orphaned attachments if bad revision number is provided
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 14 Jul 2021 17:21:15 +0200 |
parents | da1edb7d6332 |
children | b2417ac5055a 51ec061516c9 |
comparison
equal
deleted
inserted
replaced
4751:b3957ddd88f1 | 4752:2f35e6b765e5 |
---|---|
1172 CompressionType compression = (compressionEnabled_ ? CompressionType_ZlibWithSize : CompressionType_None); | 1172 CompressionType compression = (compressionEnabled_ ? CompressionType_ZlibWithSize : CompressionType_None); |
1173 | 1173 |
1174 StorageAccessor accessor(area_, GetMetricsRegistry()); | 1174 StorageAccessor accessor(area_, GetMetricsRegistry()); |
1175 FileInfo attachment = accessor.Write(data, size, attachmentType, compression, storeMD5_); | 1175 FileInfo attachment = accessor.Write(data, size, attachmentType, compression, storeMD5_); |
1176 | 1176 |
1177 StoreStatus status = index_.AddAttachment( | 1177 try |
1178 newRevision, attachment, resourceId, hasOldRevision, oldRevision, oldMD5); | 1178 { |
1179 if (status != StoreStatus_Success) | 1179 StoreStatus status = index_.AddAttachment( |
1180 { | 1180 newRevision, attachment, resourceId, hasOldRevision, oldRevision, oldMD5); |
1181 if (status != StoreStatus_Success) | |
1182 { | |
1183 accessor.Remove(attachment); | |
1184 return false; | |
1185 } | |
1186 else | |
1187 { | |
1188 return true; | |
1189 } | |
1190 } | |
1191 catch (OrthancException&) | |
1192 { | |
1193 // Fixed in Orthanc 1.9.6 | |
1181 accessor.Remove(attachment); | 1194 accessor.Remove(attachment); |
1182 return false; | 1195 throw; |
1183 } | |
1184 else | |
1185 { | |
1186 return true; | |
1187 } | 1196 } |
1188 } | 1197 } |
1189 | 1198 |
1190 | 1199 |
1191 bool ServerContext::DeleteResource(Json::Value& remainingAncestor, | 1200 bool ServerContext::DeleteResource(Json::Value& remainingAncestor, |