Skip to content

Commit d4c55a3

Browse files
committedMar 17, 2015
Add IPv6 support
1 parent fb3b24d commit d4c55a3

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed
 

Diff for: ‎server.py

+22-18
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,13 @@ def purgeOld():
130130

131131
sched.add_job(purgeOld, "interval", seconds=60, coalesce=True, max_instances=1)
132132

133+
133134
# Returns ping time in seconds (up), False (down), or None (error).
134-
def serverUp(address, port):
135+
def serverUp(info):
135136
try:
136-
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
137+
sock = socket.socket(info[0], info[1], info[2])
137138
sock.settimeout(3)
138-
sock.connect((address, port))
139+
sock.connect(info[4])
139140
buf = b"\x4f\x45\x74\x03\x00\x00\x00\x01"
140141
sock.send(buf)
141142
start = time.time()
@@ -225,26 +226,29 @@ def finishRequestAsync(server):
225226

226227

227228
def asyncFinishThread(server):
228-
if "address" in server and server["address"] != "":
229-
try:
230-
info = socket.getaddrinfo(server["address"], server["port"])
231-
except:
232-
app.logger.warning("Unable to get address info for %s." % (server["address"],))
233-
return
229+
checkAddress = False
230+
if not "address" in server or not server["address"]:
231+
server["address"] = server["ip"]
232+
else:
233+
checkAddress = True
234+
235+
try:
236+
info = socket.getaddrinfo(server["address"],
237+
server["port"],
238+
type=socket.SOCK_DGRAM,
239+
proto=socket.SOL_UDP)
240+
except socket.gaierror:
241+
app.logger.warning("Unable to get address info for %s." % (server["address"],))
242+
return
243+
244+
if checkAddress:
234245
addresses = set(data[4][0] for data in info)
235-
found = False
236-
for addr in addresses:
237-
if server["ip"] == addr:
238-
found = True
239-
break
240-
if not found:
246+
if not server["ip"] in addresses:
241247
app.logger.warning("Invalid IP %s for address %s (address valid for %s)."
242248
% (server["ip"], server["address"], addresses))
243249
return
244-
else:
245-
server["address"] = server["ip"]
246250

247-
server["ping"] = serverUp(server["address"], server["port"])
251+
server["ping"] = serverUp(info[0])
248252
if not server["ping"]:
249253
app.logger.warning("Server %s:%d has no ping."
250254
% (server["address"], server["port"]))

0 commit comments

Comments
 (0)
Please sign in to comment.