fix hashing

pull/1/head
Jeff Becker 6 years ago
parent 5fb1953ee9
commit 000658d7b0
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -341,7 +341,7 @@ namespace iwp
auto total = msginfo.totalsize();
buffer.resize(total);
auto fragsz = msginfo.fragsize();
auto ptr = buffer.data();
auto ptr = &buffer[0];
for(byte_t idx = 0; idx < msginfo.numfrags(); ++idx)
{
if(!status.test(idx))
@ -360,13 +360,15 @@ namespace iwp
status.reset();
uint8_t fragid = 0;
uint16_t fragsize = mtu;
while((buf.sz - (buf.cur - buf.base)) > fragsize)
size_t left = buf.sz;
while(left > fragsize)
{
auto &frag = frags[fragid];
frag.resize(fragsize);
memcpy(frag.data(), buf.cur, fragsize);
buf.cur += fragsize;
fragid++;
left -= fragsize;
}
uint16_t lastfrag = buf.sz - (buf.cur - buf.base);
// set info for xmit
@ -474,11 +476,12 @@ namespace iwp
auto itr = rx.find(id);
if(itr == rx.end())
{
rx[id] = new transit_message(x);
auto msg = new transit_message(x);
rx[id] = msg;
llarp::Debug("got message XMIT with ", (int)x.numfrags(),
" fragments");
// inserted, put last fragment
rx[id]->put_lastfrag(hdr.data() + sizeof(x.buffer), x.lastfrag());
msg->put_lastfrag(hdr.data() + sizeof(x.buffer), x.lastfrag());
push_ackfor(id, 0);
if(x.numfrags() == 0)
{
@ -703,8 +706,8 @@ namespace iwp
session *self = static_cast< session * >(s->impl);
transit_message *m = new transit_message(self);
auto id = self->frame.txids++;
llarp_hash_t digest;
self->crypto->hash(digest, msg);
llarp_shorthash_t digest;
self->crypto->shorthash(digest, msg);
m->put_message(msg, digest, id);
self->add_outbound_message(id, m);
return true;
@ -714,7 +717,9 @@ namespace iwp
add_outbound_message(uint64_t id, transit_message *msg)
{
llarp::Debug("add outbound message ", id, " of size ",
msg->msginfo.totalsize());
msg->msginfo.totalsize(),
" numfrags=", (int)msg->msginfo.numfrags(),
" lastfrag=", (int)msg->msginfo.lastfrag());
frame.queue_tx(id, msg);
pump();
}

Loading…
Cancel
Save