# File lib/active_record/vendor/mysql.rb, line 1089
    def read()
      buf = []
      len = nil
      @sock.sync = false
      while len == nil or len == MAX_PACKET_LENGTH do
        a = @sock.read(4)
        len = a[0]+a[1]*256+a[2]*256*256
        pkt_nr = a[3]
        if @pkt_nr != pkt_nr then
          raise "Packets out of order: #{@pkt_nr}<>#{pkt_nr}"
        end
        @pkt_nr = @pkt_nr + 1 & 0xff
        buf << @sock.read(len)
      end
      @sock.sync = true
      buf.join
    rescue
      errno = Error::CR_SERVER_LOST 
      raise Error::new(errno, Error::err(errno)) 
    end