From a5843203574aba93a94df09eed9c922ec0f41d78 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Fri, 15 Apr 2011 03:58:28 -0400 Subject: [PATCH 1/2] Ensure version number->string conversion is consistent --- init.cpp | 4 ++-- ui.cpp | 2 +- util.cpp | 29 +++++++++++++++++++++++++++++ util.h | 9 +-------- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/init.cpp b/init.cpp index effac288..906bcbe1 100644 --- a/init.cpp +++ b/init.cpp @@ -143,7 +143,7 @@ bool AppInit2(int argc, char* argv[]) { string beta = VERSION_IS_BETA ? _(" beta") : ""; string strUsage = string() + - _("Bitcoin version") + " " + FormatVersion(VERSION) + pszSubVer + beta + "\n\n" + + _("Bitcoin version") + " " + FormatFullVersion() + "\n\n" + _("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" + " bitcoin [options] \t " + "\n" + " bitcoin [options] [params]\t " + _("Send command to -server or bitcoind\n") + @@ -262,7 +262,7 @@ bool AppInit2(int argc, char* argv[]) if (!fDebug && !pszSetDataDir[0]) ShrinkDebugFile(); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - printf("Bitcoin version %s%s%s\n", FormatVersion(VERSION).c_str(), pszSubVer, VERSION_IS_BETA ? _(" beta") : ""); + printf("Bitcoin version %s\n", FormatFullVersion().c_str()); #ifdef GUI printf("OS version %s\n", ((string)wxGetOsDescription()).c_str()); printf("System default language is %d %s\n", g_locale.GetSystemLanguage(), ((string)g_locale.GetSysName()).c_str()); diff --git a/ui.cpp b/ui.cpp index 45e07d16..5d4c6529 100644 --- a/ui.cpp +++ b/ui.cpp @@ -1814,7 +1814,7 @@ void COptionsDialog::OnButtonApply(wxCommandEvent& event) CAboutDialog::CAboutDialog(wxWindow* parent) : CAboutDialogBase(parent) { - m_staticTextVersion->SetLabel(strprintf(_("version %s%s BETA"), FormatVersion(VERSION).c_str(), pszSubVer)); + m_staticTextVersion->SetLabel(strprintf(_("version %s"), FormatFullVersion().c_str())); // Change (c) into UTF-8 or ANSI copyright symbol wxString str = m_staticTextMain->GetLabel(); diff --git a/util.cpp b/util.cpp index 655626dd..1c685ba4 100644 --- a/util.cpp +++ b/util.cpp @@ -855,3 +855,32 @@ void AddTimeData(unsigned int ip, int64 nTime) printf("| nTimeOffset = %+"PRI64d" (%+"PRI64d" minutes)\n", nTimeOffset, nTimeOffset/60); } } + + + + + + + + + +string FormatVersion(int nVersion) +{ + if (nVersion%100 == 0) + return strprintf("%d.%d.%d", nVersion/1000000, (nVersion/10000)%100, (nVersion/100)%100); + else + return strprintf("%d.%d.%d.%d", nVersion/1000000, (nVersion/10000)%100, (nVersion/100)%100, nVersion%100); +} + +string FormatFullVersion() +{ + string s = FormatVersion(VERSION) + pszSubVer; + if (VERSION_IS_BETA) + s += _("-beta"); + return s; +} + + + + + diff --git a/util.h b/util.h index 2a7dbb51..d1754c9e 100644 --- a/util.h +++ b/util.h @@ -184,6 +184,7 @@ uint64 GetRand(uint64 nMax); int64 GetTime(); int64 GetAdjustedTime(); void AddTimeData(unsigned int ip, int64 nTime); +string FormatFullVersion(); @@ -431,14 +432,6 @@ inline bool GetBoolArg(const string& strArg) return false; } -inline string FormatVersion(int nVersion) -{ - if (nVersion%100 == 0) - return strprintf("%d.%d.%d", nVersion/1000000, (nVersion/10000)%100, (nVersion/100)%100); - else - return strprintf("%d.%d.%d.%d", nVersion/1000000, (nVersion/10000)%100, (nVersion/100)%100, nVersion%100); -} - From 17616eac17979ce0b3e0426e7d66ec893a2cb6c6 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Wed, 13 Apr 2011 15:16:38 -0400 Subject: [PATCH 2/2] Send/return full bitcoin version string in Server and User-Agent HTTP headers --- rpc.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rpc.cpp b/rpc.cpp index 93df5c22..25706558 100644 --- a/rpc.cpp +++ b/rpc.cpp @@ -1480,7 +1480,7 @@ string HTTPPost(const string& strMsg, const map& mapRequestHeader { ostringstream s; s << "POST / HTTP/1.1\r\n" - << "User-Agent: json-rpc/1.0\r\n" + << "User-Agent: bitcoin-json-rpc/" << FormatFullVersion() << "\r\n" << "Host: 127.0.0.1\r\n" << "Content-Type: application/json\r\n" << "Content-Length: " << strMsg.size() << "\r\n" @@ -1507,7 +1507,7 @@ string HTTPReply(int nStatus, const string& strMsg) if (nStatus == 401) return strprintf("HTTP/1.0 401 Authorization Required\r\n" "Date: %s\r\n" - "Server: bitcoin-json-rpc\r\n" + "Server: bitcoin-json-rpc/%s\r\n" "WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n" "Content-Type: text/html\r\n" "Content-Length: 296\r\n" @@ -1520,7 +1520,7 @@ string HTTPReply(int nStatus, const string& strMsg) "\r\n" "\r\n" "

401 Unauthorized.

\r\n" - "\r\n", rfc1123Time().c_str()); + "\r\n", rfc1123Time().c_str(), FormatFullVersion().c_str()); string strStatus; if (nStatus == 200) strStatus = "OK"; else if (nStatus == 400) strStatus = "Bad Request"; @@ -1532,13 +1532,14 @@ string HTTPReply(int nStatus, const string& strMsg) "Connection: close\r\n" "Content-Length: %d\r\n" "Content-Type: application/json\r\n" - "Server: bitcoin-json-rpc/1.0\r\n" + "Server: bitcoin-json-rpc/%s\r\n" "\r\n" "%s", nStatus, strStatus.c_str(), rfc1123Time().c_str(), strMsg.size(), + FormatFullVersion().c_str(), strMsg.c_str()); }