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,