1
0
Fork 0

Merge pull request #13 from stbuehler/feature-half-close-interface

half-close all connections supporting `CloseWrite() error`
logger
Armon Dadgar 2016-09-02 11:38:53 -07:00 committed by GitHub
commit 770e040d1c
1 changed files with 5 additions and 1 deletions

View File

@ -340,11 +340,15 @@ func sendReply(w io.Writer, resp uint8, addr *AddrSpec) error {
return err return err
} }
type closeWriter interface {
CloseWrite() error
}
// proxy is used to suffle data from src to destination, and sends errors // proxy is used to suffle data from src to destination, and sends errors
// down a dedicated channel // down a dedicated channel
func proxy(dst io.Writer, src io.Reader, errCh chan error) { func proxy(dst io.Writer, src io.Reader, errCh chan error) {
_, err := io.Copy(dst, src) _, err := io.Copy(dst, src)
if tcpConn, ok := dst.(*net.TCPConn); ok { if tcpConn, ok := dst.(closeWriter); ok {
tcpConn.CloseWrite() tcpConn.CloseWrite()
} }
errCh <- err errCh <- err