Commit Graph

2478 Commits

Author SHA1 Message Date
coffeedogs e0d31d77c9
Fixed: Style and lint violations in src/bitmessagecli.py 2018-05-15 16:15:44 +01:00
Peter Šurda 7445665963
Merge branch '1228' into v0.6 2018-05-10 08:44:46 +02:00
fdemortain cafdff7f42
Update bitmessagecli.py 2018-05-09 14:09:42 +02:00
Peter Šurda 157590e0ee
Merge branch '1231' into v0.6 2018-05-09 14:08:11 +02:00
Peter Šurda 5d96a77a87
Merge branch '1233' into v0.6 2018-05-08 13:58:45 +02:00
coffeedogs 8979a1bef5
Fixed: Addressed PR comments 2018-05-08 12:53:58 +01:00
coffeedogs ed4a092c51
Removed: # nosec directives until further security review. 2018-05-08 12:13:49 +01:00
coffeedogs fe3a86d361
Fixed: Addressed PR comments 2018-05-07 11:50:51 +01:00
f97ada87 71d6fad242
pep8 fix
line length fixed by cleaning up an error message
2018-05-06 11:06:44 +00:00
f97ada87 bcaad3e0fb
fix issue 1236
fixes regression introduced in PR #1062 affecting default and minimum lengths of ackdata objects
2018-05-05 12:38:05 +00:00
coffeedogs c99c3fc782
Fixed: Codacy issues in src/class_*.py 2018-05-03 19:05:39 +01:00
NourEddine K. Yassine 0cd6e687c9
Fixed Typo that prevented bitmessagecurses from running! 2018-05-02 18:24:11 +02:00
coffeedogs dd1ee618a5
Fixed: Simple Codacy errors and warnings in src/helper_*
* Some local pickle operations and non-cryptographic random operations
were marked as safe to the bandit linter
 * A bandit config file was added and assert warnings are now ignored globally
 * Tightened up exception handling and code style
2018-05-02 15:52:47 +01:00
fdemortain ac297e8d33
Typos
l 563 : # Generate Address -> # Delete Address
l 1381 : determinstic -> deterministic
2018-05-02 09:37:57 +02:00
f97ada87 54651c7598
fix logic bug in enableGUI implementation 2018-04-13 20:16:00 +10:00
Peter Šurda bb433fc495
Merge branch '1216' into v0.6 2018-04-11 13:36:41 +02:00
Peter Šurda 4507464c56
Merge branch '1214' into v0.6 2018-04-11 13:19:53 +02:00
Peter Šurda 2de5fbe01a
Merge branch '1210' into v0.6 2018-04-10 13:47:25 +02:00
Mahendra Garg d81fb4b63e
Made changes while import prctl 2018-04-10 14:19:34 +05:30
Mahendra Garg a836d0a9af
Merge branch 'helper_threading_formating' of https://github.com/MahendraNG/PyBitmessage into helper_threading_formating 2018-04-10 13:25:37 +05:30
Mahendra Garg 6bce912a81
Fix undefined streamNumber bug 2018-04-10 12:44:32 +05:30
Peter Šurda c76074df8c
Merge branch '1211' into v0.6 2018-04-10 08:16:56 +02:00
Peter Šurda 32ab6aaae5
Merge branch '1208' into v0.6 2018-04-10 08:12:25 +02:00
f97ada87 cb59b8abbd
component control switches 2018-04-09 15:03:02 +10:00
Mahendra 4840b2db5c
add docstring for sqlQuery and sqlBulkExecute methrod in helper_sql and removed query method of sqlBulkExecute class 2018-04-07 19:20:29 +05:30
Mahendra 5efb491349
add docstring for set_thread methrod in helper_msgcoding 2018-04-07 18:42:21 +05:30
Mahendra f71f895a11
helper_inbox formating 2018-04-07 16:11:24 +05:30
Mahendra e6e4c66010
helper_threading formating 2018-04-07 15:14:43 +05:30
Mahendra a3dff6200e
helper_search formating 2018-04-07 14:10:50 +05:30
Mahendra a012d4a707
helper_startup formating 2018-04-07 13:35:31 +05:30
Mahendra 498557a6d6
Removed unused variable queryreturn from helper_sql 2018-04-07 13:18:58 +05:30
Mahendra 21922251e2
helper_sql formating 2018-04-07 12:59:09 +05:30
Peter Šurda 62e80e9ca7
Merge branch '1206' into v0.6 2018-04-06 22:51:10 +02:00
Mahendra 5a2bac7e8c
Remove codacy error for docstring and reimport logger in helper_generic file 2018-04-06 19:09:56 +05:30
Mahendra 7052c734bd
Add log for thread error on helper_generic file
- Remove if condition for RegExParser
2018-04-06 19:00:32 +05:30
Mahendra c0036d8c18
Add docstring in helper_generic.py 2018-04-06 18:33:30 +05:30
Mahendra ed26782114
Add docstring in helper_ackPayload 2018-04-06 18:12:57 +05:30
Mahendra 442fe81e3a
helper_generic.py formating 2018-04-06 17:50:55 +05:30
Mahendra a70b063004
helper_ackPayload formating 2018-04-06 16:21:29 +05:30
Dmitri Bogomolov 43a471a79b
Used state.testmode to indicate when operating in test mode 2018-04-05 13:48:13 +03:00
Peter Šurda 54c37150e0
Shutdown fixes
- tell sql thread to finish only after the other threads finished
- prevents other threads stalling on sql replies
2018-04-05 12:36:02 +02:00
Peter Šurda 12117ada99
Add docstring 2018-04-03 19:24:10 +02:00
Peter Šurda ca7becb921
Download fixes
- in corner cases, download request could have contained an incorrect
  request length. I haven't actually checked if this can be triggered
  though
- wait for downloading until anti intersection delay expires. Doesn't
  necessarily mean that it will always avoid peer's anti intersection
  delay, but it's close enough
- tracks last time an object was received. If it was too long time ago,
  reset the download request queue. This avoid situations like when a
  request gets ignored during the anti intersection delay, but it will
  keep thinking there are still pending requests as long as not all
  missing objects have been requested. This caused staggered download
  (request 1000 items, wait 1 minute, request 1000 more, wait another
  minute, ...)
- with these fixes, you should end up downloading as fast as your
  network and CPU allow
