Ticket #2581: tracker-edit-rpc.patch

File tracker-edit-rpc.patch, 1.7 KB (added by Elbandi, 11 years ago)

implement the option 1

  • libtransmission/rpcimpl.c

    diff --git a/libtransmission/rpcimpl.c b/libtransmission/rpcimpl.c
    index 07c0cef..cd8f0c7 100644
    a b setFileDLs( tr_torrent * tor, 
    738738}
    739739
    740740static const char*
     741setTrackers( tr_torrent * tor, tr_benc * list )
     742{
     743    const char *         str;
     744    int                  i, tier, n = tr_bencListSize( list );
     745    int                  trackerCount = 0;
     746    tr_tracker_info *    trackers = tr_new0( tr_tracker_info, n );
     747
     748    for( i = tier = 0; i < n; ++i )
     749    {
     750        if( tr_bencGetStr( tr_bencListChild( list, i ), &str ) )
     751        {
     752            if( !*str )
     753                ++tier;
     754            else
     755            {
     756                trackers[trackerCount].tier = tier;
     757                trackers[trackerCount++].announce = tr_strdup( str );
     758            }
     759        }
     760    }
     761
     762    /* set the tracker list */
     763    if( tr_torrentSetAnnounceList( tor, trackers, trackerCount ) )
     764        str = "trackerlist contains invalid URLs";
     765    else
     766        str = NULL;
     767
     768    /* cleanup */
     769    for( i = 0; i < trackerCount; ++i )
     770        tr_free( trackers[i].announce );
     771    tr_free( trackers );
     772
     773    return str;
     774}
     775
     776static const char*
    741777torrentSet( tr_session               * session,
    742778            tr_benc                  * args_in,
    743779            tr_benc                  * args_out UNUSED,
    torrentSet( tr_session * session, 
    786822            tr_torrentSetRatioLimit( tor, d );
    787823        if( tr_bencDictFindInt( args_in, "seedRatioMode", &tmp ) )
    788824            tr_torrentSetRatioMode( tor, tmp );
     825        if( !errmsg && tr_bencDictFindList( args_in, "trackers", &files ) )
     826            errmsg = setTrackers( tor, files);
    789827        notify( session, TR_RPC_TORRENT_CHANGED, tor );
    790828    }
    791829