docs: def match_options(self, options):
          """This method takes a set of options, and tries to match them with
          its own. It can accept some changes in those options from the server as
          part of a negotiation. Changed or unchanged, it will return a dict of
          the options so that the session can update itself to the negotiated
          options."""
          for name in self.options:
              if name in options:
                  if name == 'blksize':
                      # We can accept anything between the min and max values.
                      size = int(self.options[name])
                      if size >= MIN_BLKSIZE and size <= MAX_BLKSIZE:
                          log.debug("negotiated blksize of %d bytes", size)
                          options['blksize'] = size
                      else:
                          raise TftpException("blksize %s option outside allowed range" % size)
                  elif name == 'tsize':
                      size = int(self.options[name])
                      if size < 0:
                          raise TftpException("Negative file sizes not supported")
                  else:
                      raise TftpException("Unsupported option: %s" % name)
          return True