diff --git a/libtransmission/rpcimpl.c b/libtransmission/rpcimpl.c
index 07c0cef..cd8f0c7 100644
a
|
b
|
setFileDLs( tr_torrent * tor, |
738 | 738 | } |
739 | 739 | |
740 | 740 | static const char* |
| 741 | setTrackers( 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 | |
| 776 | static const char* |
741 | 777 | torrentSet( tr_session * session, |
742 | 778 | tr_benc * args_in, |
743 | 779 | tr_benc * args_out UNUSED, |
… |
… |
torrentSet( tr_session * session, |
786 | 822 | tr_torrentSetRatioLimit( tor, d ); |
787 | 823 | if( tr_bencDictFindInt( args_in, "seedRatioMode", &tmp ) ) |
788 | 824 | tr_torrentSetRatioMode( tor, tmp ); |
| 825 | if( !errmsg && tr_bencDictFindList( args_in, "trackers", &files ) ) |
| 826 | errmsg = setTrackers( tor, files); |
789 | 827 | notify( session, TR_RPC_TORRENT_CHANGED, tor ); |
790 | 828 | } |
791 | 829 | |