diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 81552f623f..6d15743c88 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -157,7 +157,7 @@ if ENABLE_WALLET test_test_beta_LDADD += $(LIBBITCOIN_WALLET) endif -test_test_beta_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_LIBS) +test_test_beta_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS) test_test_beta_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static if ENABLE_ZMQ diff --git a/src/httprpc.cpp b/src/httprpc.cpp index 8ac6925acd..04aa95332a 100644 --- a/src/httprpc.cpp +++ b/src/httprpc.cpp @@ -176,6 +176,14 @@ static bool HTTPReq_JSONRPC(HTTPRequest* req, const std::string &) return false; } + //Set thread-local storage variable to RPC user name for logging + std::string strUserPass64 = authHeader.second.substr(6); + boost::trim(strUserPass64); + std::string strUserPass = DecodeBase64(strUserPass64); + if (!userInstance.get()) { + userInstance.reset(new std::string(strUserPass.substr(0, strUserPass.find(":")))); + } + try { // Parse request UniValue valRequest; diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index f5f62061a6..090e0306d8 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -26,6 +26,11 @@ #include // for unique_ptr #include +//For thread local rpc username +#include +//Thread local rpc user name for logging purposes +boost::thread_specific_ptr userInstance; + using namespace RPCServer; using namespace std; diff --git a/src/rpc/server.h b/src/rpc/server.h index 52f82866dc..524e808838 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -17,8 +17,13 @@ #include +#include + #include +//Thread-local rpc user name for logging purposes +extern boost::thread_specific_ptr userInstance; + static const unsigned int DEFAULT_RPC_SERIALIZE_VERSION = 1; class CRPCCommand;