From 194f45a3c3981749cc39a4613f6ef87d7324d568 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 22 Nov 2007 14:44:40 +0000 Subject: [PATCH] 2007-11-22 Tatsuhiro Tsujikawa Trim announce URL * src/DefaultBtContext.cc * test/ShaVisitorTest.cc Trim argument s. Give trimed s to exception constructor. * src/Util.cc (parseInt)(parseLLInt) * test/UtilTest.cc --- ChangeLog | 10 ++++++++++ TODO | 1 + src/DefaultBtContext.cc | 4 ++-- src/Util.cc | 18 ++++++++++-------- test/ShaVisitorTest.cc | 2 +- test/UtilTest.cc | 4 ++-- test/single.torrent | 2 +- test/test.torrent | 2 +- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 59f42794..3e271533 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-11-22 Tatsuhiro Tsujikawa + + Trim announce URL + * src/DefaultBtContext.cc + * test/ShaVisitorTest.cc + + Trim argument s. Give trimed s to exception constructor. + * src/Util.cc (parseInt)(parseLLInt) + * test/UtilTest.cc + 2007-11-22 Tatsuhiro Tsujikawa Set precision back to 1. diff --git a/TODO b/TODO index d29e7038..f6178774 100644 --- a/TODO +++ b/TODO @@ -54,6 +54,7 @@ DownloadFailureException .... RequestGroup should halt. FatalException .... Program should abort. * replace strtol with Util::parseInt +* do performance tuning against Xml2MetalinkProcessor -- remaining issues to be implemented for 0.12.0 release * Update translation diff --git a/src/DefaultBtContext.cc b/src/DefaultBtContext.cc index 9fda2358..c4af71b2 100644 --- a/src/DefaultBtContext.cc +++ b/src/DefaultBtContext.cc @@ -161,7 +161,7 @@ void DefaultBtContext::extractFileEntries(Dictionary* infoDic, void DefaultBtContext::extractAnnounce(Data* announceData) { Strings urls; - urls.push_back(announceData->toString()); + urls.push_back(Util::trim(announceData->toString())); announceTiers.push_back(AnnounceTierHandle(new AnnounceTier(urls))); } @@ -173,7 +173,7 @@ void DefaultBtContext::extractAnnounceList(List* announceListData) { for(MetaList::const_iterator elemItr = elem->getList().begin(); elemItr != elem->getList().end(); elemItr++) { const Data* data = (Data*)*elemItr; - urls.push_back(data->toString()); + urls.push_back(Util::trim(data->toString())); } if(urls.size()) { AnnounceTierHandle tier(new AnnounceTier(urls)); diff --git a/src/Util.cc b/src/Util.cc index d11a35e8..ab8568eb 100644 --- a/src/Util.cc +++ b/src/Util.cc @@ -462,38 +462,40 @@ void Util::unfoldRange(const string& src, Integers& range) { int32_t Util::parseInt(const string& s, int32_t base) { - if(s.empty()) { + string trimed = Util::trim(s); + if(trimed.empty()) { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, "empty string"); } char* stop; errno = 0; - long int v = strtol(s.c_str(), &stop, base); + long int v = strtol(trimed.c_str(), &stop, base); if(*stop != '\0') { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, - "illegal character"); + trimed.c_str()); } else if((v == LONG_MIN || v == LONG_MAX) && errno == ERANGE || v > INT32_MAX || v < INT32_MIN) { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, - "overflow/underflow"); + trimed.c_str()); } return v; } int64_t Util::parseLLInt(const string& s, int32_t base) { - if(s.empty()) { + string trimed = Util::trim(s); + if(trimed.empty()) { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, "empty string"); } char* stop; errno = 0; - int64_t v = strtoll(s.c_str(), &stop, base); + int64_t v = strtoll(trimed.c_str(), &stop, base); if(*stop != '\0') { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, - "illegal character"); + trimed.c_str()); } else if((v == INT64_MIN || v == INT64_MAX) && errno == ERANGE) { throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE, - "overflow/underflow"); + trimed.c_str()); } return v; } diff --git a/test/ShaVisitorTest.cc b/test/ShaVisitorTest.cc index 677a6c36..28fc4a00 100644 --- a/test/ShaVisitorTest.cc +++ b/test/ShaVisitorTest.cc @@ -57,6 +57,6 @@ void ShaVisitorTest::testVisitCompound() { int len = 0; v.getHash(md, len); string hashHex = hexHash(md, len); - CPPUNIT_ASSERT_EQUAL(string("36a58c6ab3eb02caa952f4345f57fabb06a39511"), + CPPUNIT_ASSERT_EQUAL(string("5a2bf55fb6ec71a9cd3e06537aa7795cafccffab"), hashHex); } diff --git a/test/UtilTest.cc b/test/UtilTest.cc index 188fad7f..7a92b9e7 100644 --- a/test/UtilTest.cc +++ b/test/UtilTest.cc @@ -514,7 +514,7 @@ void UtilTest::testParseIntRange_invalidRange() void UtilTest::testParseInt() { - CPPUNIT_ASSERT_EQUAL((int32_t)-1, Util::parseInt("-1")); + CPPUNIT_ASSERT_EQUAL((int32_t)-1, Util::parseInt(" -1 ")); CPPUNIT_ASSERT_EQUAL((int32_t)2147483647, Util::parseInt("2147483647")); try { Util::parseInt("2147483648"); @@ -548,7 +548,7 @@ void UtilTest::testParseInt() void UtilTest::testParseLLInt() { - CPPUNIT_ASSERT_EQUAL((int64_t)-1, Util::parseLLInt("-1")); + CPPUNIT_ASSERT_EQUAL((int64_t)-1, Util::parseLLInt(" -1 ")); CPPUNIT_ASSERT_EQUAL((int64_t)9223372036854775807LL, Util::parseLLInt("9223372036854775807")); try { diff --git a/test/single.torrent b/test/single.torrent index b9cd4b6e..6a7ea553 100644 --- a/test/single.torrent +++ b/test/single.torrent @@ -1 +1 @@ -d8:announce36:http://aria.rednoah.com/announce.php7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee \ No newline at end of file +d8:announce37:http://aria.rednoah.com/announce.php 7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee \ No newline at end of file diff --git a/test/test.torrent b/test/test.torrent index a41cd665..18c616b1 100644 --- a/test/test.torrent +++ b/test/test.torrent @@ -1 +1 @@ -d8:announce36:http://aria.rednoah.com/announce.php13:announce-listll15:http://tracker1el15:http://tracker2el15:http://tracker3ee7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod5:filesld6:lengthi284e4:pathl5:aria23:src6:aria2ceed6:lengthi100e4:pathl19:aria2-0.2.2.tar.bz2eee4:name10:aria2-test12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee \ No newline at end of file +d8:announce36:http://aria.rednoah.com/announce.php13:announce-listll16:http://tracker1 el15:http://tracker2el15:http://tracker3ee7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod5:filesld6:lengthi284e4:pathl5:aria23:src6:aria2ceed6:lengthi100e4:pathl19:aria2-0.2.2.tar.bz2eee4:name10:aria2-test12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee \ No newline at end of file