mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 23:03:45 +01:00
rpc: keep .cookie if it was not generated
Otherwise, starting bitcoind twice may cause the `.cookie` file generated by the first instance to be deleted by the second instance shutdown (after failing to obtain a lock).
This commit is contained in:
@@ -80,6 +80,8 @@ static fs::path GetAuthCookieFile(bool temp=false)
|
||||
return AbsPathForConfigVal(gArgs, arg);
|
||||
}
|
||||
|
||||
static bool g_generated_cookie = false;
|
||||
|
||||
bool GenerateAuthCookie(std::string *cookie_out)
|
||||
{
|
||||
const size_t COOKIE_SIZE = 32;
|
||||
@@ -105,6 +107,7 @@ bool GenerateAuthCookie(std::string *cookie_out)
|
||||
LogPrintf("Unable to rename cookie authentication file %s to %s\n", fs::PathToString(filepath_tmp), fs::PathToString(filepath));
|
||||
return false;
|
||||
}
|
||||
g_generated_cookie = true;
|
||||
LogPrintf("Generated RPC authentication cookie %s\n", fs::PathToString(filepath));
|
||||
|
||||
if (cookie_out)
|
||||
@@ -131,7 +134,10 @@ bool GetAuthCookie(std::string *cookie_out)
|
||||
void DeleteAuthCookie()
|
||||
{
|
||||
try {
|
||||
fs::remove(GetAuthCookieFile());
|
||||
if (g_generated_cookie) {
|
||||
// Delete the cookie file if it was generated by this process
|
||||
fs::remove(GetAuthCookieFile());
|
||||
}
|
||||
} catch (const fs::filesystem_error& e) {
|
||||
LogPrintf("%s: Unable to remove random auth cookie file: %s\n", __func__, fsbridge::get_filesystem_error_message(e));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user