Commit graph

416 commits

Author SHA1 Message Date
Joakim Frostegård
b9e875ad90 aquatic_http_load_test: slowly open a number of connections 2020-07-20 16:16:06 +02:00
Joakim Frostegård
8d41d98fec Update TODO 2020-07-20 15:46:38 +02:00
Joakim Frostegård
19ee41eb72 aquatic_http: config: set poll timeout in microseconds, default to 10000 2020-07-20 15:46:17 +02:00
Joakim Frostegård
6471e4a8a9 Add scripts/run-load-test-http.sh 2020-07-20 15:21:25 +02:00
Joakim Frostegård
75ebe3208d aquatic_http_load_test: fix connection buffer issue, optimize 2020-07-20 15:21:02 +02:00
Joakim Frostegård
ff6eddfc85 WIP: aquatic_http_load_test: clean up config structs 2020-07-20 15:12:07 +02:00
Joakim Frostegård
da3b2bcd8c WIP: cleanup aquatic_http_load_test and aquatic_http_protocol 2020-07-20 14:50:19 +02:00
Joakim Frostegård
d1e9d24773 WIP: work on http load test (now partly working) and http protocol 2020-07-20 14:30:36 +02:00
Joakim Frostegård
5b0d364ccf WIP: start work on porting udp load test to http 2020-07-19 23:03:30 +02:00
Joakim Frostegård
4ac2012a2a aquatic_http: move protocol module to new crate aquatic_http_protocol 2020-07-19 21:59:31 +02:00
Joakim Frostegård
4caf174da5 aquatic_http: add criterion benchmark for announce response to bytes
Speedup of custom implementation compared to using bendy:

announce-response-to-bytes:

time:   [413.77 ns 415.34 ns 417.08 ns]
change: [-93.074% -93.021% -92.968%] (p = 0.00 < 0.01)
Performance has improved.
2020-07-19 16:56:13 +02:00
Joakim Frostegård
9df1f0ecc6 aquatic_http: rewrite request parsing, use smartstring
Use smartstring in PeerMapKey too.

Improves benchmark speed.

request-from-path:

time:   [2.1484 us 2.1530 us 2.1586 us]
change: [-24.246% -23.908% -23.570%] (p = 0.00 < 0.01)
Performance has improved.
2020-07-19 15:38:26 +02:00
Joakim Frostegård
fc9b4c8e0d aquatic_http: protocol: add test for scrape request parsing 2020-07-19 14:28:48 +02:00
Joakim Frostegård
12a62f5df4 aquatic_http: add test for announce request parsing 2020-07-19 14:23:48 +02:00
Joakim Frostegård
f078542ffc Update TODO 2020-07-19 14:22:26 +02:00
Joakim Frostegård
54e801c6a9 aquatic http: request from path: whitelist url keys for security
This way, the non-ddos-resistant hashmap hasher can be kept. Also
improves performance, probably simply because less hashing work
is done:

