mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-17 22:56:18 +00:00
Check the flush on the dht cache and history
good() ran before close(), so a failed write replaced the file.
This commit is contained in:
@@ -132,11 +132,12 @@ DhtManager::save_dht_cache() {
|
|||||||
torrent::Object cache = torrent::Object::create_map();
|
torrent::Object cache = torrent::Object::create_map();
|
||||||
cache_file << *torrent::runtime::network_manager()->dht_controller()->store_cache(&cache);
|
cache_file << *torrent::runtime::network_manager()->dht_controller()->store_cache(&cache);
|
||||||
|
|
||||||
|
// The data only reaches the kernel here, so this is where a full disk is seen.
|
||||||
|
cache_file.close();
|
||||||
|
|
||||||
if (!cache_file.good())
|
if (!cache_file.good())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cache_file.close();
|
|
||||||
|
|
||||||
::rename(filename_tmp.c_str(), filename.c_str());
|
::rename(filename_tmp.c_str(), filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -467,6 +467,9 @@ Root::save_input_history() {
|
|||||||
history_file << entry << "|" + category.at((pitr->second + i) % m_input_history_length) + "\n";
|
history_file << entry << "|" + category.at((pitr->second + i) % m_input_history_length) + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The data only reaches the kernel here, so this is where a full disk is seen.
|
||||||
|
history_file.close();
|
||||||
|
|
||||||
if (!history_file.good()) {
|
if (!history_file.good()) {
|
||||||
lt_log_print(torrent::LOG_DEBUG, "input history file corrupted during writing, discarding (path:%s)", history_filename.c_str());
|
lt_log_print(torrent::LOG_DEBUG, "input history file corrupted during writing, discarding (path:%s)", history_filename.c_str());
|
||||||
return;
|
return;
|
||||||
@@ -474,8 +477,6 @@ Root::save_input_history() {
|
|||||||
lt_log_print(torrent::LOG_DEBUG, "input history file written (path:%s)", history_filename.c_str());
|
lt_log_print(torrent::LOG_DEBUG, "input history file written (path:%s)", history_filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
history_file.close();
|
|
||||||
|
|
||||||
std::rename(history_filename_tmp.c_str(), history_filename.c_str());
|
std::rename(history_filename_tmp.c_str(), history_filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user