Handle exceptions on read

main
Bob Mottram 2020-06-23 15:25:03 +01:00
parent 9fa258dc79
commit 1a0fcf95e7
1 changed files with 159 additions and 1 deletions

160
daemon.py
View File

@ -12,6 +12,8 @@ import json
import time import time
import locale import locale
import urllib.parse import urllib.parse
from socket import error as SocketError
import errno
from functools import partial from functools import partial
import pyqrcode import pyqrcode
# for saving images # for saving images
@ -5575,6 +5577,13 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
postBytes = self.rfile.read(length) postBytes = self.rfile.read(length)
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST postBytes ' +
'connection reset by peer')
else:
print('WARN: POST postBytes socket error')
return None
except BaseException: except BaseException:
print('ERROR: POST postBytes rfile.read failed') print('ERROR: POST postBytes rfile.read failed')
return None return None
@ -5689,8 +5698,18 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
loginParams = self.rfile.read(length).decode('utf-8') loginParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST login read ' +
'connection reset by peer')
else:
print('WARN: POST login read socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST rfile.read failed') print('ERROR: POST login read failed')
self.send_response(400) self.send_response(400)
self.end_headers() self.end_headers()
self.server.POSTbusy = False self.server.POSTbusy = False
@ -5868,6 +5887,17 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
# read the bytes of the http form POST # read the bytes of the http form POST
postBytes = self.rfile.read(length) postBytes = self.rfile.read(length)
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: connection was reset while ' +
'reading bytes from http form POST')
else:
print('WARN: error while reading bytes ' +
'from http form POST')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: failed to read bytes for POST') print('ERROR: failed to read bytes for POST')
self.send_response(400) self.send_response(400)
@ -6461,6 +6491,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
moderationParams = self.rfile.read(length).decode('utf-8') moderationParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST moderationParams connection was reset')
else:
print('WARN: POST moderationParams ' +
'rfile.read socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST moderationParams rfile.read failed') print('ERROR: POST moderationParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -6631,6 +6671,15 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
questionParams = self.rfile.read(length).decode('utf-8') questionParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST questionParams connection was reset')
else:
print('WARN: POST questionParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST questionParams rfile.read failed') print('ERROR: POST questionParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -6689,6 +6738,15 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
searchParams = self.rfile.read(length).decode('utf-8') searchParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST searchParams connection was reset')
else:
print('WARN: POST searchParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST searchParams rfile.read failed') print('ERROR: POST searchParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -6894,6 +6952,16 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
removeShareConfirmParams = \ removeShareConfirmParams = \
self.rfile.read(length).decode('utf-8') self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST removeShareConfirmParams ' +
'connection was reset')
else:
print('WARN: POST removeShareConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST removeShareConfirmParams rfile.read failed') print('ERROR: POST removeShareConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -6942,6 +7010,16 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
removePostConfirmParams = \ removePostConfirmParams = \
self.rfile.read(length).decode('utf-8') self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST removePostConfirmParams ' +
'connection was reset')
else:
print('WARN: POST removePostConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST removePostConfirmParams rfile.read failed') print('ERROR: POST removePostConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7023,6 +7101,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
followConfirmParams = self.rfile.read(length).decode('utf-8') followConfirmParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST followConfirmParams ' +
'connection was reset')
else:
print('WARN: POST followConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST followConfirmParams rfile.read failed') print('ERROR: POST followConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7094,6 +7182,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
followConfirmParams = self.rfile.read(length).decode('utf-8') followConfirmParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST followConfirmParams ' +
'connection was reset')
else:
print('WARN: POST followConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST followConfirmParams rfile.read failed') print('ERROR: POST followConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7177,6 +7275,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
blockConfirmParams = self.rfile.read(length).decode('utf-8') blockConfirmParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST blockConfirmParams ' +
'connection was reset')
else:
print('WARN: POST blockConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST blockConfirmParams rfile.read failed') print('ERROR: POST blockConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7263,6 +7371,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
blockConfirmParams = self.rfile.read(length).decode('utf-8') blockConfirmParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST blockConfirmParams ' +
'connection was reset')
else:
print('WARN: POST blockConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST blockConfirmParams rfile.read failed') print('ERROR: POST blockConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7351,6 +7469,16 @@ class PubServer(BaseHTTPRequestHandler):
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
try: try:
optionsConfirmParams = self.rfile.read(length).decode('utf-8') optionsConfirmParams = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST optionsConfirmParams ' +
'connection reset by peer')
else:
print('WARN: POST optionsConfirmParams socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST optionsConfirmParams rfile.read failed') print('ERROR: POST optionsConfirmParams rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7681,6 +7809,16 @@ class PubServer(BaseHTTPRequestHandler):
return return
try: try:
mediaBytes = self.rfile.read(length) mediaBytes = self.rfile.read(length)
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST mediaBytes ' +
'connection reset by peer')
else:
print('WARN: POST mediaBytes socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST mediaBytes rfile.read failed') print('ERROR: POST mediaBytes rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7714,6 +7852,16 @@ class PubServer(BaseHTTPRequestHandler):
if length < self.server.maxPostLength: if length < self.server.maxPostLength:
try: try:
unknownPost = self.rfile.read(length).decode('utf-8') unknownPost = self.rfile.read(length).decode('utf-8')
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST unknownPost ' +
'connection reset by peer')
else:
print('WARN: POST unknownPost socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST unknownPost rfile.read failed') print('ERROR: POST unknownPost rfile.read failed')
self.send_response(400) self.send_response(400)
@ -7748,6 +7896,16 @@ class PubServer(BaseHTTPRequestHandler):
try: try:
messageBytes = self.rfile.read(length) messageBytes = self.rfile.read(length)
except SocketError as e:
if e.errno == errno.ECONNRESET:
print('WARN: POST messageBytes ' +
'connection reset by peer')
else:
print('WARN: POST messageBytes socket error')
self.send_response(400)
self.end_headers()
self.server.POSTbusy = False
return
except BaseException: except BaseException:
print('ERROR: POST messageBytes rfile.read failed') print('ERROR: POST messageBytes rfile.read failed')
self.send_response(400) self.send_response(400)