Version 9986 includes:
- rebroadcast simple hearsay messages
- embargo simple hearsay messages
- more granular db write locking that should eliminate occasional slqite3.Programming error exceptions
- Pass broadcast message bytes straight through instead of recompiling them before rebroadcast
- Better handling of AT entries with empty addresses
- Fix erroneous references to 'logger' that should have been 'logging'
9986-rebroadcast-simple-hearsay-and-more.vpatch
9986-rebroadcast-simple-hearsay-and-more.vpatch.thimbronion.sig
Crashed with something about threadding:
$ Exception in thread Thread-1171:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 183, in send_rubbish
"body": self.infosec.gen_rubbish_body()
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/infosec.py", line 81, in message
for peer in self.state.get_keyed_peers():
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/state.py", line 246, in get_keyed_peers
peer_ids = self.listify(self.cursor.execute("select peer_id from keys").fetchall())
ProgrammingError: Recursive use of cursors not allowed.
Exception in thread Thread-6876:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 99, in check_embargo_queue
self.flush_hearsay_messages()
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 153, in flush_hearsay_messages
self.rebroadcast(message)
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 170, in rebroadcast
self.infosec.message(message)
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/infosec.py", line 70, in message
self.state.log(message.speaker, message_bytes, target_peer)
File "/home/Lambert/alcuin/blatta-9986/blatta/lib/state.py", line 128, in log
(handle, peer_id, buffer(message_bytes)))
ProgrammingError: Recursive use of cursors not allowed.
Traceback (most recent call last):
File "/home/awt/bin/blatta-dev", line 149, in
main(sys.argv)
File "/home/awt/bin/blatta-dev", line 144, in main
server.start()
File "/home/awt/src/blatta/lib/server.py", line 169, in start
self.station.handle_udp_data(bytes_address_pair)
File "/home/awt/src/blatta/lib/station.py", line 72, in handle_udp_data
self.conditionally_update_at(peer, message, address)
File "/home/awt/src/blatta/lib/station.py", line 163, in conditionally_update_at
"port": address[1]
File "/home/awt/src/blatta/lib/state.py", line 173, in update_at
(handle_id, peer["address"], peer["port"]))
sqlite3.DatabaseError: unknown error
Exception in thread Thread-31142:
Traceback (most recent call last):
File "/home/awt/.pyenv/versions/2.7.14/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/home/awt/.pyenv/versions/2.7.14/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/awt/src/blatta/lib/station.py", line 188, in send_rubbish
"body": self.infosec.gen_rubbish_body()
File "/home/awt/src/blatta/lib/infosec.py", line 63, in message
message_bytes = self.get_message_bytes(message, target_peer)
File "/home/awt/src/blatta/lib/infosec.py", line 110, in get_message_bytes
speaker = self._pad(message.speaker, MAX_SPEAKER_SIZE)
File "/home/awt/src/blatta/lib/infosec.py", line 263, in _pad
return text.ljust(size, "\x00")
AttributeError: 'NoneType' object has no attribute 'ljust'
I just noticed that in blatta/lib/server.py you "import sys" twice, you can probably take one of those out
PeterL, fixed in upcoming release, ty