ignore duplicate messages #692
|
@ -595,7 +595,7 @@ class objectProcessor(threading.Thread):
|
|||
if queryreturn == []:
|
||||
logger.info('Message ignored because address not in whitelist.')
|
||||
blockMessage = True
|
||||
if not blockMessage:
|
||||
|
||||
toLabel = shared.config.get(toAddress, 'label')
|
||||
if toLabel == '':
|
||||
toLabel = toAddress
|
||||
|
@ -608,9 +608,16 @@ class objectProcessor(threading.Thread):
|
|||
subject = ''
|
||||
elif messageEncodingType == 0:
|
||||
logger.info('messageEncodingType == 0. Doing nothing with the message. They probably just sent it so that we would store their public key or send their ack data for them.')
|
||||
subject = ''
|
||||
body = ''
|
||||
else:
|
||||
body = 'Unknown encoding type.\n\n' + repr(message)
|
||||
subject = ''
|
||||
# Let us make sure that we haven't already received this message
|
||||
if helper_inbox.isMessageAlreadyInInbox(toAddress, fromAddress, subject, body, messageEncodingType):
|
||||
logger.info('This msg is already in our inbox. Ignoring it.')
|
||||
blockMessage = True
|
||||
if not blockMessage:
|
||||
if messageEncodingType != 0:
|
||||
t = (inventoryHash, toAddress, fromAddress, subject, int(
|
||||
time.time()), body, 'inbox', messageEncodingType, 0)
|
||||
|
@ -808,7 +815,10 @@ class objectProcessor(threading.Thread):
|
|||
|
||||
toAddress = '[Broadcast subscribers]'
|
||||
if messageEncodingType != 0:
|
||||
|
||||
# Let us make sure that we haven't already received this message
|
||||
if helper_inbox.isMessageAlreadyInInbox(toAddress, fromAddress, subject, body, messageEncodingType):
|
||||
logger.info('This broadcast is already in our inbox. Ignoring it.')
|
||||
else:
|
||||
t = (inventoryHash, toAddress, fromAddress, subject, int(
|
||||
time.time()), body, 'inbox', messageEncodingType, 0)
|
||||
helper_inbox.insert(t)
|
||||
|
@ -953,7 +963,9 @@ class objectProcessor(threading.Thread):
|
|||
|
||||
toAddress = '[Broadcast subscribers]'
|
||||
if messageEncodingType != 0:
|
||||
|
||||
if helper_inbox.isMessageAlreadyInInbox(toAddress, fromAddress, subject, body, messageEncodingType):
|
||||
logger.info('This broadcast is already in our inbox. Ignoring it.')
|
||||
else:
|
||||
t = (inventoryHash, toAddress, fromAddress, subject, int(
|
||||
time.time()), body, 'inbox', messageEncodingType, 0)
|
||||
helper_inbox.insert(t)
|
||||
|
@ -1096,7 +1108,9 @@ class objectProcessor(threading.Thread):
|
|||
|
||||
toAddress = '[Broadcast subscribers]'
|
||||
if messageEncodingType != 0:
|
||||
|
||||
if helper_inbox.isMessageAlreadyInInbox(toAddress, fromAddress, subject, body, messageEncodingType):
|
||||
logger.info('This broadcast is already in our inbox. Ignoring it.')
|
||||
else:
|
||||
t = (inventoryHash, toAddress, fromAddress, subject, int(
|
||||
time.time()), body, 'inbox', messageEncodingType, 0)
|
||||
helper_inbox.insert(t)
|
||||
|
|
|
@ -9,3 +9,7 @@ def trash(msgid):
|
|||
sqlExecute('''UPDATE inbox SET folder='trash' WHERE msgid=?''', msgid)
|
||||
shared.UISignalQueue.put(('removeInboxRowByMsgid',msgid))
|
||||
|
||||
def isMessageAlreadyInInbox(toAddress, fromAddress, subject, body, encodingType):
|
||||
queryReturn = sqlQuery(
|
||||
'''SELECT COUNT(*) FROM inbox WHERE toaddress=? AND fromaddress=? AND subject=? AND message=? AND encodingtype=? ''', toAddress, fromAddress, subject, body, encodingType)
|
||||
return queryReturn[0][0] != 0
|
Reference in New Issue
Block a user