summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-18 18:37:25 +0000
committerjsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-18 18:37:25 +0000
commit2561323b550b81a854bf1b8c0968f5afd8c11a0f (patch)
tree8322cce28ac4eebf1c9b40404b7a5cab747ebf20
parentedefafd6d99825da73f27b7ed1ac27b1d16bd98f (diff)
downloadchromium_src-2561323b550b81a854bf1b8c0968f5afd8c11a0f.zip
chromium_src-2561323b550b81a854bf1b8c0968f5afd8c11a0f.tar.gz
chromium_src-2561323b550b81a854bf1b8c0968f5afd8c11a0f.tar.bz2
Merge 226009 "IndexedDB: Ignore duplicate transaction IDs sent b..."
> IndexedDB: Ignore duplicate transaction IDs sent by renderer > > BUG=297556 > R=alecflett@chromium.org,aedla@chromium.org > > Review URL: https://codereview.chromium.org/24702002 TBR=jsbell@chromium.org Review URL: https://codereview.chromium.org/29163003 git-svn-id: svn://svn.chromium.org/chrome/branches/1650/src@229445 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/indexed_db/indexed_db_database.cc4
-rw-r--r--content/browser/indexed_db/indexed_db_dispatcher_host.cc6
2 files changed, 9 insertions, 1 deletions
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc
index f0c05a5..7980be5 100644
--- a/content/browser/indexed_db/indexed_db_database.cc
+++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -1398,6 +1398,9 @@ void IndexedDBDatabase::CreateTransaction(
uint16 mode) {
DCHECK(connections_.has(connection));
+ DCHECK(transactions_.find(transaction_id) == transactions_.end());
+ if (transactions_.find(transaction_id) != transactions_.end())
+ return;
scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction(
transaction_id,
@@ -1405,7 +1408,6 @@ void IndexedDBDatabase::CreateTransaction(
std::set<int64>(object_store_ids.begin(), object_store_ids.end()),
static_cast<indexed_db::TransactionMode>(mode),
this);
- DCHECK(transactions_.find(transaction_id) == transactions_.end());
transactions_[transaction_id] = transaction;
}
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host.cc b/content/browser/indexed_db/indexed_db_dispatcher_host.cc
index abb7a87..1cbc4b8 100644
--- a/content/browser/indexed_db/indexed_db_dispatcher_host.cc
+++ b/content/browser/indexed_db/indexed_db_dispatcher_host.cc
@@ -476,6 +476,12 @@ void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnCreateTransaction(
int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id);
+ if (transaction_database_map_.find(host_transaction_id) !=
+ transaction_database_map_.end()) {
+ DLOG(ERROR) << "Duplicate host_transaction_id.";
+ return;
+ }
+
connection->database()->CreateTransaction(
host_transaction_id, connection, params.object_store_ids, params.mode);
transaction_database_map_[host_transaction_id] = params.ipc_database_id;