mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-16 10:49:26 +03:00
vere: parse packet header only once
Instead of picking out the protocol version separately from building the u3_head struct, parse into that struct once, and then use that going forward.
This commit is contained in:
parent
231ea7715d
commit
176ed23c85
@ -679,37 +679,19 @@ _ames_recv_cb(uv_udp_t* wax_u,
|
||||
unsigned flg_i)
|
||||
{
|
||||
u3_ames* sam_u = wax_u->data;
|
||||
|
||||
c3_o pas_o = c3y;
|
||||
c3_y* byt_y = (c3_y*)buf_u->base;
|
||||
c3_y* bod_y = byt_y + 4;
|
||||
u3_head hed_u;
|
||||
|
||||
// ensure a sane message size
|
||||
//
|
||||
if (4 >= nrd_i) {
|
||||
pas_o = c3n;
|
||||
}
|
||||
|
||||
// ensure the protocol version matches ours
|
||||
//
|
||||
if ( c3y == pas_o
|
||||
&& (c3y == sam_u->fit_o)
|
||||
&& (sam_u->ver_y != (0x7 & *((c3_w*)buf_u->base))) )
|
||||
{
|
||||
pas_o = c3n;
|
||||
|
||||
sam_u->vet_d++;
|
||||
if ( 0 == (sam_u->vet_d % 100) ) {
|
||||
u3l_log("ames: %" PRIu64 " dropped for version mismatch\n", sam_u->vet_d);
|
||||
}
|
||||
}
|
||||
|
||||
if (c3y == pas_o) {
|
||||
c3_y* byt_y = (c3_y*)buf_u->base;
|
||||
c3_y* bod_y = byt_y + 4;
|
||||
u3_head hed_u;
|
||||
|
||||
// unpack the packet header
|
||||
//
|
||||
{
|
||||
else {
|
||||
c3_w hed_w = (byt_y[0] << 0)
|
||||
| (byt_y[1] << 8)
|
||||
| (byt_y[2] << 16)
|
||||
@ -722,6 +704,21 @@ _ames_recv_cb(uv_udp_t* wax_u,
|
||||
hed_u.enc_o = (hed_w >> 27) & 0x1;
|
||||
}
|
||||
|
||||
// ensure the protocol version matches ours
|
||||
//
|
||||
if ( c3y == pas_o
|
||||
&& (c3y == sam_u->fit_o)
|
||||
&& (sam_u->ver_y != hed_u.ver_y) )
|
||||
{
|
||||
pas_o = c3n;
|
||||
|
||||
sam_u->vet_d++;
|
||||
if ( 0 == (sam_u->vet_d % 100) ) {
|
||||
u3l_log("ames: %" PRIu64 " dropped for version mismatch\n", sam_u->vet_d);
|
||||
}
|
||||
}
|
||||
|
||||
if (c3y == pas_o) {
|
||||
// ensure the mug is valid
|
||||
//
|
||||
if ( hed_u.mug_l != _ca_mug_body(nrd_i - 4, bod_y) ) {
|
||||
|
Loading…
Reference in New Issue
Block a user