/** * Deletes email packets. * @param delRequest An instance of {@link EmailPacketDeleteRequest} */ @Override public synchronized void process(DeleteRequest delRequest) { log.debug("Processing delete request: " + delRequest); if (!(delRequest instanceof EmailPacketDeleteRequest)) log.error("Invalid type of delete request for EmailPacketFolder: " + delRequest.getClass()); EmailPacketDeleteRequest emailPacketDelRequest = (EmailPacketDeleteRequest)delRequest; // see if the packet exists Hash dhtKey = emailPacketDelRequest.getDhtKey(); DhtStorablePacket storedPacket = retrieve(dhtKey); if (storedPacket instanceof EncryptedEmailPacket) { // verify Hash verificationHash = ((EncryptedEmailPacket)storedPacket).getDeleteVerificationHash(); UniqueId delAuthorization = emailPacketDelRequest.getAuthorization(); boolean valid = Util.isDeleteAuthorizationValid(verificationHash, delAuthorization); if (valid) delete(dhtKey, delAuthorization); else log.debug("Invalid Delete Authorization in EmailPacketDeleteRequest. Should be: <" + verificationHash.toBase64() + ">"); } else if (storedPacket != null) log.debug("EncryptedEmailPacket expected for DHT key <" + dhtKey + ">, found " + storedPacket.getClass().getSimpleName()); }
else { UniqueId delAuthorization = indexPacketDelRequest.getDeleteAuthorization(keyToDelete); boolean valid = Util.isDeleteAuthorizationValid(verificationHash, delAuthorization); if (valid) remove(indexPacket, keyToDelete, delAuthorization);
DeletionRecord delRecord = delInfo.getEntry(dhtKey); if (delRecord != null) { boolean valid = Util.isDeleteAuthorizationValid(verificationHash, delRecord.delAuthorization); if (valid) return delRecord.delAuthorization;