{"push_id":590476386,"size":2,"distinct_size":2,"ref":"refs/heads/alternate-idle-reset-fix","head":"7a69d7f5f6db7d02a481b1feb7043186a1683371","before":"560e65bd42d76a19a3741c353ccacddf59c4dc1d","commits":[{"sha":"e895ea8dba61d371bfb036f765fc634f5b809997","author":{"email":"6fe6b8a05df7f9c8cc3eafd421a9b8433d86fa1d@redhat.com","name":"Andy Goldstein"},"message":"Don't try to read/write if connection is closed\n\nThere appears to be an issue on OS X where the following sequence of\nevents occurs, leading to a deadlock:\n\n1. Remote side closes its connection\n2. Local side receives io.EOF trying to read the next frame\n3. Local idleAwareFramer monitor goroutine exits, so nothing is\nreceiving from resetChan any more\n4. Code using spdystream isn't aware of the EOF and tries to Reset() all\nstreams and Close() the connection\n5. The attempt to write the stream reset frame does not return an error\nwhen it logically should\n6. The idleAwareFramer tries to send to the resetChan\n7. In some instances, resetChan's buffer is full (because the monitor\nisn't running any more)\n8. We block here\n\nTo address this, add checks at the beginning of ReadFrame and WriteFrame\nin idleAwareFramer to see if the connection's closeChan is closed. If\nso, immediately return an error instead of trying to read/write using\nthe underlying framer.\n\nAlso remove some timeouts in the test code - these should be handled by\npassing -test.timeout to the test executable instead.\n\nSigned-off-by: Andy Goldstein <agoldste@redhat.com>","distinct":true,"url":"https://api.github.com/repos/dmcgowan/spdystream/commits/e895ea8dba61d371bfb036f765fc634f5b809997"},{"sha":"7a69d7f5f6db7d02a481b1feb7043186a1683371","author":{"email":"e1c79a582b6629e6b39e9679f4bb964d25db4aa8@mcgstyle.net","name":"Derek McGowan"},"message":"Move write lock to framer and fix reset\n\nReset logic currently allows for writing to the reset chan after monitor has exited. Once monitor has detected a close, no more frames should be written.\n\nSigned-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)","distinct":true,"url":"https://api.github.com/repos/dmcgowan/spdystream/commits/7a69d7f5f6db7d02a481b1feb7043186a1683371"}]}