From a9959805e572ec438bf31ea97cb4a52e0e9715e9 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Thu, 9 Apr 2015 00:44:20 +0200
Subject: Removed from as a requirement and changed

Removed the from as a requiremet from the RPC eth_call. Xeth#Call now
also default values to:

1. Supplied account
2. First account if any
3. No managed account => 000000..00
---
 xeth/xeth.go | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'xeth')

diff --git a/xeth/xeth.go b/xeth/xeth.go
index 94014763a..407fe69d5 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -572,8 +572,20 @@ func (self *XEth) PushTx(encodedTx string) (string, error) {
 
 func (self *XEth) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) {
 	statedb := self.State().State() //self.eth.ChainManager().TransState()
+	var from *state.StateObject
+	if len(fromStr) == 0 {
+		accounts, err := self.backend.AccountManager().Accounts()
+		if err != nil || len(accounts) == 0 {
+			from = statedb.GetOrNewStateObject(common.Address{})
+		} else {
+			from = statedb.GetOrNewStateObject(common.BytesToAddress(accounts[0].Address))
+		}
+	} else {
+		from = statedb.GetOrNewStateObject(common.HexToAddress(fromStr))
+	}
+
 	msg := callmsg{
-		from:     statedb.GetOrNewStateObject(common.HexToAddress(fromStr)),
+		from:     from,
 		to:       common.HexToAddress(toStr),
 		gas:      common.Big(gasStr),
 		gasPrice: common.Big(gasPriceStr),
-- 
cgit v1.2.3