Commit 4913fc07 by Ian Lance Taylor

net: don't fail test if splice fails because pipe2 is missing

    
    This reportedly happens on CentOS 5.11.  The real code will work fine;
    this test is assuming that the unexported slice function will handle
    the splice, but if pipe2 does not work then it doesn't.  The relevant
    code in internal/poll/splice_linux.go says "Falling back to pipe is
    possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when
    the connection is closed."
    
    Reviewed-on: https://go-review.googlesource.com/138838

From-SVN: r264793
parent 0036218b
53d0d7ca278a5612fcdb5fb098e7bf950a0178ef 098e36f4ddfcf50aeb34509b5f25b86d7050749c
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -11,7 +11,9 @@ import ( ...@@ -11,7 +11,9 @@ import (
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"os"
"sync" "sync"
"syscall"
"testing" "testing"
) )
...@@ -225,6 +227,10 @@ func testSpliceReaderAtEOF(t *testing.T) { ...@@ -225,6 +227,10 @@ func testSpliceReaderAtEOF(t *testing.T) {
serverUp.Close() serverUp.Close()
_, err, handled := splice(serverDown.(*TCPConn).fd, serverUp) _, err, handled := splice(serverDown.(*TCPConn).fd, serverUp)
if !handled { if !handled {
if serr, ok := err.(*os.SyscallError); ok && serr.Syscall == "pipe2" && serr.Err == syscall.ENOSYS {
t.Skip("pipe2 not supported")
}
t.Errorf("closed connection: got err = %v, handled = %t, want handled = true", err, handled) t.Errorf("closed connection: got err = %v, handled = %t, want handled = true", err, handled)
} }
lr := &io.LimitedReader{ lr := &io.LimitedReader{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment