Browse Source

Allow closing of hijacked connections

I think this is a regression introduced by c1922ab1.

Fixes #130.
Carl Jackson 11 years ago
parent
commit
1bd09ee690
2 changed files with 19 additions and 1 deletions
  1. +3
    -1
      graceful/listener/conn.go
  2. +16
    -0
      graceful/listener/conn_test.go

+ 3
- 1
graceful/listener/conn.go View File

@ -65,7 +65,9 @@ func (c *conn) Close() error {
c.mu.Lock()
defer c.mu.Unlock()
if c.closed || c.disowned {
if c.disowned {
return c.Conn.Close()
} else if c.closed {
return errClosing
}


+ 16
- 0
graceful/listener/conn_test.go View File

@ -90,6 +90,22 @@ func TestCloseConn(t *testing.T) {
}
}
// Regression test for issue #130.
func TestDisownedClose(t *testing.T) {
t.Parallel()
_, c, wc := singleConn(t, Deadline)
if err := Disown(wc); err != nil {
t.Fatalf("unexpected error disowning conn: %v", err)
}
if err := wc.Close(); err != nil {
t.Errorf("error closing connection: %v", err)
}
if !c.Closed() {
t.Errorf("connection didn't get closed")
}
}
func TestManualReadDeadline(t *testing.T) {
t.Parallel()
l, c, wc := singleConn(t, Manual)


Loading…
Cancel
Save