inbound message fixes

pull/1/head
Jeff Becker 6 years ago
parent 2075f9a6b8
commit c2d76dce3a
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -248,6 +248,14 @@ namespace iwp
// inbound
transit_message(const xmit &x) : msginfo(x)
{
byte_t fragidx = 0;
uint16_t fragsize = x.fragsize();
while(fragidx < x.numfrags())
{
frags.emplace(fragidx, fragsize);
++fragidx;
}
status.reset();
}
// outbound
@ -338,18 +346,18 @@ namespace iwp
}
void
put_message(llarp_buffer_t &buf, const byte_t *hash, uint64_t id,
put_message(llarp_buffer_t buf, const byte_t *hash, uint64_t id,
uint16_t mtu = 1024)
{
status.reset();
uint8_t fragid = 0;
uint16_t fragsize = mtu;
while((buf.cur - buf.base) > fragsize)
while((buf.sz - (buf.cur - buf.base)) > fragsize)
{
fragment_t frag(fragsize);
auto &frag = frags[fragid++];
frag.resize(fragsize);
memcpy(frag.data(), buf.cur, fragsize);
buf.cur += fragsize;
frags[fragid++] = frag;
}
uint16_t lastfrag = buf.sz - (buf.cur - buf.base);
// set info for xmit
@ -457,6 +465,8 @@ namespace iwp
auto itr = rx.emplace(id, x);
if(itr.second)
{
llarp::Debug("got message XMIT with ", (int)x.numfrags(),
" fragments");
// inserted, put last fragment
itr.first->second.put_lastfrag(hdr.data() + sizeof(x.buffer),
x.lastfrag());
@ -558,11 +568,13 @@ namespace iwp
bool
next_frame(llarp_buffer_t &buf)
{
if(sendqueue.size())
auto left = sendqueue.size();
llarp::Debug("next frame, ", left, " frames left in send queue");
if(left)
{
auto &send = sendqueue.front();
buf.base = send.data();
buf.cur = send.data();
buf.base = &send[0];
buf.cur = &send[0];
buf.sz = send.size();
return true;
}
@ -692,6 +704,8 @@ namespace iwp
void
add_outbound_message(uint64_t id, transit_message *msg)
{
llarp::Debug("add outbound message ", id, " of size ",
msg->msginfo.totalsize());
frame.queue_tx(id, msg);
pump();
}

@ -280,6 +280,7 @@ llarp_router::handle_router_ticker(void *user, uint64_t orig, uint64_t left)
void
llarp_router::Tick()
{
llarp::Debug("tick router");
if(sendPadding)
{
for(auto &link : links)
@ -435,6 +436,8 @@ llarp_router::Run()
llarp::Info("connecting to node ", itr.first);
try_connect(itr.second);
}
ScheduleTicker(500);
}
bool

Loading…
Cancel
Save