func (conn *Conn) input() {
	err := conn.loop()
	conn.sending.Lock()
	defer conn.sending.Unlock()
	conn.mutex.Lock()
	defer conn.mutex.Unlock()

	if conn.closing || errors.Cause(err) == io.EOF {
		err = ErrShutdown
	} else {
		// Make the error available for Conn.Close to see.
		conn.inputLoopError = err
	}
	// Terminate all client requests.
	for _, call := range conn.clientPending {
		call.Error = err
		call.done()
	}
	conn.clientPending = nil
	conn.shutdown = true
	close(conn.dead)
}
// input reads messages from the connection and handles them
// appropriately.
input reads messages from the connection and handles them
appropriately.
// input reads messages from the connection and handles them // appropriately .
func (conn *Conn) input() {
	err := conn.loop()
	conn.sending.Lock()
	defer conn.sending.Unlock()
	conn.mutex.Lock()
	defer conn.mutex.Unlock()
	if conn.closing || errors.Cause(err) == io.EOF {
		err = ErrShutdown
	} else {
		conn.inputLoopError = err
	}
	for _, call := range conn.clientPending {
		call.Error = err
		call.done()
	}
	conn.clientPending = nil
	conn.shutdown = true
	close(conn.dead)
}
func ( conn * Conn ) input ( ) { err := conn . loop ( ) conn . sending . Lock ( ) defer conn . sending . Unlock ( ) conn . mutex . Lock ( ) defer conn . mutex . Unlock ( ) if conn . closing || errors . Cause ( err ) == io . EOF { err = ErrShutdown } else { conn . inputLoopError = err } for _ , call := range conn . clientPending { call . Error = err call . done ( ) } conn . clientPending = nil conn . shutdown = true close ( conn . dead ) }
input reads messages from the connection and handles them
appropriately.
input reads messages from the connection and handles them appropriately .
// Make the error available for Conn.Close to see. // Terminate all client requests.