Merge pull request #1652 from bas-vk/autoreconnect

rpc/comms: reconnect ipc client after write error
This commit is contained in:
Jeffrey Wilcke 2015-08-19 13:29:51 -07:00
commit bd3a44cac9
1 changed files with 5 additions and 3 deletions

View File

@ -44,12 +44,14 @@ func (self *ipcClient) Close() {
func (self *ipcClient) Send(req interface{}) error {
var err error
if err = self.coder.WriteResponse(req); err != nil {
if _, ok := err.(*net.OpError); ok { // connection lost, retry once
if r, ok := req.(*shared.Request); ok {
if err = self.coder.WriteResponse(r); err != nil {
if err = self.reconnect(); err == nil {
err = self.coder.WriteResponse(req)
err = self.coder.WriteResponse(r)
}
}
return err
}
return err
}