1
0
mirror of https://github.com/golang/go synced 2024-11-25 08:27:57 -07:00

Created new Conn.Flush() public method so the fd pipeline can be drained arbitrarily by the user.

Commented both flush methods so people know what they are looking at.

This is a necessary fix for streaming and long polling HTTP services.
Fixes #93.

R=r, rsc, david.titarenco
https://golang.org/cl/154099
This commit is contained in:
David Titarenco 2009-11-13 18:06:47 -08:00 committed by Russ Cox
parent 1eef6b0dd4
commit aebae2577a

View File

@ -238,7 +238,7 @@ func errorKludge(c *Conn, req *Request) {
} }
} }
func (c *Conn) flush() { func (c *Conn) finishRequest() {
if !c.wroteHeader { if !c.wroteHeader {
c.WriteHeader(StatusOK) c.WriteHeader(StatusOK)
} }
@ -251,6 +251,14 @@ func (c *Conn) flush() {
c.buf.Flush(); c.buf.Flush();
} }
// Flush sends any buffered data to the client.
func (c *Conn) Flush() {
if !c.wroteHeader {
c.WriteHeader(StatusOK)
}
c.buf.Flush();
}
// Close the connection. // Close the connection.
func (c *Conn) close() { func (c *Conn) close() {
if c.buf != nil { if c.buf != nil {
@ -277,7 +285,7 @@ func (c *Conn) serve() {
if c.hijacked { if c.hijacked {
return return
} }
c.flush(); c.finishRequest();
if c.closeAfterReply { if c.closeAfterReply {
break break
} }