private function retransmit($now) { foreach($this->_transfers as $peer => $transfer) { $reply = $transfer->retransmit($now); if($reply !== false) { $this->log_debug($peer, "resend: " . TFTPServer::escape_string($reply)); stream_socket_sendto($this->_socket, $reply, 0, $peer); } if($transfer->state == TFTPTransferState::TERMINATING) unset($this->_transfers[$peer]); } }
function test($server_url, $name, $packet_pairs) { $timeout = 100000; $s = stream_socket_client($server_url, $errno, $errstr); if($s === false) { echo "FAILED\n"; echo "Socket failed: $errno: $errstr\n"; return false; } $step = 1; foreach($packet_pairs as $pair) { $send = $pair[0]; $expect = $pair[1]; if($send != null) stream_socket_sendto($s, $send); $read = array($s); stream_select($read, $write = null, $excpt = null, 0, $timeout); if(count($read) > 0) $result = stream_socket_recvfrom($s, 65535); else $result = null; if($result != $expect) { echo "FAILED at step $step\n"; echo "Send : " . TFTPServer::escape_string($send) . "\n"; echo "Expect: " . TFTPServer::escape_string($expect) . "\n"; echo "Result: " . TFTPServer::escape_string($result) . "\n"; return false; } $step++; } $read = array($s); stream_select($read, $write = null, $excpt = null, 0, $timeout); if(count($read) > 0) { $result = stream_socket_recvfrom($s, 65535); echo "FAILED\n"; echo "Got after end: " . TFTPServer::escape_string($result) . "\n"; return false; } fclose($s); return true; }