40 Commits

Author SHA1 Message Date
Andrea Maria Piana
f62a6add56
Use rawsyncresponse 2019-05-06 14:33:58 +02:00
Andrea Maria Piana
f55e777bd6
Add SendRawP2PDirect
Adds a function to send RawValue envelopes. This is needed as a
performance optimization, as currently most of the processing time is
spent decoding envelopes and coding them back when sending them.
This will allow us to skip this unnecessary step.
2019-05-06 12:32:09 +02:00
Dmitry Shulyak
4fae75da94
Post request.completed only after envelopes from that request were added to a filter (#27)
* Post completion event after every message was added to a filter

* Add test that request.completed received after all envelope.avaiable

* Process all p2p envelopes and completion events sequantially

* Stop whisper after test
2019-04-19 08:14:44 +03:00
Dmitry Shulyak
b8da753209
Change filter internal message store to inteface (#25) 2019-04-04 11:46:29 +03:00
Dmitry Shulyak
3a4601b568
Receiver notifies sender with reasons for discarding envelopes (#23)
* Receiver notifies sender with reasons for discarding envelopes

On a sender side we want to know if some messages were discarded. For this
purpose new message type was added - messagesResponse. This message type is versioned,
in order to make it easier transition to new message response, if we will want to extend it in near
future.

The response itself is formed from hash of envelopes received in a single batch, and errors
during processing of envelopes. Each error has a code and description, the reason for adding a code
is to provide some kind of user-friendly description to a client explaining why certain envelopes
were not yet delivered. Description will be simply logged on a sender side.

The followup for this change will be an extention on status-go side that will send particular envelope
errors to a client (e.g. status-react).

* Store errors as array and cover new changes with tests
2019-03-26 10:15:16 +02:00
Dmitry Shulyak
37436ddc1e
Keep connection if time is not synchronized between several peers (#22) 2019-03-20 17:21:53 +02:00
Dmitry Shulyak
9e2f8db257
Send event when envelope was received from a peer (#19)
* Send event when envelope was received from a peer

* Update event description
2019-02-19 09:08:40 +02:00
Adam Babik
82a7734c36
add event EventMailServerSyncFinished (#15) 2018-12-13 09:51:47 +01:00
Adam Babik
27e2442271
add request validation for mail sync (#14) 2018-12-11 09:22:16 +01:00
Adam Babik
6e5af097a1
add opcodes to sync messages (#13)
Two opcodes were introduced p2pSyncRequestCode and p2pSyncResponseCode. MailServer interface got extended with SyncMail(*Peer, SyncMailRequest) error.

There are no breaking changes.
2018-12-06 09:33:58 +01:00
Dmitry
19c3d76859 Extend mail response with a peer and refactor tests 2018-12-03 10:32:48 +02:00
Dmitry
96d2199ed5 Send events when mail request is sent or expired 2018-11-28 10:49:39 +02:00
Dmitry
76c2447643 Extend whisper protocol with confirmations and add necessary events 2018-11-26 09:32:41 +02:00
Igor Mandrigin
14e1bbfd9b Add an response that mailserver failed to complete request. 2018-10-18 10:59:46 +02:00
Adam Babik
ca91ec35f6
Support batched messages in p2pMessageCode (#3) 2018-10-16 17:41:10 +02:00
Dmitry
d441b04413 Apply whisper metrics patch 2018-10-01 11:11:05 +03:00
Dmitry
3dff91373a Apply mail server cursor patch 2018-10-01 11:11:00 +03:00
Dmitry
07151c8376 Apply mail server completion response 2018-10-01 11:10:11 +03:00
Dmitry
8ff11fbbc0 Apply time source patch with changes in tests 2018-10-01 11:10:07 +03:00
Dmitry
5e489619d5 Apply whisper confirmations patch 2018-10-01 11:10:01 +03:00
Dmitry
536333e998 Apply 0014-whisperv6-notifications patches to status-go/whisper module 2018-10-01 11:09:03 +03:00
b00ris
1462c1b12a whisper: add light mode check to handshake (#16725) 2018-09-05 10:57:45 +02:00
Adam Babik
739fa07809 whisper: fix loop in expire() (#17532) 2018-08-29 13:56:13 +03:00
Wenbiao Zheng
98fed4d847 all: remove the duplicate 'the' in annotations (#17509) 2018-08-27 11:49:29 +03:00
Ralph Caraveo III
9f139cbd6b all: switch out defunct set library to different one (#16873)
* keystore, ethash, eth, miner, rpc, whisperv6: tech debt with now defunct set.

* whisperv5: swap out gopkg.in/fatih/set.v0 with supported set
2018-07-16 10:54:19 +03:00
Adrià Cidre
6d0071d84c whisper: Reduce message loop log from Warn to Info (#17055) 2018-06-26 04:31:05 -04:00
Vlad
31f7f7af81 whisper: topics replaced by bloom filters 2018-03-01 16:04:09 +01:00
Vlad
d550d9390c whsiper: refactoring 2018-02-27 23:38:20 +01:00
Vlad
b5923603ad whisper: refactoring 2018-02-23 14:52:25 +01:00
Vlad
c86ffe8edc whisper: light client mode introduced 2018-02-23 11:10:28 +01:00
gluk256
591032a51b whisper: bloom filter refactoring (#16046)
* whisper: bloom filter refactoring

* whisper: fixed full node
2018-02-09 17:25:23 +02:00
gluk256
05ab15d98c whisper: change the whisper message format so as to add the payload size (#15870)
* whisper: message format changed

* whisper: tests fixed

* whisper: style fixes

* whisper: fixed names, fixed failing tests

* whisper: fix merge issue in #15870

Occured while using the github online merge tool. Lesson learned.

* whisper: fix a gofmt error for #15870
2018-01-30 10:55:08 +02:00
Guillaume Ballet
188304c519 whisper: remove linter warnings (#15972)
* whisper: fixes warnings from the code linter

* whisper: more non-API-breaking changes

The remaining lint errors are because of auto-generated
files and one is because an exported function has a non-
exported return type. Changing this would break the API,
and will be part of another commit for easier reversal.

* whisper: un-export NewSentMessage to please the linter

This is an API change, which is why it's in its own commit.
This change was initiated after the linter complained that
the returned type wasn't exported. I chose to un-export
the function instead of exporting the type, because that
type is an implementation detail that I would like to
change in the near future to make the code more
readable and with an increased coverage.

* whisper: update gencodec output after upgrading it to new lint standards
2018-01-26 13:45:10 +02:00
gluk256
b45285c479 whisper/whisperv6: implement pow/bloom exchange protocol (#15802)
This is the main feature of v6.
2018-01-12 12:11:22 +01:00
gluk256
78926a3c9a whisper/whisperv6: PoW requirement (#15701)
New Whisper-level message introduced (PoW requirement),
corresponding logic added, plus some tests.
2017-12-21 15:17:27 +01:00
gluk256
7cc792de1b whisper/whisperv6: message bundling (#15666)
Changed the communication protocol for ordinary message,
according to EIP 627. Messages will be send in bundles, i.e.
array of messages will be sent instead of single message.
2017-12-21 10:31:44 +01:00
Guillaume Ballet
21084335dd whisper/whisperv6: remove Version from the envelope (#15621) 2017-12-08 16:08:56 +01:00
Guillaume Ballet
06253f58e8 whisper/whisperv6: remove aesnonce (#15578)
As per EIP-627, the salt for symmetric encryption is now
part of the payload. This commit does that.
2017-12-08 11:40:59 +01:00
ferhat elmas
cb7d9c1043 build: enable unconvert linter (#15456)
* build: enable unconvert linter

 - fixes #15453
 - update code base for failing cases

* cmd/puppeth: replace syscall.Stdin with os.Stdin.Fd() for unconvert linter
2017-11-10 19:06:45 +02:00
gluk256
5772f810f7 whisper/whisperv6: initial commit (clone of v5) (#15324) 2017-11-03 21:29:49 +01:00