fprintf(stderr,"R %s: Detected input format %s\n",receive->id,parsers[i].name);
receive->parser_wrapper=receive_parse_wrapper;
receive->parser=parsers[i].parse;
returntrue;
}
}
returnfalse;
}
staticvoidreceive_read(structpeer*peer){
structreceive*receive=(structreceive*)peer;
if(buf_fill(&receive->buf,receive->peer.fd)<=0){
fprintf(stderr,"R %s: Connection closed by peer\n",receive->id);
close(receive->peer.fd);
return;
}
structpacketpacket={0};
while(receive->parser_wrapper(receive,&packet)){
send_write(&packet);
}
if(receive->buf.length==BUF_LEN_MAX){
fprintf(stderr,"R %s: Input buffer overrun. This probably means that adsbus doesn't understand the protocol that this source is speaking.\n",receive->id);