'The client sent us a new packet.  Respond to it.
RRQ is handled in the constructor sequence, basically.
This should handle everything else'

def handle_input(self, packet):

    io_loop = ioloop.IOLoop.instance()
    io_loop.remove_timeout(self.timeout)
    self.timeout = io_loop.add_timeout((time.time() + self.options['timeout']), (lambda : self.handle_timeout()))
    if (packet.opcode == TFTP_OPCODE_ACK):
        if (self.state == TFTP_OPCODE_DATA):
            if ((packet.block_number & 65535) == ((self.block_count + 1) & 65535)):
                self.block_count += 1
            self.state = TFTP_OPCODE_ACK
        elif (self.state == TFTP_OPCODE_OACK):
            self.state = TFTP_OPCODE_ACK
    elif (packet.opcode == TFTP_OPCODE_ERROR):
        logging.warn(('Error    from    clients    %s:    %d:%s' % (self.remote_addr, packet.error_code, packet.error_str)))
        self.state = 0
    else:
        logging.warn(('Unknown    opcode    from    clients    %s:    %ds' % (self.remote_addr, packet.opcode)))
        self.state = 0
