summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--btpd/btpd.c2
-rw-r--r--btpd/tracker_req.c11
2 files changed, 11 insertions, 2 deletions
diff --git a/btpd/btpd.c b/btpd/btpd.c
index f2b9c00..e3218a8 100644
--- a/btpd/btpd.c
+++ b/btpd/btpd.c
@@ -184,6 +184,7 @@ td_init(void)
     btpd_ev_add(&m_td_ev, NULL);
 }
 
+void tr_init(void);
 void ipc_init(void);
 
 void
@@ -201,6 +202,7 @@ btpd_init(void)
     ipc_init();
     ul_init();
     cm_init();
+    tr_init();
     tlib_init();
 
     signal(SIGPIPE, SIG_IGN);
diff --git a/btpd/tracker_req.c b/btpd/tracker_req.c
index 9195e08..fe31b2e 100644
--- a/btpd/tracker_req.c
+++ b/btpd/tracker_req.c
@@ -17,6 +17,7 @@ enum tr_event {
     TR_EV_EMPTY
 };
 
+static long m_key;
 static const char *m_events[] = { "started", "stopped", "completed", "" };
 
 enum timer_type {
@@ -237,9 +238,9 @@ tr_send(struct torrent *tp, enum tr_event event)
         snprintf(e_id + i * 3, 4, "%%%.2x", peer_id[i]);
 
     http_get(&tr->req, http_cb, tp,
-        "%s%cinfo_hash=%s&peer_id=%s&port=%d&uploaded=%llu"
+        "%s%cinfo_hash=%s&peer_id=%s&key=%ld&port=%d&uploaded=%llu"
         "&downloaded=%llu&left=%llu&compact=1%s%s",
-        get_url(tr), qc, e_hash, e_id, net_port,
+        get_url(tr), qc, e_hash, e_id, m_key, net_port,
         tp->net->uploaded, tp->net->downloaded,
         (long long)tp->total_length - cm_content(tp),
         event == TR_EV_EMPTY ? "" : "&event=", m_events[event]);
@@ -305,3 +306,9 @@ tr_errors(struct torrent *tp)
 {
     return tp->tr->nerrors;
 }
+
+void
+tr_init(void)
+{
+    m_key = random();
+}