time:   [2.8050 us 2.8156 us 2.8274 us]
change: [-22.940% -22.412% -21.916%] (p = 0.00 < 0.01)
Performance has improved.
2020-07-19 13:46:36 +02:00
Joakim Frostegård
09d27d5075 Update TODO 2020-07-19 13:27:54 +02:00
Joakim Frostegård
2fe42e7235 update criterion script 2020-07-19 13:26:17 +02:00
Joakim Frostegård
b17c9999f0 aquatic_http: request from path: remove from map to avoid some clones
change: [-3.8362% -3.2346% -2.5437%] (p = 0.00 < 0.01)
Performance has improved.
2020-07-19 13:24:48 +02:00
Joakim Frostegård
ca8d278a03 aquatic_http: parse_key_value_pairs_memchr: small code improvement 2020-07-19 13:06:39 +02:00
Joakim Frostegård
a8e355f22a aquatic_http: add criterion benchmarks for request from path parsing
About 35% improvement by using both memchr methods
2020-07-19 01:58:41 +02:00
Joakim Frostegård
9b0956cc91 aquatic_http: Request::from_http_get_path: add memchar query str parser 2020-07-18 18:40:27 +02:00
Joakim Frostegård
a8900c99ab Update TODO 2020-07-18 17:55:58 +02:00
Joakim Frostegård
84facea0ca aquatic_http: add hand-written ScrapeResponse serialization 2020-07-18 17:46:16 +02:00
Joakim Frostegård
17385c92ad Update TODO 2020-07-18 16:32:28 +02:00
Joakim Frostegård
81708e0adc aquatic_http: add manual bencoding for announce and failure responses
This is more performant
2020-07-18 16:28:42 +02:00
Joakim Frostegård
056cd41732 aquatic_http: add memchr version of urldecode, which might be faster 2020-07-18 06:05:13 +02:00
Joakim Frostegård
f94c52da77 aquatic_http: send_response: use itoa and Vec::with_capacity
This leads to fewer allocations and possibly better performance.
2020-07-18 03:05:40 +02:00
Joakim Frostegård
8ddccb20aa aquatic_http: use new trait Ip for ip generic parameters 2020-07-08 14:22:30 +02:00
Joakim Frostegård
2386dd0e8b aquatic_http: parameterise many data structures over peer IP protocol 2020-07-08 14:13:10 +02:00
Joakim Frostegård
da4ba14b47 aquatic_http: EstablishedConnection.send_response: fix small bug 2020-07-08 12:28:46 +02:00
Joakim Frostegård
43a33d80c4 aquatic_http: add ipv6 compact responses; fix ipv4/ipv6 issue 2020-07-08 12:26:41 +02:00
Joakim Frostegård
5ff00e866d Update TODO 2020-07-08 11:07:41 +02:00
Joakim Frostegård
97a84a2a03 Update TODO 2020-07-08 10:08:25 +02:00
Joakim Frostegård
fb4b190173 Update TODO 2020-07-05 20:33:31 +02:00
Joakim Frostegård
c53c3928ab aquatic_http: fix clippy error, or at least log possible error 2020-07-05 20:33:24 +02:00
Joakim Frostegård
b65297195a aquatic_http, aquatic_common_tcp: fix some clippy warnings 2020-07-05 20:22:03 +02:00
Joakim Frostegård
8269ae2994 aquatic_http: remove (no longer used) dependency serde_urlencoded 2020-07-05 19:50:52 +02:00
Joakim Frostegård
8391cb4bd5 Update TODO 2020-07-05 19:49:13 +02:00
Joakim Frostegård
b1c11e2d0c Fix typo in README 2020-07-05 19:47:20 +02:00
Joakim Frostegård
9443082575 Update TODO with info about connection obfuscation extension 2020-07-04 19:58:26 +02:00
Joakim Frostegård
76a340574e aquatic_http: debug log StreamEnded, keep connection on parse error 2020-07-04 19:38:37 +02:00
Joakim Frostegård
3d0de73873 Update TODO 2020-07-04 15:07:33 +02:00
Joakim Frostegård
8ebfb1d0ce aquatic_http network: avoid infinite loop case; minor other changes 2020-07-04 15:04:31 +02:00
Joakim Frostegård
656efc7d4e Update TODO 2020-07-04 13:55:15 +02:00
Joakim Frostegård
ccafdc5cd3 aquatic_http: clean up clode 2020-07-04 13:51:43 +02:00
Joakim Frostegård
d48573a28e aquatic_http: network: update inline hints, format code 2020-07-04 13:47:47 +02:00
Joakim Frostegård
c28e764929 aquatic_http: add Connection methods, enabling making 'inner' private 2020-07-04 13:35:52 +02:00
Joakim Frostegård
1ea1f0b749 aquatic_http: in Connection.inner, replace Either with new enum 2020-07-04 13:28:55 +02:00
Joakim Frostegård
73b1646c71 aquatic_http: refactor TlsHandshakeMachine, adding error type 2020-07-04 13:10:57 +02:00