// Go MySQL Driver - A MySQL-Driver for Go's database/sql package
//
// Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at http://mozilla.org/MPL/2.0/.

//go:build linux || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || illumos
// +build linux darwin dragonfly freebsd netbsd openbsd solaris illumos

package mysql

import (
	
	
	
	
)

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

func connCheck( net.Conn) error {
	var  error

	,  := .(syscall.Conn)
	if ! {
		return nil
	}
	,  := .SyscallConn()
	if  != nil {
		return 
	}

	 = .Read(func( uintptr) bool {
		var  [1]byte
		,  := syscall.Read(int(), [:])
		switch {
		case  == 0 &&  == nil:
			 = io.EOF
		case  > 0:
			 = errUnexpectedRead
		case  == syscall.EAGAIN ||  == syscall.EWOULDBLOCK:
			 = nil
		default:
			 = 
		}
		return true
	})
	if  != nil {
		return 
	}

	return 
}