Commit Graph

99 Commits

Author SHA1 Message Date
bmng-dev
0f9625aac7 Refactor packet header extraction and generation
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
2014-05-22 15:57:48 +00:00
antius
53a3d1635a Make addDataPadding method to avoid clutter. 2014-05-02 16:46:36 +02:00
Jonathan Warren
38d7db24ad Merge pull request #639 from bpeel/wip/trusted-peer
Add a 'trustedpeer' option to keys.dat
2014-04-30 17:42:28 -04:00
Jonathan Warren
22934441dc Fix #662 - 'PyBitmessage does not wait for verack' 2014-04-30 15:39:25 -04:00
Jonathan Warren
114ba4e23a slightly modify IPv6 modifications so that IPv4-only hosts properly handle v6 IPs 2014-04-27 18:05:43 -04:00
Neil Roberts
7da6ea958f Add support for IPv6
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.
2014-03-12 01:48:48 +00:00
Neil Roberts
03263156de Add a 'trustedpeer' option to keys.dat
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’.
2014-02-06 13:16:07 +00:00
Jonathan Warren
0de659a04a Ignore, and don't save to memory, messages larger than 20MB (temporary) 2014-02-05 02:45:10 -05:00
Jonathan Warren
61389b64aa fix #590 2013-12-29 22:36:23 -05:00
Jonathan Warren
45a0046e7d completed work on objectProcessorThread 2013-11-20 01:29:37 -05:00
Jonathan Warren
2a1b6dd86d some initial objectProcessorThread work 2013-11-13 22:44:42 -05:00
Jonathan Warren
a20711c2ab Fix whitelist functionality 2013-10-05 13:39:53 -04:00
Jonathan Warren
f5b92b2fa5 turn timing attack mitigation back on 2013-09-29 23:06:24 -04:00
Jonathan Warren
498928405b Chan fix: initial work completed 2013-09-29 19:24:27 -04:00
Jonathan Warren
02ea2a50d3 more v4 address work. Should be done. 2013-09-18 00:04:01 -04:00
Jonathan Warren
79f6169803 further v4 address work 2013-09-14 21:06:26 -04:00
Jonathan Warren
56168e82b5 most initial work on v4 pubkeys completed 2013-09-13 00:27:34 -04:00
Jonathan Warren
90e60d8145 delay addr messages random number of seconds 2013-09-09 19:26:32 -04:00
Jonathan Warren
f0bf3aad48 use locks when accessing dictionary inventory 2013-09-07 18:23:20 -04:00
Jonathan Warren
a9b15f83ba initial testing inv refactorization 2013-09-06 18:55:12 -04:00
Jonathan Warren
c06bbc14f8 Give user feedback when disk is full 2013-09-04 20:14:25 -04:00
Jonathan Warren
7ccdd14418 fix #474 2013-09-04 12:53:18 -04:00
Jonathan Warren
5fab298559 Refactor of the way PyBitmessage looks for interesting new objects in huge inv messages from peers 2013-09-03 22:45:45 -04:00
Jonathan Warren
6159d5e622 Show inventory lookup rate on Network Status tab 2013-09-03 18:08:29 -04:00
Grant T. Olson
92c1368691 use helper_sql in class_receiveDataThread 2013-08-29 08:03:05 -04:00
Jonathan Warren
1bb86794a8 undid support for receiving v4 addresses until more chanages are implemented 2013-08-26 15:23:12 -04:00
Jonathan Warren
82db79ca39 removed option from previous commit which allowed user-settable maximum network message size pending further discussion 2013-08-24 20:23:49 -04:00
Jonathan Warren
a5c65f11e8 resolve merge conflict 2013-08-24 20:18:46 -04:00
Jonathan Warren
0132db33dc show number of each message type processed in the API command clientStatus 2013-08-24 19:40:48 -04:00
Adam Fontenot
ef312c6e2c Updated several missed references to version 3 addresses 2013-08-15 04:26:14 -05:00
Bob Mottram
3063c256d4 Maximum message length configurable within keys.dat 2013-08-03 12:45:15 +01:00
Jonathan Warren
5c3bc63a1f Only allow 1 connection per IP 2013-08-01 12:16:31 -04:00
Gergö Barany
6b01e8aa33 Bug fixes in new peer handling. 2013-08-01 12:32:07 +02:00
nobody
d606bb1333 Fix: Distinguish peers by both IP address and port.
Until now many parts of the code assumed that IP addresses are
unique for peers. However, more than one Bitmessage instance might
be running with a given IP address due to multi-user systems or
firewalls.
2013-07-30 22:23:18 +02:00
Jonathan Warren
d036ca18ed Completed chan integration in the GUI 2013-07-22 01:10:22 -04:00
Gergö Barany
fc5da5d3ff Refactor type 2 message decoding, drop any extra lines from subject.
This allows other clients to insert headers in extra lines of text between
the Subject and Body fields of the message, as discussed on the 24x7 mailing
list. The PyBitmessage client was never able to meaningfully display
multi-line subjects, so this does not break anything. The extra lines are
thrown away and never stored anywhere, so this also protects against
watermarking attacks.
2013-07-12 12:16:34 +02:00
Jonathan Warren
21ce1f5a19 manual merge 2013-07-05 16:56:49 -04:00
Pedro Gimeno
55b899f5c1 Better fix for issue #183
The former patch was too local; this one integrates better with the structure of the code.
2013-07-02 17:43:54 +02:00
Jonathan Warren
2012096673 Merge branch 'master' of git://github.com/linkerlin/PyBitmessage into linkerlin-master 2013-07-01 15:51:55 -04:00
Pedro Gimeno
95a1afb84b Fix issue #183 (CPU 100% usage)
As per http://docs.python.org/2/howto/sockets.html#using-a-socket it's
possible that a socket recv() call returns 0 bytes if the remote closes
the connection. In that case, recv() does not obey settimeout(): it
just doesn't block and returns zero bytes immediately, which in this
case results in an infinite loop if the transmission was incomplete.
2013-07-01 07:36:22 +02:00
Linker Lin
4a84a30fc6 replace acquire lock by 'with' statement 2013-06-30 01:29:35 +08:00
Jonathan Warren
61ab0013aa added new variable: doTimingAttackMitigation 2013-06-24 17:29:15 -04:00
Jonathan Warren
3204c6b833 added new variable: doTimingAttackMitigation 2013-06-24 17:29:04 -04:00
Jonathan Warren
acb8b51e00 sock.sendall errors need-not go to stderr 2013-06-24 17:00:35 -04:00
Jonathan Warren
5a7d86cca9 Fix edge-case bug in possibleNewPubkey function 2013-06-24 16:57:19 -04:00
Jonathan Warren
c857f73d0b Continued moving code into individual modules 2013-06-24 15:51:01 -04:00
Jordan Hall
2eb6558cf1 Added a number of missing imports fixing several issues (thank you PyDev) 2013-06-23 20:52:39 +01:00
Jordan Hall
fe8998ca3a Seperating out all peer networking classes and merging with upstream 2013-06-22 00:49:50 +01:00
Jordan Hall
27a8662f22 Seperating class_singleListener, class_receiveDataThread, class_sendDataThread 2013-06-21 23:29:04 +01:00