* [Bitcoin-development] DragonFly BSD bitcoind patches
@ 2011-08-08 3:07 Venkatesh Srinivas
2011-08-11 2:45 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Venkatesh Srinivas @ 2011-08-08 3:07 UTC (permalink / raw)
To: bitcoin-development
[-- Attachment #1.1: Type: text/plain, Size: 825 bytes --]
Hi,
Related to https://bitcointalk.org/index.php?topic=28022.0 ;
Here are three patches that allow bitcoind to build and run on DragonFly BSD.
0001) bitcoind assumes a definition of BSD implies SO_NOSIGPIPE is available.
This is not true on NetBSD, OpenBSD, and DragonFly.
0002) main.cpp has: "char pchMessageStart[4] = { 0xf9, 0xbe, 0xb4, 0xd9 };"
Per discussion on the thread linked, leaving the signedness of pchMessageStart
is unsafe for values > 0x80. This patch specifies 'unsigned char' in main.cpp
and net.h.
0003) db.cpp has a number of uses of make_tuple and has 'using namespace std'
and 'using namespace boost'. Without qualifying make_tuple, std::make_tuple is
preferred, which is incorrect. This patch qualifies make_tuple.
Patches are from git format-patch and can be applied with git-am.
Thanks,
-- vs
[-- Attachment #1.2: 0001-Test-for-SO_NOSIGPIPE-rather-than-assuming-all-BSDs-.patch --]
[-- Type: text/plain, Size: 1106 bytes --]
From 310cd8d1bdd130d04c98e5e724b2af904fe94e2e Mon Sep 17 00:00:00 2001
From: Venkatesh Srinivas <me@endeavour.zapto.org>
Date: Sun, 7 Aug 2011 12:18:05 -0400
Subject: [PATCH 1/3] Test for SO_NOSIGPIPE rather than assuming all BSDs
support it.
---
src/net.cpp | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/net.cpp b/src/net.cpp
index d697788..9feeb43 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -98,7 +98,7 @@ bool ConnectSocket(const CAddress& addrConnect, SOCKET& hSocketRet, int nTimeout
SOCKET hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (hSocket == INVALID_SOCKET)
return false;
-#ifdef BSD
+#ifdef SO_NOSIGPIPE
int set = 1;
setsockopt(hSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(int));
#endif
@@ -1579,7 +1579,7 @@ bool BindListenPort(string& strError)
return false;
}
-#ifdef BSD
+#ifdef SO_NOSIGPIPE
// Different way of disabling SIGPIPE on BSD
setsockopt(hListenSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&nOne, sizeof(int));
#endif
--
1.7.5.4
[-- Attachment #1.3: 0002-Use-unsigned-char-rather-than-char-for-pchMessageSta.patch --]
[-- Type: text/plain, Size: 1256 bytes --]
From 7ed0ddde65b3f5c467e471fc6f9fff648b976e56 Mon Sep 17 00:00:00 2001
From: Venkatesh Srinivas <me@endeavour.zapto.org>
Date: Sun, 7 Aug 2011 12:19:14 -0400
Subject: [PATCH 2/3] Use 'unsigned char' rather than 'char' for
pchMessageStart.
---
src/main.cpp | 2 +-
src/net.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main.cpp b/src/main.cpp
index b57974f..4bcb87f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1766,7 +1766,7 @@ bool static AlreadyHave(CTxDB& txdb, const CInv& inv)
// The message start string is designed to be unlikely to occur in normal data.
// The characters are rarely used upper ascii, not valid as UTF-8, and produce
// a large 4-byte int at any alignment.
-char pchMessageStart[4] = { 0xf9, 0xbe, 0xb4, 0xd9 };
+unsigned char pchMessageStart[4] = { 0xf9, 0xbe, 0xb4, 0xd9 };
bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
diff --git a/src/net.h b/src/net.h
index 78055bf..6678e56 100644
--- a/src/net.h
+++ b/src/net.h
@@ -66,7 +66,7 @@ bool StopNode();
// (4) size
// (4) checksum
-extern char pchMessageStart[4];
+extern unsigned char pchMessageStart[4];
class CMessageHeader
{
--
1.7.5.4
[-- Attachment #1.4: 0003-Qualify-make_tuple-with-boost-namespace.patch --]
[-- Type: text/plain, Size: 1449 bytes --]
From 74647b73e06ae5b4ec995873a8ef56977f3b7e93 Mon Sep 17 00:00:00 2001
From: Venkatesh Srinivas <me@endeavour.zapto.org>
Date: Sun, 7 Aug 2011 12:20:00 -0400
Subject: [PATCH 3/3] Qualify make_tuple with boost:: namespace.
---
src/db.cpp | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/db.cpp b/src/db.cpp
index 9c8c9c4..b3fa3e1 100644
--- a/src/db.cpp
+++ b/src/db.cpp
@@ -610,7 +610,7 @@ bool CWalletDB::WriteAccount(const string& strAccount, const CAccount& account)
bool CWalletDB::WriteAccountingEntry(const CAccountingEntry& acentry)
{
- return Write(make_tuple(string("acentry"), acentry.strAccount, ++nAccountingEntryNumber), acentry);
+ return Write(boost::make_tuple(string("acentry"), acentry.strAccount, ++nAccountingEntryNumber), acentry);
}
int64 CWalletDB::GetAccountCreditDebit(const string& strAccount)
@@ -638,7 +638,7 @@ void CWalletDB::ListAccountCreditDebit(const string& strAccount, list<CAccountin
// Read next record
CDataStream ssKey;
if (fFlags == DB_SET_RANGE)
- ssKey << make_tuple(string("acentry"), (fAllAccounts? string("") : strAccount), uint64(0));
+ ssKey << boost::make_tuple(string("acentry"), (fAllAccounts? string("") : strAccount), uint64(0));
CDataStream ssValue;
int ret = ReadAtCursor(pcursor, ssKey, ssValue, fFlags);
fFlags = DB_NEXT;
--
1.7.5.4
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Bitcoin-development] DragonFly BSD bitcoind patches
2011-08-08 3:07 [Bitcoin-development] DragonFly BSD bitcoind patches Venkatesh Srinivas
@ 2011-08-11 2:45 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2011-08-11 2:45 UTC (permalink / raw)
To: Venkatesh Srinivas; +Cc: bitcoin-development
On Sun, Aug 7, 2011 at 11:07 PM, Venkatesh Srinivas
<me@endeavour.zapto.org> wrote:
> Hi,
>
> Related to https://bitcointalk.org/index.php?topic=28022.0 ;
>
> Here are three patches that allow bitcoind to build and run on DragonFly
> BSD.
>
> 0001) bitcoind assumes a definition of BSD implies SO_NOSIGPIPE is
> available.
> This is not true on NetBSD, OpenBSD, and DragonFly.
applied
> 0002) main.cpp has: "char pchMessageStart[4] = { 0xf9, 0xbe, 0xb4, 0xd9 };"
> Per discussion on the thread linked, leaving the signedness of
> pchMessageStart
> is unsafe for values > 0x80. This patch specifies 'unsigned char' in
> main.cpp
> and net.h.
>
> 0003) db.cpp has a number of uses of make_tuple and has 'using namespace
> std'
> and 'using namespace boost'. Without qualifying make_tuple, std::make_tuple
> is
> preferred, which is incorrect. This patch qualifies make_tuple.
Looks good at first glance. Creating pull requests @ github for these two.
--
Jeff Garzik
exMULTI, Inc.
jgarzik@exmulti.com
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-08-11 2:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-08 3:07 [Bitcoin-development] DragonFly BSD bitcoind patches Venkatesh Srinivas
2011-08-11 2:45 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox