more locks
This commit is contained in:
@@ -80,15 +80,14 @@ func (c *Connection) CallAsync(msg FrameType, payload []byte, ch chan<- FrameWit
|
||||
}
|
||||
go WaitForFrame(conn, ch)
|
||||
|
||||
toSend := MakeFrameWithPayload(msg, 1, payload)
|
||||
|
||||
err = SendFrame(conn, &toSend)
|
||||
if err != nil {
|
||||
log.Printf("Error sending frame: %v\n", err)
|
||||
close(ch)
|
||||
conn.Close()
|
||||
return nil, err
|
||||
}
|
||||
go func(toSend FrameWithPayload) {
|
||||
err = SendFrame(conn, &toSend)
|
||||
if err != nil {
|
||||
log.Printf("Error sending frame: %v\n", err)
|
||||
//close(ch)
|
||||
//conn.Close()
|
||||
}
|
||||
}(MakeFrameWithPayload(msg, 1, payload))
|
||||
|
||||
c.count++
|
||||
return conn, nil
|
||||
@@ -97,10 +96,13 @@ func (c *Connection) CallAsync(msg FrameType, payload []byte, ch chan<- FrameWit
|
||||
func (c *Connection) Call(msg FrameType, data []byte) (*FrameWithPayload, error) {
|
||||
ch := make(chan FrameWithPayload, 1)
|
||||
conn, err := c.CallAsync(msg, data, ch)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer conn.Close()
|
||||
|
||||
select {
|
||||
case ret := <-ch:
|
||||
return &ret, nil
|
||||
|
||||
Reference in New Issue
Block a user