mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-21 09:51:50 +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);
|
memset(reply.out.dst.sid,0xff,SID_SIZE);
|
||||||
}
|
}
|
||||||
reply.out.dst.port=MDP_PORT_RHIZOME_RESPONSE;
|
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
|
reply.out.payload[0]='B'; // reply contains blocks
|
||||||
// include 16 bytes of BID prefix for identification
|
// include 16 bytes of BID prefix for identification
|
||||||
bcopy(&mdp->out.payload[0],&reply.out.payload[1],16);
|
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;
|
if (blockBytes>blockLength) blockBytes=blockLength;
|
||||||
// read data for block
|
// read data for block
|
||||||
if (blob_bytes>=blockOffset) {
|
if (blob_bytes>=blockOffset) {
|
||||||
|
if (overlay_queue_remaining(reply.out.queue) < 10)
|
||||||
|
break;
|
||||||
|
|
||||||
sqlite3_blob_read(blob,&reply.out.payload[1+16+8+8],
|
sqlite3_blob_read(blob,&reply.out.payload[1+16+8+8],
|
||||||
blockBytes,blockOffset);
|
blockBytes,blockOffset);
|
||||||
reply.out.payload_length=1+16+8+8+blockBytes;
|
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
|
// Mark terminal block if required
|
||||||
if (blockOffset+blockBytes==blob_bytes) reply.out.payload[0]='T';
|
if (blockOffset+blockBytes==blob_bytes) reply.out.payload[0]='T';
|
||||||
// send packet
|
// send packet
|
||||||
overlay_mdp_dispatch(&reply,0 /* system generated */, NULL,0);
|
if (overlay_mdp_dispatch(&reply,0 /* system generated */, NULL,0))
|
||||||
|
break;
|
||||||
} else break;
|
} else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,6 +125,12 @@ overlay_queue_dump(overlay_txqueue *q)
|
|||||||
}
|
}
|
||||||
#endif
|
#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)
|
int overlay_payload_enqueue(struct overlay_frame *p)
|
||||||
{
|
{
|
||||||
/* Add payload p to queue q.
|
/* 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 overlayServerMode();
|
||||||
int overlay_payload_enqueue(struct overlay_frame *p);
|
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,
|
int overlay_route_record_link( time_ms_t now, struct subscriber *to,
|
||||||
struct subscriber *via,int sender_interface,
|
struct subscriber *via,int sender_interface,
|
||||||
unsigned int s1,unsigned int s2,int score,int gateways_en_route);
|
unsigned int s1,unsigned int s2,int score,int gateways_en_route);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user