commit 0747827b3067eea950b8feaece8658b318d6d784
parent c718ff52b3ac436c40f6519848bb86a1f5d7dd97
Author: sin <sin@2f30.org>
Date: Sat, 26 Dec 2015 16:30:03 +0000
cleanup
Diffstat:
M | tracker.c | | | 40 | +++++++++++++++++++++------------------- |
1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/tracker.c b/tracker.c
@@ -103,14 +103,13 @@ getpeers(struct torrent *t)
return -1;
if (!(infohash = curl_easy_escape(curl, (char *)t->infohash, 20))) {
- curl_easy_cleanup(curl);
- return -1;
+ r = -1;
+ goto err0;
}
if (!(id = curl_easy_escape(curl, peerid(), 20))) {
- curl_free(infohash);
- curl_easy_cleanup(curl);
- return -1;
+ r = -1;
+ goto err1;
}
r = snprintf(buf, sizeof(buf),
@@ -118,29 +117,32 @@ getpeers(struct torrent *t)
"downloaded=0&left=%zu&compact=1&event=started",
t->announcers[0].urls[0], infohash, id, t->totallen);
if (r < 0 || (size_t)r >= sizeof(buf)) {
- curl_free(infohash);
- curl_free(id);
- curl_easy_cleanup(curl);
- return -1;
+ r = -1;
+ goto err2;
}
initbuf(&reply);
curl_easy_setopt(curl, CURLOPT_URL, buf);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefn);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &reply);
- if ((res = curl_easy_perform(curl)) == CURLE_OK) {
- if (parsepeers(t, &reply) < 0) {
- curl_free(infohash);
- curl_free(id);
- curl_easy_cleanup(curl);
- freebuf(&reply);
- return -1;
- }
+ if ((res = curl_easy_perform(curl)) != CURLE_OK) {
+ r = - 1;
+ goto err3;
}
- curl_free(infohash);
+ if (parsepeers(t, &reply) < 0) {
+ r = - 1;
+ goto err3;
+ }
+
+ r = 0;
+err3:
+ freebuf(&reply);
+err2:
curl_free(id);
+err1:
+ curl_free(infohash);
+err0:
curl_easy_cleanup(curl);
- freebuf(&reply);
return r;
}