From 547788b1b0c6a27c24ba3bc4362aa93143dfea2c Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Tue, 17 Feb 2015 14:19:05 +0100
Subject: Added optional address slice. Closes #326

---
 rpc/args.go | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/rpc/args.go b/rpc/args.go
index 12e3103bc..9c2c7d7a6 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -1,6 +1,7 @@
 package rpc
 
 import "encoding/json"
+
 import "github.com/ethereum/go-ethereum/core"
 
 type GetBlockArgs struct {
@@ -203,7 +204,7 @@ func (obj *Sha3Args) UnmarshalJSON(b []byte) (err error) {
 type FilterOptions struct {
 	Earliest int64
 	Latest   int64
-	Address  string
+	Address  interface{}
 	Topic    []string
 	Skip     int
 	Max      int
@@ -211,9 +212,22 @@ type FilterOptions struct {
 
 func toFilterOptions(options *FilterOptions) core.FilterOptions {
 	var opts core.FilterOptions
+
+	// Convert optional address slice/string to byte slice
+	if str, ok := options.Address.(string); ok {
+		opts.Address = [][]byte{fromHex(str)}
+	} else if slice, ok := options.Address.([]interface{}); ok {
+		bslice := make([][]byte, len(slice))
+		for i, addr := range slice {
+			if saddr, ok := addr.(string); ok {
+				bslice[i] = fromHex(saddr)
+			}
+		}
+		opts.Address = bslice
+	}
+
 	opts.Earliest = options.Earliest
 	opts.Latest = options.Latest
-	opts.Address = fromHex(options.Address)
 	opts.Topics = make([][]byte, len(options.Topic))
 	for i, topic := range options.Topic {
 		opts.Topics[i] = fromHex(topic)
-- 
cgit v1.2.3