Skip to content

Commit b2c03bc

Browse files
conncheck: move var declarations into closure (go-sql-driver#997)
1 parent d9aa6d3 commit b2c03bc

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed

conncheck.go

+22-21
Original file line numberDiff line numberDiff line change
@@ -19,35 +19,36 @@ import (
1919

2020
var errUnexpectedRead = errors.New("unexpected read from socket")
2121

22-
func connCheck(c net.Conn) error {
23-
var (
24-
n int
25-
err error
26-
buff [1]byte
27-
)
28-
29-
sconn, ok := c.(syscall.Conn)
22+
func connCheck(conn net.Conn) error {
23+
var sysErr error
24+
25+
sysConn, ok := conn.(syscall.Conn)
3026
if !ok {
3127
return nil
3228
}
33-
rc, err := sconn.SyscallConn()
29+
rawConn, err := sysConn.SyscallConn()
3430
if err != nil {
3531
return err
3632
}
37-
rerr := rc.Read(func(fd uintptr) bool {
38-
n, err = syscall.Read(int(fd), buff[:])
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+
}
3947
return true
4048
})
41-
switch {
42-
case rerr != nil:
43-
return rerr
44-
case n == 0 && err == nil:
45-
return io.EOF
46-
case n > 0:
47-
return errUnexpectedRead
48-
case err == syscall.EAGAIN || err == syscall.EWOULDBLOCK:
49-
return nil
50-
default:
49+
if err != nil {
5150
return err
5251
}
52+
53+
return sysErr
5354
}

conncheck_dummy.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ package mysql
1212

1313
import "net"
1414

15-
func connCheck(c net.Conn) error {
15+
func connCheck(conn net.Conn) error {
1616
return nil
1717
}

0 commit comments

Comments
 (0)