Skip to content

Commit 1e9e1c8

Browse files
Fix incorrect switching to https when receiving BEP34 TCP preference (#304)
1 parent 69f5692 commit 1e9e1c8

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

newTrackon/tracker.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def update_status(self):
8686
self.to_be_deleted = True
8787
raise RuntimeError("Tracker unresponsive for too long, removed")
8888

89-
self.update_from_bep_34()
89+
self.update_scheme_from_bep_34()
9090
self.update_ips()
9191
except RuntimeError as reason:
9292
self.clear_tracker(reason=str(reason))
@@ -124,7 +124,7 @@ def update_status(self):
124124
self.interval = 10800
125125
self.update_uptime()
126126

127-
def update_from_bep_34(self):
127+
def update_scheme_from_bep_34(self):
128128
valid_bep_34, bep_34_info = scraper.get_bep_34(self.host)
129129
if valid_bep_34: # Hostname has a valid TXT record as per BEP34
130130
if not bep_34_info:
@@ -139,11 +139,14 @@ def update_from_bep_34(self):
139139
)
140140
parsed_url = parse.urlparse(self.url)
141141
# Update tracker with the first protocol and URL set by TXT record
142-
first_bep_34_result = bep_34_info[0]
143-
new_scheme = "https" if first_bep_34_result[0] == "tcp" else "udp"
142+
first_bep_34_protocol, first_bep_34_port = bep_34_info[0]
143+
existing_scheme = parsed_url.scheme
144+
new_scheme = (
145+
"udp" if first_bep_34_protocol == "udp" else existing_scheme
146+
)
144147
self.url = parsed_url._replace(
145148
scheme=new_scheme,
146-
netloc=f"{parsed_url.hostname}:{first_bep_34_result[1]}",
149+
netloc=f"{parsed_url.hostname}:{first_bep_34_port}",
147150
).geturl()
148151
return
149152
else: # No valid BEP34, attempting existing URL

newTrackon/trackon.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ def process_new_tracker(tracker_candidate: Tracker):
136136
def update_outdated_trackers():
137137
while True:
138138
now = int(time())
139-
trackers_outdated = []
139+
trackers_outdated: list[Tracker] = []
140140
for tracker in db.get_all_data():
141141
if (now - tracker.last_checked) > tracker.interval:
142142
trackers_outdated.append(tracker)

0 commit comments

Comments
 (0)