diff --git a/libtransmission/makemeta.c b/libtransmission/makemeta.c index e2db4d950..b5f14d911 100644 --- a/libtransmission/makemeta.c +++ b/libtransmission/makemeta.c @@ -379,9 +379,13 @@ tr_realMakeMetaInfo( tr_metainfo_builder * builder ) tr_benc top; /* allow an empty set, but if URLs *are* listed, verify them. #814, #971 */ - for( i = 0; i < builder->trackerCount && !builder->result; ++i ) - if( !tr_httpIsValidURL( builder->trackers[i].announce ) ) + for( i = 0; i < builder->trackerCount && !builder->result; ++i ) { + if( !tr_httpIsValidURL( builder->trackers[i].announce ) ) { + tr_strlcpy( builder->errfile, builder->trackers[i].announce, + sizeof( builder->errfile ) ); builder->result = TR_MAKEMETA_URL; + } + } tr_bencInitDict( &top, 6 ); @@ -506,7 +510,9 @@ tr_makeMetaInfo( tr_metainfo_builder * builder, /* initialize the builder variables */ builder->abortFlag = 0; + builder->result = 0; builder->isDone = 0; + builder->pieceIndex = 0; builder->trackerCount = trackerCount; builder->trackers = tr_new0( tr_tracker_info, builder->trackerCount ); for( i = 0; i < builder->trackerCount; ++i ) diff --git a/libtransmission/makemeta.h b/libtransmission/makemeta.h index f51e05eaa..abfad3017 100644 --- a/libtransmission/makemeta.h +++ b/libtransmission/makemeta.h @@ -74,7 +74,8 @@ typedef struct tr_metainfo_builder int isDone; tr_metainfo_builder_err result; - /* file in use when result was set to _IO_READ or _IO_WRITE */ + /* file in use when result was set to _IO_READ or _IO_WRITE, + * or the URL in use when the result was set to _URL */ char errfile[2048]; /* errno encountered when result was set to _IO_READ or _IO_WRITE */