function error_exit($msg = '') { if (DBG_LOG) { dbg_log(' ', '!err-' . clean_filename($msg)); } silent_exit(); echo bencode(array('failure reason' => str_compact($msg))); tracker_exit(); }
$sql .= " WHERE torrent_id = {$torrent_id} AND peer_id = '{$peer_id_sql}'"; $sql .= ' LIMIT 1'; if (!$db->sql_query($sql)) { error_exit('DB error', __FILE__, __LINE__, 'db'); } } else { $columns = 'torrent_id, peer_id, user_id, ip, port, uploaded, downloaded, complete_percent, seeder, releaser, last_stored_up, last_stored_down, stat_last_updated, speed_up, speed_down, update_time, expire_time'; $values = "{$torrent_id}, '{$peer_id_sql}', {$user_id}, '{$ip}', {$port}, {$uploaded}, {$downloaded}, {$complete_percent}, {$seeder}, {$releaser}, {$last_stored_up}, {$last_stored_down}, {$stat_last_updated}, {$speed_up}, {$speed_down}, {$current_time}, {$expire_time}"; $sql = 'INSERT INTO ' . BT_TRACKER_TABLE . " ({$columns}) VALUES ({$values})"; if (!$db->sql_query($sql)) { error_exit('DB error', __FILE__, __LINE__, 'db'); } } // Exit if event='stopped' if ($stopped) { silent_exit(); } // Retrieve peers $peers = $compact_mode ? '' : array(); $sel_peer_id = $compact_mode || $no_peer_id_mode ? '' : ', peer_id '; $sql = "SELECT ip, port {$sel_peer_id}\r\n\tFROM " . BT_TRACKER_TABLE . "\r\n\tWHERE torrent_id = {$torrent_id}\r\n\t\tAND expire_time > {$current_time}\r\n\tORDER BY RAND()\r\n\tLIMIT {$numwant}"; if (!($result = $db->sql_query($sql))) { error_exit('DB error', __FILE__, __LINE__, 'db'); } if ($rowset = @$db->sql_fetchrowset($result)) { if ($compact_mode) { foreach ($rowset as $i => $peer) { $peers .= pack('Nn', ip2long(decode_ip($peer['ip'])), $peer['port']); } } else { if ($no_peer_id_mode) {