Use locale endoding else this generate error in GU : as default time format can have non ascii char on non english locale, but using ascii in locale can generate UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 :
In PyBitmessage/src/bitmessageqt/__init__.py"
l10n.formatTimestamp())
In PyBitmessage/src/l10n.py", line 81, in formatTimestamp
return unicode(timestring, encoding)
We already do this for the SIGINT kill signal. The change allows us to do a clean
shutdown of PyBitmessage when its process has been separated from the terminal.
Demote payloadLength from class instance variable to processData local variable as no other function was using it
Improve processData:
-Utilise shared.Header
-Use a memoryview to reduce memory overhead
-Clean up variables before a recursive call
-Strip null bytes from command
Refactor sendData
Various functions:
-Use shared.CreatePacket to generate packets
Fix typo in _checkIPv4Address
Refactored ackDataHasAVaildHeader:
-shared.Header is used as necessary
-avoided slicing wherever possible
-remove trailing null characters when comparing command strings
-don't calculate the checksum of a large payload
Added global variable Header - a compiled Struct to pack/unpack headers so as to avoid repeatedly compiling the same format string
Add a new method CreatePacket to simply and efficiently construct a packet that is ready to be sent
Modify assembleVersionMessage to use CreatePacket
pointMult is faster than the pure python arithmetic.privtopub
Additionally in makeCryptor the call to a.privtopub could have just simply be changed to call the local privToPub but then privkey would have been dehexified twice (once in makeCryptor, then again in privToPub) and privToPub would have hexified its result only for makeCryptor to immediately dehexify it. This sort of unnecessary hexifying/dehexifying seems to occur throughout PyBitmessage.
* Move global variable declaration to prevent warnings
* Fix Address Book and Subscriptions entry prepending
* Fix shared.fixPotentiallyInvalidUTF8Data() corrupting sent subjects and message bodies
+ Add code to delete address from Your Identities
+ Add code to load Sentbox, Subscriptions, and Blacklist
* Lengthen column width from 30 to 40 to better fit unlabeled addresses and long subject lines
* Fix row overflow support
* Reorder Dialog initialization to remove duplicate code
* Add reply argument to sendMessage()
* Add newline to Move to Trash message
* Replace Your Identities address copy option with an option to send a message
+ Add function ascii() to strip non-ASCII characters
+ Add Inbox, Send, and Address Book tabs support
+ Add Home and End key handling to allow skipping to the top or bottom of tables
+ Add sendMessage() function so replies are easier and code is not duplicated
+ Add screen clear before initial draw in order to get rid of the default background color
* Fix resetlookups() by allowing access to global inventorydata
* Shorten resetlookups() Timer to 1 second
* Fix table display when output requires scrolling
* Change table column width from 50 to 30
- Remove conditional naptime by using blocking input with 1 second timeout
- Remove stderr capturing for development purposes
+ Add stderr capturing
+ Add identities and network status tabs
+ Add dialogs to configure identities
+ Add color pair definitions
+ Add the '-c' flag to use the curses interface
* Reorganize imports
* Switch logger to file_only mode when running with curses
It will now listen on an IPv6 socket if possible or fall back to IPv4
if that doesn't work. It will no longer filter out all IPv6 addresses
and instead it will only filter out those that point to the local
network.
It looks like the DNS bootstrapping should just automatically work
because getaddrinfo already returns IPv6 addresses from the AAAA
record.
In order to convert from the ASCII representation of IPv6 addresses
and back we need inet_ntop and inet_pton. Python 2 doesn't currently
provide these for Windows so instead this patch provides a hot patch
to the socket module which wraps WSAStringToAddress and
WSAAddressToString using ctypes.
If this option is specified in keys.dat then Bitmessage will connect
to the host specified there instead of connecting to the hosts in the
list of known nodes. It will also stop listening for incoming
connections and the timing attack mitigation will be disabled.
The expected use case is for example where a user is running a daemon
on a dedicated machine in their local network and they occasionally
want to check for messages using a second instance of the client on
their laptop. In that case it would be much faster to catch up with
the messages by directly downloading from the dedicated machine over
the LAN. There is no need to connect to multiple peers or to do the
timing attack mitigation because the daemon is trusted.
The host is specified as hostname:port. Eg, ‘192.168.1.8:8444’.