MCPcopy
hub / github.com/go-sql-driver/mysql / connCheck

Function connCheck

conncheck.go:22–54  ·  view source on GitHub ↗
(conn net.Conn)

Source from the content-addressed store, hash-verified

20var errUnexpectedRead = errors.New("unexpected read from socket")
21
22func connCheck(conn net.Conn) error {
23 var sysErr error
24
25 sysConn, ok := conn.(syscall.Conn)
26 if !ok {
27 return nil
28 }
29 rawConn, err := sysConn.SyscallConn()
30 if err != nil {
31 return err
32 }
33
34 err = rawConn.Read(func(fd uintptr) bool {
35 var buf [1]byte
36 n, err := syscall.Read(int(fd), buf[:])
37 switch {
38 case n == 0 && err == nil:
39 sysErr = io.EOF
40 case n > 0:
41 sysErr = errUnexpectedRead
42 case err == syscall.EAGAIN || err == syscall.EWOULDBLOCK:
43 sysErr = nil
44 default:
45 sysErr = err
46 }
47 return true
48 })
49 if err != nil {
50 return err
51 }
52
53 return sysErr
54}

Callers 1

ResetSessionMethod · 0.70

Calls 1

ReadMethod · 0.45

Tested by

no test coverage detected