New submission from Tim Tisdall:

All of the BTPROTO_ protocols accept tuples with Bluetooth addresses as regular 
strings.  SCO accepts a byte-string which represents a Bluetooth address.  The 
change was made at 23ab586c427a 

With the current implementation we get this error:

>>> import socket
>>> x = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_SEQPACKET, 
>>> socket.BTPROTO_SCO)
>>> x.bind(socket.BDADDR_ANY)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: getsockaddrarg: wrong format

This is because socket.BDADDR_ANY is a string while the bind() is expecting a 
binary string.  So the workaround would be to call 
x.bind(socket.BDADDR_ANY.encode()) .

Is it acceptable to change it to accept a regular string to match the other 
address methods and constants?  This would be essentially a breaking change, 
however on something that wasn't really documented prior to #24984 .

I'll submit a patch when the repo is back up...

----------
messages: 250316
nosy: Tim.Tisdall
priority: normal
severity: normal
status: open
title: bring BTPROTO_SCO inline with other Bluetooth protocols
type: enhancement
versions: Python 3.4, Python 3.5, Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25044>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to