func (self *Conn) putVia(succ *common.Remote, key, value []byte, sync bool) { data := common.Item{ Key: key, Value: value, Sync: sync, } var x int if err := succ.Call("DHash.Put", data, &x); err != nil { self.removeNode(*succ) _, _, newSuccessor := self.ring.Remotes(key) *succ = *newSuccessor self.putVia(succ, key, value, sync) } }