Handle multiple POST messages

main
Bob Mottram 2025-09-26 23:07:46 +01:00
parent 6c4a05123e
commit ad8c3353cc
1 changed files with 90 additions and 86 deletions

View File

@ -1204,7 +1204,6 @@ def daemon_http_post(self) -> None:
self.end_headers() self.end_headers()
self.server.postreq_busy = False self.server.postreq_busy = False
return return
else:
if self.server.debug: if self.server.debug:
print('Failed to post to outbox') print('Failed to post to outbox')
self.send_response(403) self.send_response(403)
@ -1226,6 +1225,16 @@ def daemon_http_post(self) -> None:
self.server.postreq_busy = False self.server.postreq_busy = False
return return
# handle POST containing multiple messages
if isinstance(message_json, list):
message_list = message_json
else:
message_list = [message_json]
for message_json in message_list:
if not isinstance(message_json, dict):
continue
if self.path.endswith('/inbox') or \ if self.path.endswith('/inbox') or \
self.path == '/sharedInbox': self.path == '/sharedInbox':
if not inbox_message_has_params(message_json): if not inbox_message_has_params(message_json):
@ -1234,8 +1243,7 @@ def daemon_http_post(self) -> None:
"required parameters") "required parameters")
self.send_response(403) self.send_response(403)
self.end_headers() self.end_headers()
self.server.postreq_busy = False continue
return
fitness_performance(postreq_start_time, self.server.fitness, fitness_performance(postreq_start_time, self.server.fitness,
'_POST', 'inbox_message_has_params', '_POST', 'inbox_message_has_params',
@ -1250,8 +1258,7 @@ def daemon_http_post(self) -> None:
'header signature parameter') 'header signature parameter')
self.send_response(403) self.send_response(403)
self.end_headers() self.end_headers()
self.server.postreq_busy = False continue
return
fitness_performance(postreq_start_time, self.server.fitness, fitness_performance(postreq_start_time, self.server.fitness,
'_POST', 'keyId check', '_POST', 'keyId check',
@ -1266,8 +1273,7 @@ def daemon_http_post(self) -> None:
print('DEBUG: Ah Ah Ah') print('DEBUG: Ah Ah Ah')
self.send_response(403) self.send_response(403)
self.end_headers() self.end_headers()
self.server.postreq_busy = False continue
return
fitness_performance(postreq_start_time, self.server.fitness, fitness_performance(postreq_start_time, self.server.fitness,
'_POST', 'inbox_permitted_message', '_POST', 'inbox_permitted_message',
@ -1288,8 +1294,7 @@ def daemon_http_post(self) -> None:
message_json, message_bytes, message_json, message_bytes,
self.server.debug) self.server.debug)
if queue_status in range(0, 4): if queue_status in range(0, 4):
self.server.postreq_busy = False continue
return
if self.server.debug: if self.server.debug:
print('INBOX: update_inbox_queue exited ' + print('INBOX: update_inbox_queue exited ' +
'without doing anything') 'without doing anything')
@ -1298,8 +1303,7 @@ def daemon_http_post(self) -> None:
print('INBOX: self.post_to_nickname is None') print('INBOX: self.post_to_nickname is None')
self.send_response(403) self.send_response(403)
self.end_headers() self.end_headers()
self.server.postreq_busy = False continue
return
if self.path in ('/sharedInbox', '/inbox'): if self.path in ('/sharedInbox', '/inbox'):
if self.server.debug: if self.server.debug:
print('INBOX: POST to shared inbox') print('INBOX: POST to shared inbox')
@ -1308,7 +1312,7 @@ def daemon_http_post(self) -> None:
message_bytes, message_bytes,
self.server.debug) self.server.debug)
if queue_status in range(0, 4): if queue_status in range(0, 4):
self.server.postreq_busy = False continue
return
http_200(self) http_200(self)
self.server.postreq_busy = False self.server.postreq_busy = False