- best tested with trustedpeer
2018-04-03 19:24:07 +02:00
Dmitri Bogomolov 6eb2155497
Another unicode -> str bug (#1194) 2018-04-03 15:11:46 +03:00
Peter Šurda 5e0e1c09b3
Merge branch '1197' into upstream-v0.6 2018-04-02 17:39:28 +02:00
Peter Šurda 0c9cb4824d
Memory leak (kind of) fix
- objectsKnownToThem is supposed to track if it's necessary to send inv
  commands to a peer
- it is supposed to enter garbage collection after 1 hour
  (ObjectTracker.trackingExpires)
- due to peer not announcing all objects, or announcing them before we
  announce, this contains excessive number of entries after connection
  is fully established.
- profiling revealed that this creates unnecessary memory to be kept
  allocated
- this patch will prevent tracking of entries sent during bigInv,
  reducing the memory "leak"
- it is possible, in theory, that this does have some negative effect,
  like increased bandwidth or neglecting to announce some invs. It
  probably doesn't though as my review of objectsKnownToThem occurrences
  didn't reveal any such case, and since the dict didn't track fully
  accurately anyway (so it would have already been broken if it was a
  problem), I consider it an acceptable risk at the moment. If it indeed
  causes problems, they can be solved separately
- I tested this on one of the bootstrap servers with little memory, and
  it increased the number of connections than can be handled by a factor
  of about 3.5
2018-04-01 11:39:02 +02:00
Dmitri Bogomolov 58c3dfb3d4
Testing mode for bitmessagemain 2018-03-29 15:55:28 +03:00
Dmitri Bogomolov 2268413cd0
Do not try to connect namecoin if dontconnect set in config (#1146) 2018-03-26 16:47:22 +03:00
Peter Šurda 73ebad4a4e
Merge branch '1179' into upstream-v0.6 2018-03-24 09:43:11 +01:00
Peter Šurda 6430ea7fe6
Merge branch '1171' into upstream-v0.6 2018-03-24 09:40:35 +01:00
Dmitri Bogomolov cec8519e43
Added "apiinterface" and "apiport" to BMConfigDefaults 2018-03-22 17:50:26 +02:00
Peter Šurda 55d6239e3d
Merge branch '952' into upstream-v0.6 2018-03-22 16:16:24 +01:00
Dmitri Bogomolov d974065f8e
Handle exceptions from python without ipv6 support 2018-03-22 17:13:34 +02:00
Peter Šurda d7ac440a04
Merge branch '1172' into upstream-v0.6 2018-03-22 16:12:53 +01:00
Dmitri Bogomolov 9ccd3a0989
Prevent settingsDialog from setting dontconnect = false
if "Work offline" was checked in the ConnectDialog
2018-03-22 17:10:29 +02:00
Dmitri Bogomolov 6cefaf87e9
Module foldertree: changed subclassing order to reuse common code 2018-03-22 14:55:30 +02:00
Dmitri Bogomolov 90eca36b5d
Module foldertree: simplified a bit and did flake8 2018-03-22 14:55:25 +02:00
Dmitri Bogomolov 6562502416
Even more unused variables 2018-03-22 13:48:07 +02:00
Dmitri Bogomolov e43bd36618
More unused variables 2018-03-22 13:23:36 +02:00
Dmitri Bogomolov d91c3a6b0c
Removed unnecessary comment and percent formatting in logger.error 2018-03-22 12:13:47 +02:00
Dmitri Bogomolov d447db907c
Address operations: simplified the code a bit 2018-03-22 12:13:47 +02:00
Dmitri Bogomolov 006b98389b
Address operations: flake8 2018-03-22 12:13:47 +02:00
Peter Šurda cbb228db8b
Merge branch '1180' into upstream-v0.6 2018-03-22 11:08:51 +01:00
Mahendra 8d48164734
fix indentation error in dependency file 2018-03-22 15:27:37 +05:30
Peter Šurda 5721ca53fd
Merge branch '1174' into upstream-v0.6 2018-03-22 08:31:25 +01:00
Mahendra 1a36361ef9
replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
Peter Šurda d7cd294eb4
Merge branch '1173' into upstream-v0.6 2018-03-21 14:14:08 +01:00
Mahendra 6076e1832a
implement more helper random changes with replace random.xxx 2018-03-21 18:19:08 +05:30
Peter Šurda f3960c1638
Merge branch '1170' into upstream-v0.6 2018-03-21 13:08:10 +01:00
Mahendra 1ad321b08a
replace random.xxx with calls to the helper_random function 2018-03-21 17:22:23 +05:30
Peter Šurda 08888117af
Merge branch '1169' into upstream-v0.6 2018-03-21 11:57:15 +01:00
Mahendra 48b8af975a
added random(sample, shuffle, randrange) methods in helper_random 2018-03-21 16:13:43 +05:30
Mahendra ee7b591c6c
added docstring for requirement dependency 2018-03-21 15:47:55 +05:30
Dmitri Bogomolov 72299483c4
Do not duplicate avatar in address column of Address book 2018-03-14 16:34:03 +02:00
Peter Šurda 1e037024c3
Merge branch '1156' into upstream-v0.6 2018-03-14 13:59:40 +01:00
Peter Šurda 9bd60c4a0f
Merge branch '1153' into upstream-v0.6 2018-03-14 13:59:21 +01:00
Dmitri Bogomolov 50b74c2223
No lib symlinks in openwrt 2018-03-14 12:56:23 +02:00
Dmitri Bogomolov 0ef0e6b020
Added docstrings. Removed unused method Image.save(). 2018-03-14 08:57:51 +02:00
Dmitri Bogomolov 0ddc56e83a
Added schema 'bitmessage:', it's unreadable otherwise for some reason 2018-03-14 08:57:20 +02:00
PyBitmessage Translations f9c66956c5
Auto-updated language ja from transifex 2018-03-13 16:15:59 +01:00
Dmitri Bogomolov 3850a920c9
Do not add gui.menu plugins with prefix 'address' to "All accounts" item 2018-03-13 13:46:47 +02:00
Dmitri Bogomolov 08a2115412
Properly renamed qrcode plugin module and made menu available
for all address entries except for addressbook and blacklist
2018-03-13 13:46:47 +02:00
Dmitri Bogomolov 77e779638c
Removed unnecessary code in qrcode plugin 2018-03-13 13:46:47 +02:00
Peter Šurda 4b995e7996
Fix circular import
- previous commit broke
2018-03-13 11:42:43 +01:00
Peter Šurda af2bb95601
Remove unused imports 2018-03-13 07:41:59 +01:00
Peter Šurda 1e4400a207
Remove obsolete code
- PendingDownload and PendingUpload in inventory.py are obsolete
- the replacement functions only provide lengths and are in
  network/stats.py
2018-03-13 07:32:23 +01:00
Peter Šurda 7938eab454
Remove obsolete files 2018-03-11 20:38:58 +01:00
Peter Šurda 0da0c10995
Socks5 parsing fix
- Fixes #1134
- Came over BM, thank you kind stranger
2018-02-26 20:04:57 +01:00
Peter Šurda 140265621f
UPnP parser fix
- Fixes #1131
- Came over BM, thank you kind stranger
2018-02-26 20:03:35 +01:00
Peter Šurda 1184b23223
Separate protocol processing exceptions
- exceptions thrown by the state methods are separated from missing
  connections or states. This allows more accurate error reporting
2018-02-19 21:27:38 +01:00
Peter Šurda fde194f9b0
More messagetypes hardening
- only load modules at program start
2018-02-19 16:57:47 +01:00
Peter Šurda 757740369b
Add proxy authentication
- proxy module was missing initialisation of authentication
2018-02-18 20:53:16 +01:00
Peter Šurda ff9634141e
Merge branch '1127' into v0.6 2018-02-18 20:35:16 +01:00
Peter Šurda d25a821b1d
Merge branch '1128' into v0.6 2018-02-18 20:34:59 +01:00
Peter Šurda c8ea8662a5
Merge branch '1141' into v0.6 2018-02-18 20:34:03 +01:00
Peter Šurda 99f51fd94c
Merge branch '1137' into v0.6 2018-02-18 20:33:28 +01:00
Peter Šurda 07149c73c8
Get rid of evals
- eval is evil. Get rid of the remaining evals. They were not assessed
  as dangerous but it's matter of policy now.
2018-02-18 20:14:21 +01:00
Peter Šurda 616920e21a
Minor UI fixes
- typo in UTF conversion
- update status message correct matching (does not show all messages as
changed status, for example)
- add newly sent messages to global sent folder if selected
2018-02-18 19:39:26 +01:00
PyBitmessage Translations dbedd4a193
Auto-updated language fr from transifex 2018-02-18 11:23:13 +01:00
Dmitri Bogomolov a3436fef9c
Quick fix for refactoring artifact in blacklist module (#1138) 2018-02-17 14:36:09 +02:00
PyBitmessage Translations d09900def7
Auto-updated language zh_cn from transifex 2018-02-16 14:33:10 +01:00
Peter Šurda 634a49cd6d
Bump version 2018-02-14 00:23:47 +01:00
Peter Šurda c050ef0814
Messagetype attack mitigation
- temporarily restrict messagetypes
- use a new "Contact support" address
2018-02-13 23:33:12 +01:00
PyBitmessage Translations 5b5f254be0
Auto-updated language pl from transifex 2018-02-13 18:54:07 +01:00
PyBitmessage Translations e2374cac0a
Auto-updated language eo from transifex 2018-02-13 18:41:10 +01:00
Peter Šurda 4cd36ececc
Bump version 2018-02-13 17:16:20 +01:00
Peter Šurda 3a8016d31f
Fix message encoding bug
- prevent loading invalid message types
2018-02-13 16:39:35 +01:00
Peter Šurda 96ea36cfd2
UPnP client port randomize 2018-02-13 16:11:53 +01:00
Peter Šurda f9a648d720
Message decoding exception handler fix
- was unfinished and caused the object processor thread to crash
2018-02-13 13:24:37 +01:00
Dmitri Bogomolov 3ad94cb4aa
Translate namecoin failure message 2018-02-13 11:55:38 +02:00
Dmitri Bogomolov 8b932ade2d
No "getinfo" in modern namecoind - try "getnetworkinfo" 2018-02-13 11:55:37 +02:00
PyBitmessage Translations 4ba5702cc2
Auto-updated language ru from transifex 2018-02-12 22:31:54 +01:00
PyBitmessage Translations e5428ee064
Auto-updated language de from transifex 2018-02-12 21:50:45 +01:00
PyBitmessage Translations 022ee09177
Auto-updated language sk from transifex 2018-02-12 21:33:30 +01:00
Dmitri Bogomolov 6bcbad63b9
Marked folder names for translation 2018-02-12 21:10:10 +02:00
Peter Šurda eb97face61
Show traceback in protocol parser error handler 2018-02-12 17:07:54 +01:00
Peter Šurda 2bc2b6bc5b
Typo 2018-02-12 14:49:43 +01:00
Peter Šurda eefc967737
Pluralisation 2018-02-12 14:10:51 +01:00
Peter Šurda a69daa13b9
Pluralisation 2018-02-12 13:48:59 +01:00
Peter Šurda cf8ed36240
Windows Qt refactoring fix 2018-02-09 11:11:48 +01:00
Peter Šurda 066b419e16
Bugfixes
- typo in dandelion
- stealth ackdata fix for broadcasts and mailing lists
2018-02-09 00:49:08 +01:00
Dmitri Bogomolov bbb5e5d99b
Fixed trailing '>' in message view which appeared after HTLM rendering 2018-02-08 12:58:38 +02:00
Peter Šurda f870bcc6f7
More lightweight URI regexp
- the old one can take a lot of resources and be misused for a DoS
- this still nees to be tested if it is flexible enough
- also fix link click popup
2018-02-08 06:52:33 +01:00
Peter Šurda 08bb85a952
Dandelion staticmethod fix 2018-02-07 17:22:26 +01:00
Peter Šurda c6834093ee
QT sqlite conversion fix
- QByteArray will be stored as str in the db
2018-02-06 23:55:41 +01:00
Peter Šurda 66bed6c7d6
Merge branch '1116' into v0.6 2018-02-06 22:31:52 +01:00
Peter Šurda 3d1fa473fb
Dandelion updates
- expiration now uses poisson distribution just like in the bitcoin
version
2018-02-06 22:28:56 +01:00
Dmitri Bogomolov d083c53e1b
New button "Clear" on tab "Send" to clear all fields (#919) 2018-02-06 21:07:01 +02:00
Peter Šurda 6269e45a47
Merge branch '1117' into v0.6 2018-02-06 18:21:33 +01:00
Dmitri Bogomolov 3b3e4de9d7
Zero Inventory().numberOfInventoryLookupsPerformed before update started
because "Inventory lookups per second" is calculated by /2 (for 2 sec)
2018-02-06 17:33:19 +02:00
Dmitri Bogomolov 4a3f8f4806
Change unread status of message in "All Accounts"
when it changed in "Chans" and vice versa (#1044, #884)
2018-02-06 15:48:56 +02:00
Dmitri Bogomolov 85cce42de0
Update "Network Status" information only when the tab selected 2018-02-05 14:39:32 +02:00
Peter Šurda 03f08b3cfd
Typo 2018-02-04 21:16:30 +01:00
Peter Šurda a646ec4902
Allow separate proxy for onions
- new options in network section: onionsocksproxytype,
onionsockshostname and onionsocksport. These allow to separate
connectivity types for onion and non-onion addresses, e.g. connect to
clear nodes over clearnet and onions over tor
- also remove some obsolete imports
2018-02-04 21:03:54 +01:00
Peter Šurda fd1a6c1fa1
Dandelion update
- dandelion fixes
- try to wait as long as possible before expiration if there are no
outbound connections
- expire in invThread rather than singleCleaner thread
- deduplication of code in inv and dinv command methods
- turn on by default, seems to work correctly now
- turn off dandelion if outbound connections are disabled
- start tracking downloads earlier, and faster download loop
- remove some obsolete lines
- minor PEP8 updates
2018-02-03 11:46:39 +01:00
PyBitmessage Translations 9db0f5bcb3
Auto-updated language sk from transifex 2018-02-02 19:22:18 +01:00
PyBitmessage Translations d03d4a374e
Auto-updated language de from transifex 2018-02-02 18:29:41 +01:00
Peter Šurda d09f2aac96
Merge branch '1105' into v0.6 2018-02-02 18:18:06 +01:00
Peter Šurda 3f75052d7b
Merge branch '1108' into v0.6 2018-02-02 18:17:53 +01:00
Peter Šurda 374e0805f0
Merge branch '1109' into v0.6 2018-02-02 18:17:33 +01:00
Dmitri Bogomolov ec30472dd8
AboutDialog formatting fix (hope) 2018-02-02 18:31:53 +02:00
Dmitri Bogomolov b0271e51ff
Set fixed size for simple dialogs 2018-02-02 18:31:07 +02:00
Peter Šurda 96b8cff0d1
Inventory checking performance optimisation
- caching of whether an object exists in inventory was somehow removed
since storage refactoring (or it never worked). Now existence checking
is cached in the sqlite storage backend
2018-02-02 14:33:29 +01:00
Peter Šurda 053f434e04
Download fixes
- don't make empty requests
- don't make requests if all objects are pending already
2018-02-02 12:44:43 +01:00
Peter Šurda 57c8c7c07c
Download thread exception handling 2018-02-01 23:18:08 +01:00
Peter Šurda 8498143783
Download fixes
- check if already have object before requesting
2018-02-01 22:58:04 +01:00
Peter Šurda dcce7ed4c5
Typo 2018-02-01 22:33:28 +01:00
Peter Šurda 451174b566
Download tracking fix
- don't reset tracking too early
- handle inserts when tracking objects
2018-02-01 22:31:45 +01:00
Peter Šurda 8a5ec29540
Store object hash as binary in sqlite (inventory) 2018-02-01 21:24:50 +01:00
PyBitmessage Translations 283696a053
Auto-updated language pl from transifex 2018-02-01 20:19:08 +01:00
PyBitmessage Translations 2f150dcdd7
Auto-updated language eo from transifex 2018-02-01 19:17:51 +01:00
Peter Šurda 167d946435
RandomTrackingDict now tracks properly
- it didn't put the correct keys at the end
2018-02-01 14:43:14 +01:00
Peter Šurda 290b87a49f
Download fixes
- don't expire too quickly
- ignore connections that haven't been fully established yet
2018-02-01 12:48:14 +01:00
Peter Šurda c5dc7fc903
Typo 2018-02-01 12:26:54 +01:00
Peter Šurda 8d05742436
Typo 2018-02-01 12:20:41 +01:00
Peter Šurda 68b58ce0c5
Download optimisation
- new data structure to handle download tracking, uses less CPU
2018-02-01 12:19:39 +01:00
Peter Šurda d223bfc6f2
Fix kqueue poller
- separate read and write filters
- make filters peristent for reduced syscall count
2018-01-31 22:25:23 +01:00
Peter Šurda 222e666a60
Network thread shutdown iterator fix
Thanks to @g1itch for pointing this out.
2018-01-31 21:09:36 +01:00
Dmitri Bogomolov 25a9e5ea45
Fixed errors I introduced in commit 4115540 after rebase 2018-01-31 20:12:04 +02:00
PyBitmessage Translations 0c4ea7d20f
Auto-updated language ru from transifex 2018-01-31 17:34:38 +01:00
Dmitri Bogomolov f4861be976
Add Ukrainian translation file 2018-01-31 12:33:43 +02:00
Dmitri Bogomolov 175f8b14a5
Update SOURCES and FORMS in bitmessage.pro 2018-01-31 12:31:23 +02:00
Peter Šurda 9807d3e4b4
Don't complain about being disconnected if in offline mode 2018-01-30 17:42:10 +01:00
Peter Šurda ced3f78fb4
Merge branch '1092' into v0.6 2018-01-30 17:32:25 +01:00
PyBitmessage Translations 80ca82ad8b
Auto-updated language ru from transifex 2018-01-30 16:33:27 +01:00
Dmitri Bogomolov c92c2aebc2
Blank title of RegenerateAddressesDialog also 2018-01-30 17:27:01 +02:00
Dmitri Bogomolov afcd83a434
This is probably the right way to handle modal dialogs 2018-01-30 17:27:01 +02:00
Dmitri Bogomolov 41155406d6
Simplified showing statusbar messages:
- Use MyForm.statusbar set in __init__ instead of MyForm.statusBar()
 - MyForm.updateStatusBar() to show the message in MyForm methods
 - queues.UISignalQueue.put(('updateStatusBar', msg)) in dialogs
2018-01-30 17:27:01 +02:00
Dmitri Bogomolov ece5ad9113
Separated dialogs which deal with addresses into address_dialogs module 2018-01-30 17:27:00 +02:00
Dmitri Bogomolov c699f6d872
Got rid of wildcard imports in bitmessageqt.__init__ 2018-01-30 17:27:00 +02:00
Dmitri Bogomolov 641db73614
Removed unused _encoding and _transalate 2018-01-30 17:27:00 +02:00
Dmitri Bogomolov 25876ded2b
Removed unused import of inventory.Inventory 2018-01-30 17:27:00 +02:00
Dmitri Bogomolov cd88d063a1
Imported NewChanDialog into dialogs module 2018-01-30 17:26:59 +02:00
Dmitri Bogomolov 35a11c271a
Moved NewAddressDialog into dialogs module 2018-01-30 17:26:59 +02:00
Dmitri Bogomolov 8109fa7ece
Moved EmailGatewayDialog (with both usage) into dialogs module 2018-01-30 17:26:59 +02:00
Dmitri Bogomolov fe76d230eb
Moved RegenerateAddressesDialog into dialogs module 2018-01-30 17:26:58 +02:00
Dmitri Bogomolov b899086d91
Followed the recommendation #527 about tab indexes 2018-01-30 17:26:58 +02:00
Dmitri Bogomolov 20288d4ab4
Try to replace copyright year from last commit date 2018-01-30 17:26:58 +02:00
Dmitri Bogomolov b9cd571d9b
Hide redundant QGroupBox title 2018-01-30 17:26:58 +02:00
Dmitri Bogomolov f3808212b5
Added link to github into labelVersion in AboutDialog 2018-01-30 17:26:57 +02:00
Dmitri Bogomolov 62a930c374
Moved SpecialAddressBehaviorDialog into dialogs module 2018-01-30 17:26:57 +02:00
Dmitri Bogomolov c965a1d2aa
Moved helpDialog and connectDialog also into dialogs module 2018-01-30 17:26:51 +02:00
Dmitri Bogomolov e2e7e16ab7
Moved aboutDialog and iconGlossaryDialog also into dialogs module 2018-01-30 17:26:42 +02:00
Dmitri Bogomolov d9d9f9d787
Returned AddAddressDialog and NewSubscriptionDialog into dialogs module
where it's been initialized by loading the ui-files.
2018-01-30 16:59:51 +02:00
Dmitri Bogomolov 81c80aa98f
Use AddAddressDialog for "Add sender to your Addres Book" context menu 2018-01-30 16:59:51 +02:00
Dmitri Bogomolov 9e79386595
Set state to "close" and call `handle_close()` for all connections 2018-01-30 14:04:03 +02:00
Dmitri Bogomolov 25ef9fec51
Added menu entry "File -> Go offline/Go online" switching dontconnect
config variable and "Work offline" option to connectDialog.
2018-01-30 14:04:03 +02:00
Peter Šurda cc63c1270b
Fix message content display after deleting/undeleting 2018-01-28 16:13:07 +01:00
Peter Šurda aabce6bab2
Fix selection after delete/undelete 2018-01-28 12:48:25 +01:00
Peter Šurda 08ac8a077b
Merge branch '1062' into v0.6 2018-01-28 10:41:09 +01:00
Peter Šurda ff92cc30c8
Fix previous commit (UI deleting optimisation) 2018-01-28 09:16:37 +01:00
Peter Šurda 0f61ed9f19
Optimise UI deleting and undeleting multiple messages
- use sqlExecuteChunked and disable UI updates while removing entries
2018-01-28 08:12:46 +01:00
Peter Šurda bc7227f513
Merge branch '1090' into v0.6 2018-01-27 16:38:13 +01:00
Dmitri Bogomolov 6fca1631af
Made use of helper_sql.sqlExecuteChunked() also in on_action_InboxMarkUnread 2018-01-25 23:22:15 +02:00
Dmitri Bogomolov 80fdb08f03
Made use of helper_sql.sqlExecuteChunked() in the on_action_MarkAllRead 2018-01-25 23:04:38 +02:00
Dmitri Bogomolov 0097ea6476
The condition which is always False causes critical error #1081 2018-01-25 14:29:25 +02:00
Peter Šurda d3a83eced6
Merge branch '1065' into v0.6 2018-01-25 13:16:55 +01:00
Dmitri Bogomolov 61ddc1208e
No more shared.daemon variable 2018-01-25 12:58:29 +02:00
Peter Šurda 8709051005
Fix non-ascii logging
Tested with UTF-8, KOI8-R and ISO-8859-2 encodings.
2018-01-25 08:11:42 +01:00
Peter Šurda 66b3c6d881
Merge branch '1060' into v0.6 2018-01-25 03:09:47 +01:00
Peter Šurda d6df4470e1
No connection CPU hog fix
- the previous fix was incomplete, it shouldn't consume excessive
resources now when there are no connections
2018-01-23 15:59:58 +01:00
Peter Šurda 01c8f3b66d
Fix asyncore CPU usage on no connection
- if there are no connections, asyncore would hog CPU
- thanks to an anonymous contributor
2018-01-22 22:37:29 +01:00
Peter Šurda ba91d21261
CPU hogging fix
- handle _command functions that don't return anything
- fix udp command function
2018-01-22 22:18:01 +01:00
Dmitri Bogomolov 460107abaa
Handled AttributeError when tr imported from plugin 2018-01-17 13:58:37 +02:00
Dmitri Bogomolov 0c4d4de82f
Changed the daemon check approach in other places, where it makes sense 2018-01-17 13:58:37 +02:00
Dmitri Bogomolov 1b921a718c
Check daemon status in singleinstance instead of config 2018-01-17 13:58:37 +02:00
Peter Šurda c9851b9f41
Connection lookups invalid data handling
- shouldn't throw an exception if argument is a string rather than Peer
2018-01-02 22:23:03 +01:00
Peter Šurda f74f82e54f
Start downloading earlier 2018-01-02 22:20:33 +01:00
Peter Šurda 4086253730
Bandwidth limit optimisation
- should be slightly more accurate and use slightly fewer resources
2018-01-02 15:24:47 +01:00
Peter Šurda 8788f2d349
Server full and duplicate handling
- will try to report "Server full" over protocol for 10 extra
connections over limit, instead of simply dropping them
- if connected to the same host inbound and outbound, handle as server
full (prevents duplicate connections)
2018-01-02 14:29:21 +01:00
Peter Šurda 9b58f35b80
App name in version 2018-01-02 13:56:03 +01:00
Peter Šurda 6b54a4ab0e
Daemonize fix
- forgot to revert a line in previous commit
2018-01-01 13:10:19 +01:00
Peter Šurda d9a4263083
Daemonising fixes
- change forking exit order as systemd expects (wait until child is
ready, then exit parent, then grandparent)
- fix signal handler if prctl not installed
- revert recent PID file changes
2018-01-01 13:08:12 +01:00
Peter Šurda baba0ae206
Remove obsolete code 2018-01-01 13:04:58 +01:00
Peter Šurda 36cc5b9cf5
Download optimisations
- don't make empty download requests
- use smaller chunks when they can be spread across multiple
connections
2018-01-01 12:51:35 +01:00
Peter Šurda 1864762a0a
Apply bandwidth limits without restart
- also minor style fixes
2018-01-01 12:49:08 +01:00
Peter Šurda bcc5a210a4
Fix PID file if not daemonized 2017-12-29 09:13:41 +01:00
Peter Šurda e9b1aa48a9
Protocol error handler fixes
- was broken if there was no error message in "raise"
- added default texts for network exceptions
2017-12-29 08:49:08 +01:00
Peter Šurda 02490e3286
Don't break if over 50k messages
- typo if there were over 50k messages in inventory caused PyBM to stall
2017-12-29 08:41:15 +01:00
sigoa 394d564bdc
minor mod of ver.
not a biggie
2017-12-26 15:01:12 +01:00
sigoa a0e5ee4cce
utf chan name support, various fixes
no unused variables etc. any longer
2017-12-26 14:17:37 +01:00
Peter Šurda 3cb9547389
Only write PID after last fork
- should fix systemd integration
2017-12-21 14:26:51 +01:00
Peter Šurda 5605672f75
Fix tag search when inventory contains blobs
- recent changes caused the "tag" (and "payload") columns in the
inventory table in messages.dat to be stored as blobs. Searches by tag
(e.g. pubkey lookups) stopped working. This fixes it.
2017-12-02 02:48:10 +01:00
Peter Šurda a3398d6a17
Don't crash download thread if no connections 2017-12-02 00:50:58 +01:00
Peter Šurda 41ead2bfb5
Distribute downloads more evenly
- also increases expireation of missing objects from 10 minutes to an
hour
2017-12-02 00:48:08 +01:00
Peter Šurda 3b86dfc639
Log missing indicator plugin 2017-12-02 00:45:01 +01:00
Peter Šurda 4ee9d05446
Randomise key order during decryption
- may help against timing/radio attacks
2017-11-30 20:08:14 +01:00
Peter Šurda 6c224447a6
Minor fixes that came over BM
- typo in quit confirmation dialog
- nicer traceback in unhandled exceptions
2017-11-30 19:44:03 +01:00
Peter Šurda 48c0a2ae2e
Arithmetic fix for preceding commit 2017-11-30 19:42:49 +01:00
Peter Šurda 6ce3ce6b22
Chunking helper for sql statements with too many variables
- preparation for #1081
2017-11-30 19:39:31 +01:00
PyBitmessage Translations 52162046bd
Auto-updated language ru from transifex 2017-11-29 10:38:58 +01:00
Peter Šurda 44dd08a228
Remove obsolete code in cleaner thread 2017-11-22 21:13:35 +01:00
Peter Šurda 6ca3460090
Put garbage collection into the cleaner thread
- this maybe addresses #1079
2017-11-22 14:49:18 +01:00
Peter Šurda e558b1fb72
Error handling
- proxy connections didn't init fullyEstablished
2017-11-19 13:48:43 +01:00
Peter Šurda fdfbb77ed2
Close filehandles on connection reaping
- I thought this is done automatically through garbage collection, but I
think as the channel is still assigned in the asyncore map, it needs
to be done manually. Basically filehandle limit exceeded and it
crashed
2017-11-19 00:05:55 +01:00
Peter Šurda 5e042b76e7
Typo
- missing brackets
2017-11-18 10:05:41 +01:00
Peter Šurda 3aa6f386db
Dandelion fixes
- dandelion would always think there is a cycle and trigger fluff
- cycle fluff trigger didn't correctly re-download and re-announce the
object. Now it remembers between (d)inv and object commands that it's
in a fluff trigger phase.
2017-11-18 09:47:17 +01:00
Peter Šurda 4690dd6f00
Copy object contents from buffers on instantiation
- this may fix some memory issues
2017-11-17 23:53:46 +01:00
Peter Šurda 3c3d69e5de
Reap closed connection fix 2017-11-17 19:50:39 +01:00
Peter Šurda 1e02d2b48a
Download optimisation
- pending download tracking now per-connection instead of globally
2017-11-17 19:49:51 +01:00
Peter Šurda 5a787f41d2
Socket closing changes
- explicit close only through asyncore error handler
- implicit close through garbage collector
- avoid duplicate closing
2017-11-17 13:37:51 +01:00
Peter Šurda 2da1115d17
Typo
Typo in 89567cecfa
2017-11-14 23:46:07 +01:00
Peter Šurda 1792289e00
close handling fix
- don't close a connection twice
2017-11-14 23:43:05 +01:00
Peter Šurda d2f79d3172
sqlite storage fix
- typo on cleaning
2017-11-14 23:20:15 +01:00
Peter Šurda 89567cecfa
Notifier plugin fix
- NotifyOSD doesn't like too many notification objects in a queue, so
just create one on init and update its contents if there is a new
notification
2017-11-14 23:19:16 +01:00
PyBitmessage Translations d6e94cf77f
Auto-updated language zh_cn from transifex 2017-11-02 12:42:50 +01:00
PyBitmessage Translations 8b7b91b23d
Auto-updated language de from transifex 2017-10-31 09:40:18 +01:00
Dmitri Bogomolov e17d33cd75
Respect user selected sort order on "Network Status" tab 2017-10-24 14:02:15 +03:00
Peter Šurda 4b40d4bce1
Download thread error handling 2017-10-22 15:28:30 +02:00
Peter Šurda 75a6f605c1
Download optimisation
- more accurate tracking
- randomise download order
- longer cycle
2017-10-22 11:32:37 +02:00
Peter Šurda b025624f2a
missingObjects fix
- didn't notice valid objects arriving (only invalid)
2017-10-20 23:21:25 +02:00
Peter Šurda 6655e99aa3
Pending download stats optimisations
- tracks separately a global list for a faster sum. Needs slightly
more memory
2017-10-20 23:11:33 +02:00
Peter Šurda a746ba9da7
Stop downloading objects with insufficient PoW
- object with insufficient PoW weren't correctly detected and it
tried to download them over and over again
2017-10-20 13:21:39 +02:00
Peter Šurda 2d34e73648
Dandelion updates
- fixes and feedback from @gfanti and @amiller
- addresses #1049
- minor refactoring
- two global child stems with fixed mapping between parent and
child stem
- allow child stems which don't support dandelion
- only allow outbound connections to be stems
- adjust stems if opening/closing outbound connections (should
allow partial dandelion functionality when not enough outbound
connections are available instead of breaking)
2017-10-20 01:21:49 +02:00
Peter Šurda 15857e6551
Asyncore updates
- reduce buffer size to 128kB (was 2MB)
- IP address handling use str instead of buffer (the latter, even
though it should be faster, breaks the code on Windows)
- read up to full buffer after fully established (otherwise
downloads become too slow due to the loop time). This reverts
a change made in d28a7bfb86
2017-10-20 01:07:30 +02:00
Dmitri Bogomolov 8fcdf51e57
One more unicode related exception - when editing a contact label 2017-10-19 18:43:41 +03:00
Dmitri Bogomolov 9be36f2d78
Use unicode instead of str for MessagingMenu 2017-10-19 18:29:42 +03:00
PyBitmessage Translations 364642404a
Auto-updated language ja from transifex 2017-10-19 12:26:51 +02:00
Peter Šurda ab458531e8
Changes in SOCKS and onion handling in connectionchooser
- onion addresses have a priority of 1 when SOCKS is on
- don't connect to private/loopback addresses when SOCKS is on
2017-10-19 09:16:29 +02:00
Peter Šurda 7b470d4b66
handle shutdown in receivequeuethread
- sometimes during shutdown, the receivequeuethread would get
stuck
2017-10-19 09:11:34 +02:00
Peter Šurda 391d40d78b
Socket closing changes
- closing reason moved to a variable
- actual closing now done in asyncore thread instead of
receivedata thread
2017-10-19 09:08:05 +02:00
Peter Šurda 01d46c30e4
Remove obsolete imports 2017-10-19 09:03:36 +02:00
Peter Šurda d28a7bfb86
Asyncore performance optimisation
- don't transfer unnecessary amount of bytes from network buffers
- slice buffer more efficiently if it results in an empty buffer
2017-10-19 09:02:33 +02:00
Peter Šurda 7ec3fc7a5a
Prevent negative DownloadChunk in asyncore 2017-10-19 09:00:54 +02:00
Peter Šurda f785558ca5
Don't close UDP socket on bad packet magic 2017-10-19 09:00:02 +02:00
Peter Šurda a090eea9b0
Minor multiqueue updates
- add task_done to addrthread and invthread
- implement totalSize for multiqueue
- order in invThread changed
2017-10-19 08:56:48 +02:00
Peter Šurda d44c6c6464
Forget known nodes with bad rating 2017-10-19 08:52:44 +02:00
Peter Šurda 453bcdbb1d
Typo in newchandialog 2017-10-19 08:39:30 +02:00
Peter Šurda a013814c6b
Network tab updates
- handle add/remove entry instead of recreating the whole connection
list
- update processed object counts after each object
2017-10-19 08:39:09 +02:00
Peter Šurda 1ba1f02686
Remove superfluous validator signal connect in newchandialog
- apparently it connects automatically and just creates an error message
2017-10-19 08:31:05 +02:00
Peter Šurda 7e0932815d
UDP socket closing fix
- invalid data or an incomplete read on UDP socket caused
it to close
2017-10-19 01:46:32 +02:00
Dmitri Bogomolov 9cffd50de8
Fixed statusbar message on error in namecoin name search 2017-10-17 11:37:50 +03:00
Dmitri Bogomolov 59d1309a9e
Fixed typo when closing tempfile in bitmessageqt.__init__ 2017-10-17 11:25:33 +03:00
Dmitri Bogomolov 8e76169388
Check IP before adding to knownnodes in helper_bootstrap 2017-10-17 01:33:30 +03:00
Dmitri Bogomolov 9dae77dd2b
Quiet Mode (i.e. turn off notification) in tray menu 2017-10-16 19:30:12 +03:00
Peter Šurda 4c9006a632
Asyncore performance optimisation
- use bytearray instead of strings for buffers
2017-10-16 08:07:32 +02:00
PyBitmessage Translations 1eb0dd6f01
Auto-updated language fr from transifex 2017-10-15 13:45:31 +02:00
Peter Šurda a49b3b5f84
Asyncore UDP fix
- when there was an error writing to a udp socket, it wasn't
handled correctly
2017-10-06 18:26:06 +02:00
Peter Šurda 333170b172
Dandelion fixes
- more exception handling
- only use outbound connections for stems
(thanks to @amillter for info)
- don't create stems if config disabled
- addresses #1049
2017-10-06 16:33:44 +02:00
Dmitri Bogomolov 1abdc14807
Fix statusbar chan creation message:
non-ASCII characters displayed incorrectly
2017-10-03 18:01:54 +03:00
Peter Šurda 6548999a49
Dandelion fix
- thanks to g1itch for reporting
- addresses #1049
2017-10-02 08:02:29 +02:00
Peter Šurda b1442ecb0a
Dandelion fixes and updates
- also, randomise the item order in an inv/dinv command
2017-09-30 13:42:04 +02:00
f97ada87 be0e724b23
implement stealth ack objects 2017-09-30 19:45:40 +10:00
f97ada87 08748fa9ae
move config read inside main function 2017-09-27 00:36:43 +10:00
f97ada87 dbd12ab8b4
fix truncation of received ackdata in objectProcessor 2017-09-25 20:14:03 +10:00
PyBitmessage Translations 1798c90622
Auto-updated language ja from transifex 2017-09-25 11:10:16 +02:00
Peter Šurda 9923d288e0
Dandelion fixes
- in route selector, some connections may not have the services
attribute (yet)
- Addresses #1049
2017-09-25 09:17:15 +02:00
Peter Šurda d574b167d8
Dandelion updates & fixes
- Addresses #1049
- Add dandelion routes for locally generated objects
- Minor bugfixes
- Send dinv commands on stem objects (instead of always sending inv
command)
2017-09-25 08:49:21 +02:00
Peter Šurda 6ce86b1d0a
Dandelion++ implementation
- untested, some functionality may be missing, don't turn on
- also, it randomises upload of requested objects
- affects #1049
2017-09-25 01:17:04 +02:00
PyBitmessage Translations 8495836428
Auto-updated language ru from transifex 2017-09-24 11:49:32 +02:00
f97ada87 c89d86a779
use getopt parser for command-line arguments 2017-09-24 07:42:37 +10:00
Peter Šurda aaa5e9d309
Windows daemon mode workaround 2017-09-23 18:25:41 +02:00
f97ada87 cfa84cf81a
change default log output from stdout to stderr 2017-09-24 01:50:49 +10:00
PyBitmessage Translations a8ab574c3e
Auto-updated language pl from transifex 2017-09-21 21:06:53 +02:00
PyBitmessage Translations 680cc2cafc
Auto-updated language de from transifex 2017-09-21 19:16:40 +02:00
PyBitmessage Translations df21f53271
Auto-updated language eo from transifex 2017-09-21 19:08:10 +02:00
Peter Šurda 1881bcea68
Don't connect on first start until approved 2017-09-21 18:18:42 +02:00
Peter Šurda 0150a35dd4
Change main thread name to PyBitmessage 2017-09-21 17:51:34 +02:00
Peter Šurda 4f75dcb9be
Merge pull request '1047' into v0.6
- notifications moved into plugins
- improvements in setup.py
- remove obsolete imports
2017-09-21 13:30:53 +02:00
Dmitri Bogomolov 2504bc6670
Fixed fetch of connected hosts number in bitmessageqt.support 2017-09-21 13:59:43 +03:00
Dmitri Bogomolov 53c3eeb8f7
Sound plugins using pycanberra and gst-python 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov 1f47a4060e
Added "Set notification sound..." context menu on addressbook entry. 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov b77eb0c7e5
Namespace 'bitmessage' for plugins entry points 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov c8a47b988f
Moved "Ubuntu" MessagingMenu code into indicator_libmessaging plugin 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov cd81718871
Moved sound category constants to the separate module `sound`
for importing from the sound theme plugins.
2017-09-20 10:21:27 +03:00
Dmitri Bogomolov 289a6c5bfa
Added support for sound notification plugins which use
the desktop sound theme, with pycanberra for example. Plugin name should
start with 'theme' in that case, whereas the name of plugins playing the
sound file starts with 'file'.
2017-09-20 10:21:27 +03:00
Dmitri Bogomolov 84a903f116
Redirected output of the player programs to /dev/null 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov 91eb75b140
gst-play-1.0 is another player program which bundled with gstreamer 1.0 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov be716bf228
Improved and documented plugin module 2017-09-20 10:21:27 +03:00
Dmitri Bogomolov ef8f40ccc4
Moved notifications to plugins (including sound) 2017-09-20 10:21:27 +03:00
PyBitmessage Translations 022e0ce593
Auto-updated language ja from transifex 2017-08-26 04:35:44 +02:00
PyBitmessage Translations a8e5ea18a6
Auto-updated language eo from transifex 2017-08-24 21:30:54 +02:00
Peter Šurda 7e35ea6bdf
Email gateway autoregistration fixes
- don't treat "@" in label as an email address
- ask for confirmation before autoregistering. It confused some
newbies into thinking that bitmessage requires payment
2017-08-24 14:16:37 +02:00
Peter Šurda 660997b8f4
Code Quality 2017-08-22 13:49:27 +02:00
Peter Šurda 18119339f8
Add shutdown to CLI 2017-08-22 13:23:03 +02:00
Peter Šurda b7f808cde1
Add shutdown command to API
- calling "shutdown" now cleanly shuts down PyBitmessage, however the
call may not return so you need to add an error handler to the call.
With python for example, wrap the "shutdown()" in
"try:/except socket.error"
2017-08-21 10:39:03 +02:00
Peter Šurda b886f935d4
Daemon Windows fix
- closing the filehandle isn't the correct approach, it causes more
bugs. Use os.devnull instead
2017-08-20 12:05:53 +02:00
Peter Šurda 314af0925f
Daemonize fix for Windows
- /dev/null isn't available on Windows so just close the console
sockets directly
2017-08-20 11:55:54 +02:00
Peter Šurda 2da4d00730
Support message C PoW fix 2017-08-15 18:14:36 +02:00
Peter Šurda 8b3d7ea278
C PoW init fix 2017-08-15 14:09:19 +02:00
Peter Šurda 623553393b
PID file truncate fix
- on unix it truncated the file if a second instance was being
launched
2017-08-15 12:25:38 +02:00
Peter Šurda a48dff3bee
PoW init reordering
- inited by the worker thread on its own init, instead of when the
imports are being evaluated
- also got rid of windows-style newlines in OpenCL PoW
2017-08-15 12:24:43 +02:00
Peter Šurda 58b47bc6de
Forking fixes 2017-08-15 12:22:24 +02:00
PyBitmessage Translations 3c50615998
Auto-updated language zh_cn from transifex 2017-08-13 16:54:52 +02:00
PyBitmessage Translations 4d0a40fd2a
Auto-updated language sk from transifex 2017-08-11 09:46:06 +02:00
PyBitmessage Translations 85e4e5438c
Auto-updated language de from transifex 2017-08-11 09:38:00 +02:00
Peter Šurda e7231f3aea
Fix multiple TCP bind address handling 2017-08-09 23:30:22 +02:00
Peter Šurda 6c695c8ac7
Remove non-asyncore network code (partial) 2017-08-09 17:36:52 +02:00
Peter Šurda 0b07b1c89a
Peer discovery updates
- allow loopback addresses, now you can bind different loopback IP
addresses on a single system and they will auto-cross-connect
- always listen for discovery on 0.0.0.0
- [network] - bind now also applies for the TCP socket as well as UDP
socket
- closing socket iterator fix
2017-08-09 17:34:47 +02:00
Peter Šurda e071efac1a
Typo 2017-08-09 17:29:48 +02:00
Peter Šurda cc955cd69d
Try new ports of binding fails
- API and BM protocol will try random ports for binding if those
configured are occupied
2017-08-09 17:29:23 +02:00
Peter Šurda 0324958e92
Peer discovery fixes
- incoming packets weren't correctly processed
2017-08-06 23:05:54 +02:00
Peter Šurda d9e4f2ceb8
Typo in previous commit 2017-08-06 21:38:23 +02:00
Peter Šurda f338c00f8e
Change peer discovery tracking from queue to a dict
- with a queue, a situation could occur when new entries are appended
but nothing is polling the queue
2017-08-06 21:29:54 +02:00
Peter Šurda 4564d37f5b
Typo in previous commits 2017-08-06 21:26:25 +02:00
Peter Šurda 38872159fb
Typo in previous commit 2017-08-06 20:40:35 +02:00
Peter Šurda 5895dc2f1f
Asyncore Windows error handling
- windows behaves somewhat differently when using select
2017-08-06 20:39:14 +02:00
Peter Šurda 578c5dd495
Fix windows PID file 2017-08-06 18:29:08 +02:00
Peter Šurda 5108d08ac9
Windows asyncore error handler fix
- WSAEWOULDBLOCK is now checked on connect and accept
2017-08-06 18:18:21 +02:00
Peter Šurda 8f14fb05a1
UDP socket setsockopt fix 2017-08-05 10:14:15 +02:00
Peter Šurda 7a4551e1e7
Fix signal handler in daemon mode
- signal handler requires the main thread to run
2017-07-30 09:36:20 +02:00
Peter Šurda 3e6de7a9ad
Flush PID file on unix as well 2017-07-28 19:21:56 +02:00
Peter Šurda e7382b7714
Write PID into the lock file 2017-07-28 09:39:49 +02:00
Peter Šurda 501f07dd34
Setsid is not available on Windows
- wrap an error handler around it
2017-07-28 09:19:53 +02:00
Peter Šurda 20cbac9752
Fix daemonize for Windows
Fixes #1034
2017-07-28 08:54:34 +02:00
Peter Šurda a29f7534ee
Add EINTR handler for select and poll pollers 2017-07-21 09:06:02 +02:00
Peter Šurda 2530c62050
epoll throws IOError rather than select.error 2017-07-21 07:49:34 +02:00
Peter Šurda aa059d6f2f
Handle TLS errors in receivequeuethread
- well at least EBADF, it seems to happen sometimes
2017-07-21 07:47:18 +02:00
Peter Šurda 4f19c37fdc
Parser fix for multi-level arrays 2017-07-11 10:29:29 +02:00
Peter Šurda dcc181bf75
Asyncore processing thread synchronisation
- threre was a synchronisation problem where one thread could process
more data than another thread was expecting, leading to the thread
crashing
2017-07-10 23:18:58 +02:00
Peter Šurda f6d5d93bf2
Multiple receive queues fix
- forgot to commit busy handler
2017-07-10 20:52:11 +02:00
Peter Šurda db2d78c9b6
Make protocol decoder less recursive
- apparently, recursion has bad performance in Python, so the decoder is
now flat, except when parsing "version" command
2017-07-10 07:15:27 +02:00
Peter Šurda 853c8561ec
Per connection node id part 2
- forgot to include this in the previous commit
2017-07-10 07:12:52 +02:00
Peter Šurda 3941b39136
Randomise node id
- in order to detect if it's connected to to itself, PyBitmessage now
uses a per-connection id rather than a global one
2017-07-10 07:10:05 +02:00
Peter Šurda bdf61489ae
Allow multiple ReceiveQueue threads
- defaults to 3
2017-07-10 07:08:10 +02:00
Peter Šurda f088e0ae21
Change thread names
- not needed to have "Thread" in the name of a thread
2017-07-10 07:05:50 +02:00
Peter Šurda 4fce01e34a
Less data transferred in invThread and addrThread 2017-07-08 18:02:47 +02:00
Peter Šurda 2df9598774
Asyncore update: Fix incoming connections
- dereferencing wasn't done correctly for incoming connections
2017-07-08 07:33:29 +02:00
Peter Šurda 2d7d9c2f92
Asyncore update
- request downloads in bigger chunks
- don't put whole objects into the receiveDataQueue
2017-07-08 06:54:25 +02:00
Peter Šurda 0f3a69adf4
Asyncore update: remove references to deleted files 2017-07-08 06:53:20 +02:00
Peter Šurda 5ae1b6d865
Asyncore update: remove obsolete files 2017-07-08 06:52:17 +02:00
PyBitmessage Translations 1aa45d6eac
Auto-updated language eo from transifex 2017-07-07 16:32:25 +02:00
PyBitmessage Translations 6eb9e93575
Auto-updated language ja from transifex 2017-07-07 16:31:14 +02:00
PyBitmessage Translations 4f969088cf
Auto-updated language pl from transifex 2017-07-07 07:56:19 +02:00
Peter Šurda a98b8690d3
Asyncore fixes
- fix broken loops
- optimise I/O tests
2017-07-07 07:55:29 +02:00
Peter Šurda de22e547c5
Remove buggy log message if prctl is missing
- it's not that important that you need to be informed of it, and
importing logging may cause cyclic dependencies/other problems
2017-07-06 20:06:43 +02:00
Peter Šurda ba4162d7fe
Asyncore update
- get rid of per-connection writeQueue/receiveQueue, and instead use
strings and locking
- minor code cleanup
- all state handlers now should set expectBytes
- almost all data processing happens in ReceiveDataThread, and
AsyncoreThread is almost only I/O (plus TLS). AsyncoreThread simply
puts the connection object into the queue when it has some data for
processing
- allow poll, epoll and kqueue handlers. kqueue is untested and
unoptimised, poll and epoll seem to work ok (linux)
- stack depth threshold handler  in decode_payload_content, this is
recursive and I think was causing occasional RuntimeErrors. Fixes #964
- longer asyncore loops, as now data is handled in ReceiveDataThread
- randomise node order when deciding what to download. Should prevent
retries being stuck to the same node
- socks cleanup (socks5 works ok, socks4a untested but should work too)
2017-07-06 19:45:36 +02:00
Peter Šurda a2b8867c1a
Tooltips for network status columns 2017-07-06 19:36:04 +02:00
Peter Šurda 4536e44b8c
Thread names propagate to system
- the thread names should now show up in the monitoring tools of
operating systems (tested on linux)
2017-07-06 19:35:40 +02:00
PyBitmessage Translations 00a4558971
Auto-updated language eo from transifex 2017-07-06 04:53:29 +02:00
PyBitmessage Translations 83e60d231a
Auto-updated language pl from transifex 2017-07-06 04:52:26 +02:00
PyBitmessage Translations 1dbf98d7f7
Auto-updated language ja from transifex 2017-07-06 00:06:05 +02:00
PyBitmessage Translations 27f9fb0237
Auto-updated language ru from transifex 2017-07-05 17:09:30 +02:00
Peter Šurda fe0664640e
Migrate antiIntersectionDelay to asyncore
- implemented by ignoring getdata during the delay rather than sleeping
as it was in the threaded model
- it can happen that a valid getdata request is received during the
delay. A node should be implemented in a way that retries to download,
that may not be the case with older PyBitmessage versions or other
implementations
2017-07-05 09:27:52 +02:00
Peter Šurda fc19e4119a
Download thread updates
- now tracks downloads globally too, so it doesn't request the same
object from multiple peers at the same time
- retries at the earliest every minute
- stops trying to download an object after an hour
- minor fixes in retrying downloading invalid objects
2017-07-05 09:25:49 +02:00
Peter Šurda 846fced0a2
Remove obsolete inactive code 2017-07-05 09:19:56 +02:00
Peter Šurda d086781ce8
AddrQueue fix
- forgot to commit import
2017-07-05 09:19:18 +02:00
Peter Šurda a0bbd21efc
Add ratings to peers
- outbound peers now have a rating
- it's also shown in the network status tab
- currently it's between -1 to +1, changes by 0.1 steps and uses a
hyperbolic function 0.05/(1.0 - rating) to convert rating to
probability with which we should connect to that node when randomly
chosen
- it increases when we successfully establish a full outbound connection
to a node, and decreases when we fail to do that
- onion nodes have priority when using SOCKS
2017-07-05 09:17:01 +02:00
Peter Šurda 9d09f9f3ce
Reduce severity of socks connectivity errors
- Fixes #1024
- Fixes #1019
2017-07-05 09:07:00 +02:00
Peter Šurda 773d91bbe2
Unknown object log entry less severe
- unnecessarily classified as critical
- fixes #1023
2017-07-05 09:01:40 +02:00
Peter Šurda e00a02206b
AddrThread
- this thread is for spreading new/updated addresses in active
connections, analogous to the InvThread
- it doesn't do anything yet, this is just a dummy queue at the moment
2017-07-05 08:57:44 +02:00
Peter Šurda 27f5de0f9c
Unified random number provider
- not used yet, just an inactive helper function
- I received feedback that OpenSSL.rand isn't more secure than
os.urandom. I read several debates/analyses about it and concur
2017-07-05 08:52:16 +02:00
PyBitmessage Translations 70c5929e92
Auto-updated language ru from transifex 2017-07-04 17:51:58 +02:00
Peter Šurda cc3cf77759
New class multiqueue
- to be used for invthread and addthread
- updated invthread for multiqueue
2017-06-27 13:25:12 +02:00
Peter Šurda f5a143d0b8
Config validator
- config options can have validators
- limit maxoutboundconnections to max 8
2017-06-27 13:19:12 +02:00
Peter Šurda 20e01860cf
Network status peer list shouldn't be editable 2017-06-27 13:16:41 +02:00
PyBitmessage Translations 8a3577aed7
Auto-updated language eo from transifex 2017-06-25 19:26:14 +02:00
PyBitmessage Translations 30b65aaefc
Auto-updated language pl from transifex 2017-06-25 19:25:47 +02:00
PyBitmessage Translations ccfe58c2c0
Auto-updated language ja from transifex 2017-06-25 16:49:31 +02:00
Peter Šurda aa203b23ee
Fix typo introduced by code quality patch 2017-06-24 23:09:08 +02:00
Peter Šurda 189578cba3
Asyncore proxy fixes
- SOCKS5 now seems to work, SOCKS4a untested
2017-06-24 12:23:56 +02:00
Peter Šurda 916b85c862
Connection pool cleanup
- minor code quality improvement
2017-06-24 12:23:16 +02:00
Peter Šurda 0dc0b22974
Expired / Stream mismatch / duplicate object error handling
- cleanup of the code
2017-06-24 12:22:41 +02:00
Peter Šurda 0a79490e2c
Known nodes maximum configurable part 2 2017-06-24 12:21:42 +02:00
Peter Šurda d57b0c55ee
Object validator trigger moved
- from bmproto to bmobject
2017-06-24 12:21:06 +02:00
Peter Šurda dc5a91f326
Remove stack depth warnings
- I was never able to trigger them
2017-06-24 12:19:19 +02:00
Peter Šurda e9edf70d3a
TLS updates
- save TLS version
- minor TLS error handling updates
2017-06-24 12:18:15 +02:00
Peter Šurda b9d60f8b41
Max known nodes configurable 2017-06-24 12:17:01 +02:00
Peter Šurda 26eb54a82e
Network status updates
- now lists each node with its info instead of a per-stream summary
2017-06-24 12:16:12 +02:00
Peter Šurda bfbdd7e140
Chan address validator button feedback
- During validation, the button not only turns gray but also changes
label
2017-06-24 12:14:23 +02:00
Peter Šurda 2685fe29b1
Code quality improvements 2017-06-24 12:13:35 +02:00
Peter Šurda 243025a1aa
Leave __delitem__ unimplemented in filesystem storage
- rename the cleaning method
2017-06-21 12:17:40 +02:00
Peter Šurda 618f3865c1
Main thread end
- instead of sleeping, it just ends
2017-06-21 12:16:56 +02:00
Peter Šurda 0cc8589b27
Asyncore updates
- should prevent the same object being re-requested indefinitely
- locking for object tracking
- move SSL-specific error handling to TLSDispatcher
- observe maximum connection limit when accepting a new connection
- stack depth test (for debugging purposes)
- separate download thread
- connection pool init moved to main thread
2017-06-21 12:16:33 +02:00
Dmitri Bogomolov 76fed78211
Made it possible to use installed umsgpack 2017-06-12 13:54:44 +03:00
Peter Šurda a3a55e53c4
UDP Socket dict address fix
- fixes #1008
2017-06-11 14:11:39 +02:00
Peter Šurda cba749088a
Asyncore updates
- mainly work on proxy support, but it's still not fully working
- minor bugfixes
2017-06-10 10:13:49 +02:00
Peter Šurda 7deb7c3d4f
Typo 2017-06-10 10:11:50 +02:00
Peter Šurda 8d41d5fcf6
default known nodes update 2017-06-10 10:11:21 +02:00
Peter Šurda 7f06cb7c27
Inventory flush fix in GUI
- Fixes #1011
2017-06-10 10:10:59 +02:00
Peter Šurda 7e8ee51322
Fallback umsgpack import fix 2017-06-10 10:09:44 +02:00
Peter Šurda f366447e94
Fix identicon imports 2017-06-10 10:09:14 +02:00
Peter Šurda d34fdbb3f4
Fix network status in api 2017-06-10 10:08:40 +02:00
Peter Šurda ae97f7abd8
Typo 2017-06-10 10:07:47 +02:00
Peter Šurda 009a215224
Fix api connected hosts lists 2017-06-09 10:07:51 +02:00
Peter Šurda 7bde4e9445
Missing module name in bmproto 2017-06-04 10:25:16 +02:00
Peter Šurda e8d9a7f183
Asyncore connect handling
- minor improvements in handling of connect events so that it's not
processed twice
2017-06-03 16:30:05 +02:00
Peter Šurda a9c0000c17
Treat some invalid objects as received
- update to 6044df5adf
- objects that are expired or in wrong stream are not re-requested
anymore, even if they aren't stored in the inventory
- the previous option "acceptmismatch" now only affects whether such
objects are stored in the inventory
2017-06-03 16:29:21 +02:00
Scott f78f1a718b
Change api.py 2017-06-02 18:53:13 -06:00
Peter Šurda 6044df5adf
Optional storing of expired and off-stream objects
- a new config file option, network/acceptmismatch, allows the inventory
to store objects that expired or are from a stream we're not
interested in. Having this on will prevent re-requesting objects that
other nodes incorrectly advertise. It defaults to false
2017-06-02 15:43:35 +02:00
Peter Šurda d75d920a68
Asyncore updates
- clean object tracking dictionaries in the cleaner thread
- clean up close / handle_close
- add locking to tracking dictionaries
2017-06-02 07:09:35 +02:00
Peter Šurda 4c17a18006
Don't send invs to unestablished connections 2017-05-31 23:34:06 +02:00
Peter Šurda 18988ae2e6
Asyncore updates
- performance optimisation, reduce number of loops when waiting
for protocol headers / commands
2017-05-31 10:17:36 +02:00
Peter Šurda 2555f692eb
Network status update part 2
- only update processed items every 2 seconds
2017-05-31 10:16:30 +02:00
Peter Šurda e522f015a8
Network status updates
- only update processed numbers once every 2 seconds
- moved inventory lookups to the main inventory so now all
storage modules work with it
2017-05-31 10:15:47 +02:00
Peter Šurda d9e3349eeb
Fix own IP detection
- minor bug in the previous commit
2017-05-31 00:22:07 +02:00
Peter Šurda f23c169eec
Don't connect to myself
- track local IP+port of incoming connections and don't connect
to them in the future
2017-05-31 00:04:21 +02:00
Peter Šurda fa9811f426
Asyncore update
- duplicate checking implemented
- connection pool vs. socket closing cleanup
2017-05-30 23:53:43 +02:00
Peter Šurda abaa2c72e5
typo 2017-05-29 15:04:22 +02:00
Peter Šurda 11d02b1e41
typo 2017-05-29 14:59:42 +02:00
Peter Šurda 3a543efd83
Typo 2017-05-29 14:54:13 +02:00
Peter Šurda 7f381c0c25
Asyncore update
- incoming object handling fix
2017-05-29 14:52:31 +02:00
Peter Šurda 1ccfd41c3f
Asyncore updates
- fix connected to myself check
2017-05-29 14:41:02 +02:00
Peter Šurda 0aa5dbd958
Asyncore update
- shutdown fix
2017-05-29 14:35:08 +02:00
Peter Šurda bdaa939e2c
ENOTSOCK fix 2017-05-29 13:39:26 +02:00
Peter Šurda 97c44b97f4
Asyncore update
- handle WSAENOTSOCK
2017-05-29 13:14:25 +02:00
Peter Šurda a5c1b0c529
Asyncore fixes
- better handling of WSA* checks on non-windows systems
- handle EBADF on Windows/select
- better timeouts / loop lengths in main asyncore loop and
spawning new connections
- remove InvThread prints
2017-05-29 12:56:59 +02:00
Peter Šurda 74f1a74a8c
Make SO_REUSEPORT optional
- apparently not available on Windows
2017-05-29 11:30:56 +02:00
Peter Šurda e7525d47be
Disable memory usage logging
- it looks like it's Unix specific and doesn't work on windows
2017-05-29 11:26:56 +02:00
Peter Šurda 02a07e5119
Asyncore update
- default to true (original attempt didn't work correctly)
2017-05-29 03:16:14 +02:00
Peter Šurda 73c41bff9d
typo
-BMConfigParser. instead of BMConfigParser().
2017-05-29 02:30:18 +02:00
Peter Šurda 65bb6648e7
Asyncore updates
- fix crash in inv thread
- more prints changed into logger
- minor fixes
2017-05-29 00:47:41 +02:00
Peter Šurda c85d52b8e8
Asyncore updates
- asyncore is now on by default
- inv announcements implemented
- bandwidth limit implemented / fixed
- stats on download / upload speed now work
- make prints into logger
- limit knownNodes to 20k as it was before
- green light fixed
- other minor fixes
2017-05-29 00:24:07 +02:00
Peter Šurda 5d4e1e2007
asyncore fixes
- bm headers and commands are only read up to expected length.
On a very fast connection (e.g. local VM), reading verack
also read a part of the TLS handshake
- some debugging info moved from print to logger.debug
- tls handshake cleanup
2017-05-27 22:30:30 +02:00
Peter Šurda 21f6d38ec2
Asyncore fixes
- TCP fixes
2017-05-27 21:52:56 +02:00
Peter Šurda 99e714c432
UDP socket bugfixes 2017-05-27 20:43:27 +02:00
Peter Šurda fa9ad537a5
Add task_done to asyncore-related queues 2017-05-27 19:39:19 +02:00
Peter Šurda f8b4b427fc
Asyncore update
- bugfixes
- UDP socket for local peer discovery
- new function assembleAddr to unify creating address command
- open port checker functionality (inactive)
- sendBigInv is done in a thread separate from the network IO
thread
2017-05-27 19:09:21 +02:00
Peter Šurda 36b5e2c04f
Inventory storage abstraction
- can have multiple storage types for inventory
- sqlite is the old one, filesystem is a new available
2017-05-27 19:03:27 +02:00
Peter Šurda 1d87c63504
Traceback on Ctrl-C
- Ctrl-C will print a traceback of all threads instead of
complaining
2017-05-27 19:02:05 +02:00