diff options
author | jsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-18 18:37:25 +0000 |
---|---|---|
committer | jsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-18 18:37:25 +0000 |
commit | 2561323b550b81a854bf1b8c0968f5afd8c11a0f (patch) | |
tree | 8322cce28ac4eebf1c9b40404b7a5cab747ebf20 | |
parent | edefafd6d99825da73f27b7ed1ac27b1d16bd98f (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | content/browser/indexed_db/indexed_db_dispatcher_host.cc | 6 |
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; |