aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2010-12-08 20:06:44 -0500
committerGavin Andresen <gavinandresen@gmail.com>2010-12-08 20:06:44 -0500
commitd12e53ea090ba49a82ff4f79782af809d21cf280 (patch)
tree8fb80d4335255d62eb65e9f7b2def7ca799b55c4
parent0a87c91692765abb6d49969b968389133e846768 (diff)
parent82201801336f64ee77851b9eaab9383ee4e442f0 (diff)
downloadbitcoin-d12e53ea090ba49a82ff4f79782af809d21cf280.tar.xz
Merge remote branch 'refs/remotes/svn/trunk' into svn
-rw-r--r--main.cpp20
-rw-r--r--main.h11
-rw-r--r--script.cpp9
-rw-r--r--script.h18
-rw-r--r--serialize.h2
-rw-r--r--setup.nsi6
-rw-r--r--sha256.cpp4
-rw-r--r--util.cpp5
8 files changed, 57 insertions, 18 deletions
diff --git a/main.cpp b/main.cpp
index be29ceb971..10d482d898 100644
--- a/main.cpp
+++ b/main.cpp
@@ -572,7 +572,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi
return error("AcceptToMemoryPool() : not accepting nLockTime beyond 2038 yet");
// Rather not work on nonstandard transactions
- if (GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) < 100)
+ if (!IsStandard() || GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) < 100)
return error("AcceptToMemoryPool() : nonstandard transaction");
// Do we already have it?
@@ -2567,15 +2567,17 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
else if (strCommand == "checkorder")
{
uint256 hashReply;
- CWalletTx order;
- vRecv >> hashReply >> order;
+ vRecv >> hashReply;
- if (!mapArgs.count("-allowreceivebyip") || mapArgs["-allowreceivebyip"] == "0")
+ if (!GetBoolArg("-allowreceivebyip"))
{
pfrom->PushMessage("reply", hashReply, (int)2, string(""));
return true;
}
+ CWalletTx order;
+ vRecv >> order;
+
/// we have a chance to check the order here
// Keep giving the same key to the same ip until they use it
@@ -2592,16 +2594,18 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
else if (strCommand == "submitorder")
{
uint256 hashReply;
- CWalletTx wtxNew;
- vRecv >> hashReply >> wtxNew;
- wtxNew.fFromMe = false;
+ vRecv >> hashReply;
- if (!mapArgs.count("-allowreceivebyip") || mapArgs["-allowreceivebyip"] == "0")
+ if (!GetBoolArg("-allowreceivebyip"))
{
pfrom->PushMessage("reply", hashReply, (int)2);
return true;
}
+ CWalletTx wtxNew;
+ vRecv >> wtxNew;
+ wtxNew.fFromMe = false;
+
// Broadcast
if (!wtxNew.AcceptWalletTransaction())
{
diff --git a/main.h b/main.h
index b221e62a7e..0b950e8074 100644
--- a/main.h
+++ b/main.h
@@ -499,6 +499,17 @@ public:
return n;
}
+ bool IsStandard() const
+ {
+ foreach(const CTxIn& txin, vin)
+ if (!txin.scriptSig.IsPushOnly())
+ return error("nonstandard txin: %s", txin.scriptSig.ToString().c_str());
+ foreach(const CTxOut& txout, vout)
+ if (!::IsStandard(txout.scriptPubKey))
+ return error("nonstandard txout: %s", txout.scriptPubKey.ToString().c_str());
+ return true;
+ }
+
bool IsMine() const
{
foreach(const CTxOut& txout, vout)
diff --git a/script.cpp b/script.cpp
index a09031bad5..a85c3710a3 100644
--- a/script.cpp
+++ b/script.cpp
@@ -997,7 +997,7 @@ bool Solver(const CScript& scriptPubKey, vector<pair<opcodetype, valtype> >& vSo
break;
if (opcode2 == OP_PUBKEY)
{
- if (vch1.size() < 33)
+ if (vch1.size() < 33 || vch1.size() > 120)
break;
vSolutionRet.push_back(make_pair(opcode2, vch1));
}
@@ -1076,6 +1076,13 @@ bool Solver(const CScript& scriptPubKey, uint256 hash, int nHashType, CScript& s
}
+bool IsStandard(const CScript& scriptPubKey)
+{
+ vector<pair<opcodetype, valtype> > vSolution;
+ return Solver(scriptPubKey, vSolution);
+}
+
+
bool IsMine(const CScript& scriptPubKey)
{
CScript scriptSig;
diff --git a/script.h b/script.h
index c829ed053e..da904ef489 100644
--- a/script.h
+++ b/script.h
@@ -597,6 +597,23 @@ public:
}
+ bool IsPushOnly() const
+ {
+ if (size() > 200)
+ return false;
+ const_iterator pc = begin();
+ while (pc < end())
+ {
+ opcodetype opcode;
+ if (!GetOp(pc, opcode))
+ return false;
+ if (opcode > OP_16)
+ return false;
+ }
+ return true;
+ }
+
+
uint160 GetBitcoinAddressHash160() const
{
opcodetype opcode;
@@ -684,6 +701,7 @@ public:
uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
+bool IsStandard(const CScript& scriptPubKey);
bool IsMine(const CScript& scriptPubKey);
bool ExtractPubKey(const CScript& scriptPubKey, bool fMineOnly, vector<unsigned char>& vchPubKeyRet);
bool ExtractHash160(const CScript& scriptPubKey, uint160& hash160Ret);
diff --git a/serialize.h b/serialize.h
index eccea8f72e..4e90b76c03 100644
--- a/serialize.h
+++ b/serialize.h
@@ -25,7 +25,7 @@ class CDataStream;
class CAutoFile;
static const unsigned int MAX_SIZE = 0x02000000;
-static const int VERSION = 31704;
+static const int VERSION = 31800;
static const char* pszSubVer = "";
diff --git a/setup.nsi b/setup.nsi
index 1cb005490b..aee4a528a2 100644
--- a/setup.nsi
+++ b/setup.nsi
@@ -7,7 +7,7 @@ RequestExecutionLevel highest
# General Symbol Definitions
!define REGKEY "SOFTWARE\$(^Name)"
-!define VERSION 0.3.17
+!define VERSION 0.3.18
!define COMPANY "Bitcoin project"
!define URL http://www.bitcoin.org/
@@ -42,12 +42,12 @@ Var StartMenuGroup
!insertmacro MUI_LANGUAGE English
# Installer attributes
-OutFile bitcoin-0.3.17-win32-setup.exe
+OutFile bitcoin-0.3.18-win32-setup.exe
InstallDir $PROGRAMFILES\Bitcoin
CRCCheck on
XPStyle on
ShowInstDetails show
-VIProductVersion 0.3.17.0
+VIProductVersion 0.3.18.0
VIAddVersionKey ProductName Bitcoin
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey CompanyName "${COMPANY}"
diff --git a/sha256.cpp b/sha256.cpp
index 530c2c7c19..ca116bdcd3 100644
--- a/sha256.cpp
+++ b/sha256.cpp
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 Satoshi Nakamoto
+// Copyright (c) 2010 Nils Schneider
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-// tcatm's 4-way 128-bit SSE2 SHA-256
+// 4-way 128-bit SSE2 SHA-256
#ifdef FOURWAYSSE2
diff --git a/util.cpp b/util.cpp
index 607dc3f11e..42256a9d0c 100644
--- a/util.cpp
+++ b/util.cpp
@@ -175,7 +175,6 @@ inline int OutputDebugStringF(const char* pszFormat, ...)
va_start(arg_ptr, pszFormat);
ret = vfprintf(fileout, pszFormat, arg_ptr);
va_end(arg_ptr);
- fflush(fileout);
}
}
@@ -406,11 +405,11 @@ vector<unsigned char> ParseHex(const char* psz)
while (isspace(*psz))
psz++;
char c = phexdigit[(unsigned char)*psz++];
- if (c == -1)
+ if (c == (char)-1)
break;
unsigned char n = (c << 4);
c = phexdigit[(unsigned char)*psz++];
- if (c == -1)
+ if (c == (char)-1)
break;
n |= c;
vch.push_back(n);