diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-04-17 14:15:36 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-04-17 14:15:36 +0000 |
| commit | dcc225a145aa784c85472e9618cd5fdf96a271b6 (patch) | |
| tree | 54459ad6e48e03a59e0ffc701b4fefdd144bff32 | |
| parent | 28a82bfa4ad7a3b905f00d023f7be7096a2f75d4 (diff) | |
* src/TrackerInitCommand.cc (TrackerInitCommand): Added a "key"
parameter to a tracker request.
* src/TorrentMan.cc (readFileEntryFromMetaInfoFile): Bug fix.
* src/TrackerWatcherCommand.cc (execute): Call
req->resetTryCount().
* src/main.cc (setSignalHander): New function.
(main): Added a handler for SIGTERM.
(handler): Updated message.
(torrentHandler): Updated message.
| -rw-r--r-- | ChangeLog | 15 | ||||
| -rw-r--r-- | TODO | 4 | ||||
| -rw-r--r-- | src/TorrentMan.cc | 6 | ||||
| -rw-r--r-- | src/TrackerInitCommand.cc | 3 | ||||
| -rw-r--r-- | src/TrackerWatcherCommand.cc | 1 | ||||
| -rw-r--r-- | src/main.cc | 40 |
6 files changed, 44 insertions, 25 deletions
@@ -1,3 +1,18 @@ +2006-04-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> + + * src/TrackerInitCommand.cc (TrackerInitCommand): Added a "key" + parameter to a tracker request. + + * src/TorrentMan.cc (readFileEntryFromMetaInfoFile): Bug fix. + + * src/TrackerWatcherCommand.cc (execute): Call req->resetTryCount(). + + * src/main.cc (setSignalHander): New function. + (main): Added a handler for SIGTERM. + (handler): Updated message. + (torrentHandler): Updated message. + + 2006-04-16 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> * src/TorrentConsoleDownloadEngine.cc @@ -13,11 +13,9 @@ * Distinguish seeder from leecher 0.4.0 release -* Add selective downloading mode * try to use ftruncate to allocate file. -* test all download mode * Add loggerfactory -* Add SIGTERM signal handler +* add log message when download completes 0.4.1 release * Add port command-line option diff --git a/src/TorrentMan.cc b/src/TorrentMan.cc index f076feb6..9c8f06a0 100644 --- a/src/TorrentMan.cc +++ b/src/TorrentMan.cc @@ -427,9 +427,11 @@ FileEntries TorrentMan::readFileEntryFromMetaInfoFile(const string& metaInfoFile Dictionary* topDic = (Dictionary*)MetaFileUtil::parseMetaFile(metaInfoFile); const Dictionary* infoDic = (const Dictionary*)topDic->get("info"); FileEntries fileEntries; - Directory* topDir; + Directory* topDir = NULL; readFileEntry(fileEntries, &topDir, infoDic, metaInfoFile); - delete topDir; + if(topDir != NULL) { + delete topDir; + } return fileEntries; } diff --git a/src/TrackerInitCommand.cc b/src/TrackerInitCommand.cc index 4f254c06..565077ce 100644 --- a/src/TrackerInitCommand.cc +++ b/src/TrackerInitCommand.cc @@ -61,7 +61,8 @@ bool TrackerInitCommand::execute() { "downloaded="+Util::llitos(e->torrentMan->getSessionDownloadLength())+"&"+ "left="+(e->torrentMan->getTotalLength()-e->torrentMan->getDownloadLength() <= 0 ? "0" : Util::llitos(e->torrentMan->getTotalLength()-e->torrentMan->getDownloadLength()))+"&"+ - "compact=1"; + "compact=1"+"&"+ + "key="+e->torrentMan->peerId; if(!event.empty()) { url += string("&")+"event="+event; } diff --git a/src/TrackerWatcherCommand.cc b/src/TrackerWatcherCommand.cc index 41b8b6ef..c14e71ee 100644 --- a/src/TrackerWatcherCommand.cc +++ b/src/TrackerWatcherCommand.cc @@ -30,6 +30,7 @@ TrackerWatcherCommand::TrackerWatcherCommand(int cuid, Request* req, TrackerWatcherCommand::~TrackerWatcherCommand() {} bool TrackerWatcherCommand::execute() { + req->resetTryCount(); Command* command = new TrackerInitCommand(e->torrentMan->getNewCuid(), req, e); diff --git a/src/main.cc b/src/main.cc index 03d2e58f..69fab73a 100644 --- a/src/main.cc +++ b/src/main.cc @@ -71,6 +71,14 @@ void printDownloadAbortMessage() { printf(_("\nThe download was not complete because of errors. Check the log.\n")); } +void setSignalHander(int signal, void (*handler)(int)) { + struct sigaction sigact; + sigact.sa_handler = handler; + sigact.sa_flags = 0; + sigemptyset(&sigact.sa_mask); + sigaction(signal, &sigact, NULL); +} + void clearRequest(Request* req) { delete(req); } @@ -79,16 +87,19 @@ DownloadEngine* e; TorrentDownloadEngine* te; void handler(int signal) { - cout << _("\nSIGINT signal received.") << endl; + printf(_("\nstopping application...\n")); + fflush(stdout); e->segmentMan->save(); if(e->diskWriter != NULL) { e->diskWriter->closeFile(); } + printf("done\n"); exit(0); } void torrentHandler(int signal) { - cout << _("\nSIGINT signal received.") << endl; + printf(_("\nstopping application...\n")); + fflush(stdout); if(te->torrentMan->diskAdaptor != NULL) { te->torrentMan->diskAdaptor->closeFile(); } @@ -99,7 +110,7 @@ void torrentHandler(int signal) { } else { te->torrentMan->save(); } - + printf("done\n"); exit(0); } @@ -533,21 +544,14 @@ int main(int argc, char* argv[]) { SegmentSplitter* splitter = new SplitSlowestSegmentSplitter(); splitter->setMinSegmentSize(op->getAsLLInt(PREF_MIN_SEGMENT_SIZE)); - struct sigaction sigactIgn; - sigactIgn.sa_handler = SIG_IGN; - sigactIgn.sa_flags = 0; - sigemptyset(&sigactIgn.sa_mask); - sigaction(SIGPIPE, &sigactIgn, NULL); + setSignalHander(SIGPIPE, SIG_IGN); bool readyToTorrentMode = false; string downloadedTorrentFile; if(torrentFile.empty()) { - struct sigaction sigact; - sigact.sa_handler = handler; - sigact.sa_flags = 0; - sigemptyset(&sigact.sa_mask); - sigaction(SIGINT, &sigact, NULL); - + setSignalHander(SIGINT, handler); + setSignalHander(SIGTERM, handler); + splitter->logger = logger; e = new ConsoleDownloadEngine(); e->logger = logger; @@ -590,11 +594,9 @@ int main(int argc, char* argv[]) { if(!torrentFile.empty() || followTorrent && readyToTorrentMode) { try { //op->put(PREF_MAX_TRIES, "0"); - struct sigaction sigact; - sigact.sa_handler = torrentHandler; - sigact.sa_flags = 0; - sigemptyset(&sigact.sa_mask); - sigaction(SIGINT, &sigact, NULL); + setSignalHander(SIGINT, torrentHandler); + setSignalHander(SIGTERM, torrentHandler); + Request* req = new Request(); req->isTorrent = true; req->setTrackerEvent(Request::STARTED); |
