mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-20 09:26:37 +00:00
Reduce priority of rhizome on MDP, stop sooner when packet queues fill
This commit is contained in:
parent
fec19eee58
commit
88f7fef992
@ -109,7 +109,7 @@ int overlay_mdp_service_rhizomerequest(overlay_mdp_frame *mdp)
|
||||
memset(reply.out.dst.sid,0xff,SID_SIZE);
|
||||
}
|
||||
reply.out.dst.port=MDP_PORT_RHIZOME_RESPONSE;
|
||||
reply.out.queue=OQ_ORDINARY;
|
||||
reply.out.queue=OQ_OPPORTUNISTIC;
|
||||
reply.out.payload[0]='B'; // reply contains blocks
|
||||
// include 16 bytes of BID prefix for identification
|
||||
bcopy(&mdp->out.payload[0],&reply.out.payload[1],16);
|
||||
@ -129,6 +129,9 @@ int overlay_mdp_service_rhizomerequest(overlay_mdp_frame *mdp)
|
||||
if (blockBytes>blockLength) blockBytes=blockLength;
|
||||
// read data for block
|
||||
if (blob_bytes>=blockOffset) {
|
||||
if (overlay_queue_remaining(reply.out.queue) < 10)
|
||||
break;
|
||||
|
||||
sqlite3_blob_read(blob,&reply.out.payload[1+16+8+8],
|
||||
blockBytes,blockOffset);
|
||||
reply.out.payload_length=1+16+8+8+blockBytes;
|
||||
@ -136,7 +139,8 @@ int overlay_mdp_service_rhizomerequest(overlay_mdp_frame *mdp)
|
||||
// Mark terminal block if required
|
||||
if (blockOffset+blockBytes==blob_bytes) reply.out.payload[0]='T';
|
||||
// send packet
|
||||
overlay_mdp_dispatch(&reply,0 /* system generated */, NULL,0);
|
||||
if (overlay_mdp_dispatch(&reply,0 /* system generated */, NULL,0))
|
||||
break;
|
||||
} else break;
|
||||
}
|
||||
|
||||
|
@ -125,6 +125,12 @@ overlay_queue_dump(overlay_txqueue *q)
|
||||
}
|
||||
#endif
|
||||
|
||||
int overlay_queue_remaining(int queue){
|
||||
if (queue<0 || queue>=OQ_MAX)
|
||||
return -1;
|
||||
return overlay_tx[queue].maxLength - overlay_tx[queue].length;
|
||||
}
|
||||
|
||||
int overlay_payload_enqueue(struct overlay_frame *p)
|
||||
{
|
||||
/* Add payload p to queue q.
|
||||
|
1
serval.h
1
serval.h
@ -512,6 +512,7 @@ overlay_node *overlay_route_find_node(const unsigned char *sid,int prefixLen,int
|
||||
|
||||
int overlayServerMode();
|
||||
int overlay_payload_enqueue(struct overlay_frame *p);
|
||||
int overlay_queue_remaining(int queue);
|
||||
int overlay_route_record_link( time_ms_t now, struct subscriber *to,
|
||||
struct subscriber *via,int sender_interface,
|
||||
unsigned int s1,unsigned int s2,int score,int gateways_en_route);
|
||||
|
Loading…
x
Reference in New Issue
Block a user