Fine grained locking

This commit is contained in:
Jakob Borg
2014-01-17 20:06:44 -07:00
parent fff50b5472
commit 4ac204b604
5 changed files with 213 additions and 117 deletions

View File

@@ -341,14 +341,15 @@ func (c *Connection) processRequest(msgID int, req request) {
c.Lock()
c.mwriter.writeUint32(encodeHeader(header{0, msgID, messageTypeResponse}))
c.mwriter.writeResponse(data)
err := c.flush()
err := c.mwriter.err
if err == nil {
err = c.flush()
}
c.Unlock()
buffers.Put(data)
if err != nil {
c.close(err)
} else if c.mwriter.err != nil {
c.close(c.mwriter.err)
}
}