Exemplo n.º 1
0
  public function wrq($filename, $mode)
  {
    $this->log_debug("WRQ: filename $filename in $mode mode");

    if($this->state != TFTPTransferState::READY)
      return $this->illegal_operation("WRQ", "Not in ready state");

    if(!$this->_server->writable($this->peer, $filename))
      return $this->terminal_info(TFTPError::ACCESS_VIOLATION,
				  "File $filename is not writable");

    if($this->tsize != 0 && $this->tsize > $this->_server->max_put_size)
      return $this->terminal_info(TFTPError::DISK_FULL,
				  "File too big, " .
				  $this->tsize . "(tsize) > " .
				  $this->_server->max_put_size);

    $this->state = TFTPTransferState::RECEIVING;
    $this->_filename = $filename;
    $this->_mode = $mode;
    $this->_last_sent_ack = time();

    $this->log_debug("WRQ: ack request");
    if($this->use_extensions())
      return $this->packet_oack();
    else
      return TFTPServer::packet_ack(0);
  }