seemoo-lab / opendrop

An open Apple AirDrop implementation written in Python
https://owlink.org
GNU General Public License v3.0
8.63k stars 273 forks source link

NoneType error macOS 14.4 #115

Open pjs7 opened 6 months ago

pjs7 commented 6 months ago

Error on Raspberry PI testing with macOS 14.4 (previously working on macOS 14.3.1):

Exception occurred during processing of request from ('fe80::3c29:5bff:feec:becb', 49472, 0, 5) Traceback (most recent call last): File "/usr/lib/python3.9/socketserver.py", line 316, in handle request noblock self.process_request(request, client_address) File "/usr/lib/python3.9/socketserver.py", line 347, in process_request self.finish_request(request, client_address) File "/usr/lib/python3.9/socketserver.py", line 360, in finish_request self.RequestHandlerClass(request, client address, self) File "/usr/lib/python3.9/socketserver.py", line 720, in init self.handle() File "/usr/lib/python3.9/http/server.py", line 427, in handle self.handle _one_request() File "/usr/lib/python3.9/http/server.py", line 415, in handle_one_request method() File "/usr/local/lib/python3.9/dist-packages/opendrop/server.py", line 326, in do_POST self.handle_discover() File "/usr/local/lib/python3.9/dist-packages/opendrop/server.py", line 166, in handle_discover content_length = int(self.headers["Content-Length"]) TypeError: int() argument must be a string, a bytes-like object or a number, not 'None Type'

vergenzt commented 6 months ago

Hey @pjs7! I encountered this same issue, and discovered that this happens because iOS seems to be sending its /Discover post bodies via Transfer-Encoding: chunked, which doesn't include a Content-Length header. Some WIP code to handle it is in a draft PR at #116