mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-20 05:37:57 +00:00
reversed changes that broke DNA tests. Improved dnaprotocol
test script slightly.
This commit is contained in:
parent
8977142a30
commit
2d718a297f
54
overlay.c
54
overlay.c
@ -88,7 +88,7 @@ void _TIMING_CHECK(const char *file,const char *func,int line)
|
||||
{
|
||||
long long now=overlay_gettime_ms();
|
||||
if (last_valid) {
|
||||
if (now-last_time>10) {
|
||||
if (now-last_time>5) {
|
||||
// More than 5ms spent in a given task, complain
|
||||
char msg[1024];
|
||||
snprintf(msg,1024,"Spent %lldms between %s:%d in %s() and here",
|
||||
@ -104,19 +104,6 @@ void _TIMING_CHECK(const char *file,const char *func,int line)
|
||||
last_time=now;
|
||||
}
|
||||
|
||||
long long last_loop_time=0;
|
||||
void LOOP_END()
|
||||
{
|
||||
long long now = overlay_gettime_ms();
|
||||
if (last_loop_time!=0 && now - last_loop_time>15){
|
||||
DEBUGF("Last loop took %lldms",now - last_loop_time);
|
||||
}
|
||||
}
|
||||
|
||||
void LOOP_START()
|
||||
{
|
||||
last_loop_time = overlay_gettime_ms();
|
||||
}
|
||||
|
||||
int overlayMode=0;
|
||||
|
||||
@ -159,7 +146,6 @@ int overlayServerMode()
|
||||
|
||||
struct pollfd fds[128];
|
||||
int fdcount;
|
||||
int r;
|
||||
|
||||
/* Create structures to use 1MB of RAM for testing */
|
||||
overlay_route_init(1);
|
||||
@ -227,17 +213,14 @@ int overlayServerMode()
|
||||
int vomp_tick_time=vomp_tick_interval();
|
||||
if (ms>vomp_tick_time) ms=vomp_tick_time;
|
||||
|
||||
LOOP_END();
|
||||
|
||||
if (ms>0){
|
||||
TIMING_CHECK();
|
||||
if (debug&DEBUG_VERBOSE_IO)
|
||||
DEBUGF("Waiting via poll() for up to %lldms", ms);
|
||||
TIMING_PAUSE();
|
||||
|
||||
/* Sanity check maximum poll timeout */
|
||||
if (ms<1) ms=1;
|
||||
if (ms>15000) ms=15000;
|
||||
r = poll(fds, fdcount, ms);
|
||||
|
||||
int r = poll(fds, fdcount, ms);
|
||||
TIMING_CHECK();
|
||||
if (r == -1)
|
||||
WHY_perror("poll");
|
||||
@ -248,10 +231,10 @@ int overlayServerMode()
|
||||
if (fds[i].revents)
|
||||
DEBUGF("fd #%d is ready (0x%x)\n", fds[i].fd, fds[i].revents);
|
||||
}
|
||||
}else
|
||||
r=0;
|
||||
|
||||
LOOP_START();
|
||||
/* Do high-priority audio handling first */
|
||||
TIMING_CHECK();
|
||||
vomp_tick();
|
||||
TIMING_CHECK();
|
||||
|
||||
if (r > 0) {
|
||||
/* We have data, so try to receive it */
|
||||
@ -277,29 +260,40 @@ int overlayServerMode()
|
||||
overlay_rx_messages();
|
||||
TIMING_CHECK();
|
||||
if (rhizome_enabled()) {
|
||||
TIMING_CHECK();
|
||||
rhizome_server_poll();
|
||||
TIMING_CHECK();
|
||||
rhizome_fetch_poll();
|
||||
TIMING_CHECK();
|
||||
}
|
||||
overlay_mdp_poll();
|
||||
TIMING_CHECK();
|
||||
monitor_poll();
|
||||
TIMING_CHECK();
|
||||
}
|
||||
} else {
|
||||
/* No data before tick occurred, so do nothing.
|
||||
Well, for now let's just check anyway. */
|
||||
if (debug&DEBUG_IO) fprintf(stderr,"poll() timeout.\n");
|
||||
|
||||
/* Do high-priority audio handling first */
|
||||
TIMING_CHECK();
|
||||
vomp_tick();
|
||||
overlay_rx_messages();
|
||||
TIMING_CHECK();
|
||||
if (rhizome_enabled()) {
|
||||
TIMING_CHECK();
|
||||
rhizome_server_poll();
|
||||
TIMING_CHECK();
|
||||
rhizome_fetch_poll();
|
||||
TIMING_CHECK();
|
||||
overlay_mdp_poll();
|
||||
TIMING_CHECK();
|
||||
monitor_poll();
|
||||
TIMING_CHECK();
|
||||
}
|
||||
}
|
||||
TIMING_CHECK();
|
||||
/* Check if we need to trigger any ticks on any interfaces */
|
||||
overlay_check_ticks();
|
||||
TIMING_CHECK();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -307,8 +307,17 @@ int overlay_rx_messages()
|
||||
*/
|
||||
unsigned char packet[16384];
|
||||
int plen=0;
|
||||
int c[OVERLAY_MAX_INTERFACES];
|
||||
int count=0;
|
||||
|
||||
/* Grab one packet from each interface in round-robin fashion */
|
||||
/* Look at all interfaces */
|
||||
for(i=0;i<overlay_interface_count;i++) { c[i]=(overlay_interfaces[i].observed>0); count+=c[i]; }
|
||||
|
||||
/* Grab packets from interfaces in round-robin fashion until all have been grabbed,
|
||||
or until we have spent too long (maybe 10ms?) */
|
||||
int now = overlay_gettime_ms();
|
||||
while(count>0)
|
||||
{
|
||||
for(i=0;i<overlay_interface_count;i++)
|
||||
{
|
||||
struct sockaddr src_addr;
|
||||
@ -359,6 +368,7 @@ int overlay_rx_messages()
|
||||
}
|
||||
else {
|
||||
if (debug&DEBUG_IO) fprintf(stderr,"Read NOTHING from dummy interface\n");
|
||||
c[i]=0; count--;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -366,7 +376,9 @@ int overlay_rx_messages()
|
||||
int recvttl=1;
|
||||
plen=recvwithttl(overlay_interfaces[i].fd,packet,sizeof(packet),
|
||||
&recvttl,&src_addr,&addrlen);
|
||||
if (plen>=0) {
|
||||
if (plen<0) {
|
||||
c[i]=0; count--;
|
||||
} else {
|
||||
/* We have a frame from this interface */
|
||||
if (debug&DEBUG_PACKETRX) {
|
||||
fflush(stdout);
|
||||
@ -374,8 +386,7 @@ int overlay_rx_messages()
|
||||
packet,plen);
|
||||
fflush(stderr);
|
||||
}
|
||||
if (debug&DEBUG_OVERLAYINTERFACES)
|
||||
fprintf(stderr,"Received %d bytes on interface #%d (%s)\n",plen,i,overlay_interfaces[i].name);
|
||||
if (debug&DEBUG_OVERLAYINTERFACES)fprintf(stderr,"Received %d bytes on interface #%d (%s)\n",plen,i,overlay_interfaces[i].name);
|
||||
|
||||
if (packetOk(i,packet,plen,NULL,recvttl,&src_addr,addrlen,1)) {
|
||||
WHY("Malformed packet");
|
||||
@ -384,6 +395,9 @@ int overlay_rx_messages()
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Don't sit here forever, or else we will never send any packets */
|
||||
if (overlay_gettime_ms()>(now+10)) break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ setup_servald_instance() {
|
||||
setup_servald_instances() {
|
||||
setup_servald
|
||||
DUMMYNET=/tmp/dummy
|
||||
rm $DUMMYNET
|
||||
touch $DUMMYNET
|
||||
assert [ -e $DUMMYNET ]
|
||||
setup_servald_instance A $DUMMYNET
|
||||
|
Loading…
Reference in New Issue
Block a user