wpaspy: Convert to/from str to bytes as needed for python3
The control interface commands use mostly ASCII or UTF-8 strings, so convert input/output to strings/bytes as needed for the socket operations with python3. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
04fa9fc7fd
commit
3a833d95b3
1 changed files with 19 additions and 4 deletions
|
@ -52,7 +52,7 @@ class Ctrl:
|
||||||
break
|
break
|
||||||
self.s = socket.socket(af, socktype)
|
self.s = socket.socket(af, socktype)
|
||||||
self.s.settimeout(5)
|
self.s.settimeout(5)
|
||||||
self.s.sendto("GET_COOKIE", sockaddr)
|
self.s.sendto(b"GET_COOKIE", sockaddr)
|
||||||
reply, server = self.s.recvfrom(4096)
|
reply, server = self.s.recvfrom(4096)
|
||||||
self.cookie = reply
|
self.cookie = reply
|
||||||
self.port = port
|
self.port = port
|
||||||
|
@ -81,13 +81,24 @@ class Ctrl:
|
||||||
self.started = False
|
self.started = False
|
||||||
|
|
||||||
def request(self, cmd, timeout=10):
|
def request(self, cmd, timeout=10):
|
||||||
|
if type(cmd) == str:
|
||||||
|
try:
|
||||||
|
cmd2 = cmd.encode()
|
||||||
|
cmd = cmd2
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
pass
|
||||||
if self.udp:
|
if self.udp:
|
||||||
self.s.sendto(self.cookie + cmd, self.sockaddr)
|
self.s.sendto(self.cookie + cmd, self.sockaddr)
|
||||||
else:
|
else:
|
||||||
self.s.send(cmd)
|
self.s.send(cmd)
|
||||||
[r, w, e] = select.select([self.s], [], [], timeout)
|
[r, w, e] = select.select([self.s], [], [], timeout)
|
||||||
if r:
|
if r:
|
||||||
return self.s.recv(4096)
|
res = self.s.recv(4096).decode()
|
||||||
|
try:
|
||||||
|
r = str(res)
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
r = res
|
||||||
|
return r
|
||||||
raise Exception("Timeout on waiting response")
|
raise Exception("Timeout on waiting response")
|
||||||
|
|
||||||
def attach(self):
|
def attach(self):
|
||||||
|
@ -127,5 +138,9 @@ class Ctrl:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def recv(self):
|
def recv(self):
|
||||||
res = self.s.recv(4096)
|
res = self.s.recv(4096).decode()
|
||||||
return res
|
try:
|
||||||
|
r = str(res)
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
r = res
|
||||||
|
return r
|
||||||
|
|
Loading…
Reference in a new issue