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
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
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
84facea0ca
aquatic_http: add hand-written ScrapeResponse serialization
2020-07-18 17:46:16 +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
2386dd0e8b
aquatic_http: parameterise many data structures over peer IP protocol
2020-07-08 14:13:10 +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
b65297195a
aquatic_http, aquatic_common_tcp: fix some clippy warnings
2020-07-05 20:22:03 +02:00
Joakim Frostegård
829701f4da
aquatic_http: debug-log request GET path, use debug mode for bytes read
2020-07-04 12:38:30 +02:00
Joakim Frostegård
c50dec3496
aquatic_http: add PeerMapKey with PeerID and Either<Ip, announce key>
2020-07-04 12:00:36 +02:00
Joakim Frostegård
2f2da8deb0
aquatic_http: AnnounceRequest: make numwant optional, remove trackerid
2020-07-04 11:20:58 +02:00
Joakim Frostegård
6b7ce0e211
aquatic_http: error response on invalid request; rename response types
2020-07-04 11:08:48 +02:00
Joakim Frostegård
15c75579da
aquatic_http request url decode: reject some invalid data
2020-07-03 17:54:59 +02:00
Joakim Frostegård
c2f79aa368
aquatic_http: reduce allocations in Request::urldecode
2020-07-03 17:43:34 +02:00
Joakim Frostegård
7419c51434
aquatic_http protocol: refactor into more submodules, other fixes
2020-07-03 17:25:31 +02:00
Joakim Frostegård
52cc7d8acb
aquatic_http: write custom deserialize logic for Request
2020-07-03 17:10:30 +02:00
Joakim Frostegård
16333b5a08
aquatic_http: serialize info_hash and peer_id properly
2020-07-03 14:30:00 +02:00
Joakim Frostegård
52a29fc14a
aquatic_http: store info_hash and peer_id in [u8; 20]
2020-07-03 13:17:02 +02:00
Joakim Frostegård
f28abbb7f6
aquatic_http: fix issue with incorrect parsing of info_hash, peer_id
2020-07-03 13:06:09 +02:00
Joakim Frostegård
f3dcc8762e
Update TODO; minor fixes to aquatic_http and aquatic_common_tcp
2020-07-02 23:32:48 +02:00
Joakim Frostegård
fb6caf7343
aquatic_http: prococol module: parse Request from path
2020-07-02 22:53:03 +02:00
Joakim Frostegård
2e53a2adc1
add aquatic_common_tcp crate, move common functionality there
2020-07-02 16:34:36 +02:00
Joakim Frostegård
1eaf2a0351
aquatic_http: AnnounceRequest.compact: default to true
2020-07-02 15:58:23 +02:00
Joakim Frostegård
ff4fcc163d
aquatic_http: deserialize AnnounceRequest.compact to bool
2020-07-02 15:51:45 +02:00
Joakim Frostegård
6fc4b693cd
aquatic_http: clean up / move around code; update TODO
2020-07-02 15:34:56 +02:00
Joakim Frostegård
c8de9857f8
aquatic_http: check info_hash and peer_id len when deserializing
2020-07-02 15:29:01 +02:00
Joakim Frostegård
5e7f8bea20
aquatic_http: add compact response peer repr, not tested
2020-07-02 14:37:47 +02:00
Joakim Frostegård
d2e950b431
aquatic_http: use untagged enum for Response; update TODO
2020-07-02 13:58:32 +02:00
Joakim Frostegård
6b1f11635b
aquatic_http: bencoded response with content-length
2020-07-02 13:47:37 +02:00
Joakim Frostegård
a487347a0d
aquatic_http: continue implementation work
2020-07-02 13:21:39 +02:00
Joakim Frostegård
76079cf66e
WIP: more work on aquatic_http
2020-07-02 00:39:50 +02:00
Joakim Frostegård
404e528616
WIP: start work on http tracker
2020-07-01 18:56:19 +02:00