示例#1
0
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();
}
示例#2
0
    $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) {