diff --git a/src/campaign_server/campaign_server.cpp b/src/campaign_server/campaign_server.cpp index 99ed75090e69..0a36340701cc 100644 --- a/src/campaign_server/campaign_server.cpp +++ b/src/campaign_server/campaign_server.cpp @@ -195,8 +195,7 @@ server::server(const std::string& cfg_file, size_t min_threads, size_t max_threa server::~server() { delete input_; - scoped_ostream out = ostream_file(cfg_file_); - write(*out, cfg_); + write_config(); } int server::load_config() @@ -262,6 +261,12 @@ void server::load_blacklist() } } +void server::write_config() +{ + scoped_ostream out = ostream_file(cfg_file_); + write(*out, cfg_); +} + void server::fire(const std::string& hook, const std::string& addon) { const std::map::const_iterator itor = hooks_.find(hook); @@ -370,8 +375,7 @@ void server::run() } //write config to disk every ten minutes if((increment%(60*10*50)) == 0) { - scoped_ostream out = ostream_file(cfg_file_); - write(*out, cfg_); + write_config(); } network::process_send_queue(); @@ -629,8 +633,9 @@ void server::run() (*campaign)["size"] = lexical_cast( file_size(filename)); - scoped_ostream out = ostream_file(cfg_file_); - write(*out, cfg_); + + write_config(); + network::send_data(construct_message(message), sock); fire("hook_post_upload", upload["name"]); @@ -672,8 +677,9 @@ void server::run() break; } } - scoped_ostream out = ostream_file(cfg_file_); - write(*out, cfg_); + + write_config(); + network::send_data(construct_message("Add-on deleted."), sock); fire("hook_post_erase", erase["name"]); @@ -695,8 +701,9 @@ void server::run() network::send_data(construct_error("No new passphrase was supplied."), sock); } else { campaign["passphrase"] = cpass["new_passphrase"]; - scoped_ostream out = ostream_file(cfg_file_); - write(*out, cfg_); + + write_config(); + network::send_data(construct_message("Passphrase changed."), sock); } } diff --git a/src/campaign_server/campaign_server.hpp b/src/campaign_server/campaign_server.hpp index 5b63ea7dfe9a..6100596dbe37 100644 --- a/src/campaign_server/campaign_server.hpp +++ b/src/campaign_server/campaign_server.hpp @@ -63,6 +63,11 @@ class server : private boost::noncopyable */ int load_config(); + /** + * Writes the server configuration WML back to disk. + */ + void write_config(); + /** * Reads the add-ons upload blacklist from WML. */