From 0579304407e2b376eef7ef7b5b1a89ffe8295793 Mon Sep 17 00:00:00 2001 From: Kevin Lynx Date: Sun, 14 Jul 2013 15:33:46 +0800 Subject: [PATCH] change hash_reader read hash/wait_download using findAndModify, to avoid the read/delete two operations --- ebin/dhtcrawler.app | 2 +- ebin/hash_reader.beam | Bin 12476 -> 12432 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ebin/dhtcrawler.app b/ebin/dhtcrawler.app index f5914af..fa81c9c 100644 --- a/ebin/dhtcrawler.app +++ b/ebin/dhtcrawler.app @@ -1,6 +1,6 @@ {application,dhtcrawler, [{description,"A DHT crawler to index magnet hash to torrent"}, - {vsn,"d646309"}, + {vsn,"356a1c0"}, {registered,[dht_crawler_sup]}, {applications,[kernel,stdlib,crypto,public_key,ssl,inets,bson, mongodb]}, diff --git a/ebin/hash_reader.beam b/ebin/hash_reader.beam index 14e73dd1f6dbe81e32cbe9dea0a86267349ca4d0..4a66fdd7ab9ddc68d032ffb50e3a42e441f7d3b5 100644 GIT binary patch delta 7251 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 Q4%QylF4ipS9Us$w0j!+&)&Kwi delta 7310 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 KlG6hJO8y7DY~>dK