URI: 
       t* Single-file diff that applies cleanly to Bitcoin 0.5.1. - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 0b26eb4cd7e30a88362caf54be95a1ea6f2c17c1
   DIR parent 9c5ed03fd5e23276e4dca425734caa034bdfb768
  HTML Author: Ovidiu Constantin <ovidiu@mybox.ro>
       Date:   Tue, 27 Dec 2011 23:59:54 +0200
       
       * Single-file diff that applies cleanly to Bitcoin 0.5.1.
       
       Diffstat:
         A server/patches/bitcoin-0.5.1.diff   |      82 +++++++++++++++++++++++++++++++
       
       1 file changed, 82 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/server/patches/bitcoin-0.5.1.diff b/server/patches/bitcoin-0.5.1.diff
       t@@ -0,0 +1,82 @@
       +diff -ur bitcoin-0.5.1/src/bitcoinrpc.cpp bitcoin-0.5.1-electrum/src/bitcoinrpc.cpp
       +--- bitcoin-0.5.1/src/bitcoinrpc.cpp        2011-12-13 22:56:26.000000000 +0200
       ++++ bitcoin-0.5.1-electrum/src/bitcoinrpc.cpp        2011-12-27 22:44:06.494789148 +0200
       +@@ -1362,7 +1362,43 @@
       +     return entry;
       + }
       + 
       ++Value importtransaction(const Array& params, bool fHelp)
       ++{
       ++  string hexdump;
       ++  if (fHelp || params.size() != 1 || (hexdump=params[0].get_str()).size()&1)
       ++    throw runtime_error(
       ++            "importtransaction <hexdata>\n"
       ++            "Import an offline transaction to announce it into the network");
       ++
       ++  std::vector<unsigned char> rawtx;
       ++  for (int i=0; i<hexdump.size(); i+=2)
       ++    {
       ++      int v;
       ++      if (sscanf(hexdump.substr(i,2).c_str(), "%x", &v)!=1)
       ++        throw JSONRPCError(-4, "Error in hex data.");
       ++      rawtx.push_back((unsigned char)v);
       ++    }
       ++try
       ++  {
       ++    CDataStream ss(rawtx);
       ++    CTransaction tx;
       ++    ss >> tx;
       ++    CInv inv(MSG_TX, tx.GetHash());
       ++    if(! tx.AcceptToMemoryPool(true)) throw JSONRPCError(-4, "Transaction not accepted to memory pool.");
       ++    CDataStream msg(rawtx);
       ++    RelayMessage(inv, msg);
       ++    return tx.GetHash().GetHex();
       ++  }
       ++ catch (std::exception& e)
       ++   {
       ++     throw JSONRPCError(-4, "Exception while parsing the transaction data.");
       ++   }
       ++
       ++}
       ++
       ++
       + 
       ++  
       + Value backupwallet(const Array& params, bool fHelp)
       + {
       +     if (fHelp || params.size() != 1)
       +@@ -1846,6 +1882,7 @@
       +     make_pair("settxfee",               &settxfee),
       +     make_pair("getmemorypool",          &getmemorypool),
       +     make_pair("listsinceblock",        &listsinceblock),
       ++    make_pair("importtransaction",      &importtransaction),
       + };
       + map<string, rpcfn_type> mapCallTable(pCallTable, pCallTable + sizeof(pCallTable)/sizeof(pCallTable[0]));
       + 
       +diff -ur bitcoin-0.5.1/src/main.cpp bitcoin-0.5.1-electrum/src/main.cpp
       +--- bitcoin-0.5.1/src/main.cpp        2011-12-13 22:56:26.000000000 +0200
       ++++ bitcoin-0.5.1-electrum/src/main.cpp        2011-12-27 22:44:18.714789152 +0200
       +@@ -2820,16 +2820,19 @@
       + 
       +             // Size limits
       +             unsigned int nTxSize = ::GetSerializeSize(tx, SER_NETWORK);
       +-            if (nBlockSize + nTxSize >= MAX_BLOCK_SIZE_GEN)
       +-                continue;
       ++            //if (nBlockSize + nTxSize >= MAX_BLOCK_SIZE_GEN)
       ++            //    continue;
       +             int nTxSigOps = tx.GetSigOpCount();
       +-            if (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS)
       +-                continue;
       ++            //if (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS)
       ++            //    continue;
       + 
       +             // Transaction fee required depends on block size
       +             bool fAllowFree = (nBlockSize + nTxSize < 4000 || CTransaction::AllowFree(dPriority));
       +             int64 nMinFee = tx.GetMinFee(nBlockSize, fAllowFree, true);
       + 
       ++            // electrum server: do not check fees
       ++            nMinFee = 0;
       ++
       +             // Connecting shouldn't fail due to dependency on other memory pool transactions
       +             // because we're already processing them in order of dependency
       +             map<uint256, CTxIndex> mapTestPoolTmp(mapTestPool);