diff options
| -rw-r--r-- | discord/voice_client.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/discord/voice_client.py b/discord/voice_client.py index f2444130..da8eff3b 100644 --- a/discord/voice_client.py +++ b/discord/voice_client.py @@ -211,16 +211,16 @@ class VoiceClient: self.socket.sendto(packet, (self.endpoint_ip, self.voice_port)) recv = yield from self.loop.sock_recv(self.socket, 70) log.debug('received packet in initial_connection: {}'.format(recv)) - ip = [] - for x in range(4, len(recv)): - val = recv[x] - if val == 0: - break - ip.append(chr(val)) + # the ip is ascii starting at the 4th byte and ending at the first null + ip_start = 4 + ip_end = recv.index(0, ip_start) + self.ip = recv[ip_start:ip_end].decode('ascii') + + # the port is a little endian unsigned short in the last two bytes + # yes, this is different endianness from everything else + self.port = struct.unpack_from('<H', recv, len(recv) - 2)[0] - self.ip = ''.join(ip) - self.port = recv[len(recv) - 2] | recv[len(recv) - 1] << 8 log.debug('detected ip: {} port: {}'.format(self.ip, self.port)) payload = { |