aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-07-06 18:52:05 -0700
committerGitHub <noreply@github.com>2016-07-06 18:52:05 -0700
commit32fa565bafcbdc9a59cde670e785a3392d231e3d (patch)
treec81833f8179ddcaea781fcf8f4bcff29fde0d90c
parent5dae3cc01b2ae3049deb2af220740b19436ded1b (diff)
parente252793b1f87b91ca7da3b10b7a8881025616eee (diff)
downloadservo-32fa565bafcbdc9a59cde670e785a3392d231e3d.tar.gz
servo-32fa565bafcbdc9a59cde670e785a3392d231e3d.zip
Auto merge of #12289 - nox:slate, r=Ms2ger
Properly check storage size against QUOTA_SIZE_LIMIT (fixes #12247) <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12289) <!-- Reviewable:end -->
-rw-r--r--components/net/storage_thread.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs
index c314dbdd8cd..cc329f08922 100644
--- a/components/net/storage_thread.rs
+++ b/components/net/storage_thread.rs
@@ -144,12 +144,15 @@ impl StorageManager {
value: String) {
let origin = self.origin_as_string(url);
- let current_total_size = {
+ let (this_storage_size, other_storage_size) = {
let local_data = self.select_data(StorageType::Local);
let session_data = self.select_data(StorageType::Session);
let local_data_size = local_data.get(&origin).map_or(0, |&(total, _)| total);
let session_data_size = session_data.get(&origin).map_or(0, |&(total, _)| total);
- local_data_size + session_data_size
+ match storage_type {
+ StorageType::Local => (local_data_size, session_data_size),
+ StorageType::Session => (session_data_size, local_data_size),
+ }
};
let data = self.select_data_mut(storage_type);
@@ -158,14 +161,14 @@ impl StorageManager {
}
let message = data.get_mut(&origin).map(|&mut (ref mut total, ref mut entry)| {
- let mut new_total_size = current_total_size + value.as_bytes().len();
+ let mut new_total_size = this_storage_size + value.as_bytes().len();
if let Some(old_value) = entry.get(&name) {
new_total_size -= old_value.as_bytes().len();
} else {
new_total_size += name.as_bytes().len();
}
- if new_total_size > QUOTA_SIZE_LIMIT {
+ if (new_total_size + other_storage_size) > QUOTA_SIZE_LIMIT {
return Err(());
}