diff --git a/adsbus/opts.c b/adsbus/opts.c index 86ba9af..d90af05 100644 --- a/adsbus/opts.c +++ b/adsbus/opts.c @@ -76,7 +76,7 @@ bool opts_add_connect_send(char *arg) { return false; } - incoming_new(host, arg, send_new_wrapper, serializer); + outgoing_new(host, arg, send_new_wrapper, serializer); free(host); return true; } diff --git a/adsbus/outgoing.c b/adsbus/outgoing.c index 6ea7669..32a899d 100644 --- a/adsbus/outgoing.c +++ b/adsbus/outgoing.c @@ -78,8 +78,7 @@ static void outgoing_disconnect_handler(struct peer *peer) { assert(!close(outgoing->peer.fd)); } fprintf(stderr, "O %s: Peer disconnected; reconnecting...\n", outgoing->id); - - outgoing_resolve(outgoing); + outgoing_retry(outgoing); } static void outgoing_connect_result(struct outgoing *outgoing, int result) { diff --git a/adsbus/receive.c b/adsbus/receive.c index 391c276..74fb013 100644 --- a/adsbus/receive.c +++ b/adsbus/receive.c @@ -1,7 +1,9 @@ -#include -#include #include +#include +#include +#include #include +#include #include #include "airspy_adsb.h" @@ -127,6 +129,9 @@ void receive_cleanup() { } void receive_new(int fd, void *unused, struct peer *on_close) { + int res = shutdown(fd, SHUT_WR); + assert(res == 0 || (res == -1 && errno == ENOTSOCK)); + struct receive *receive = malloc(sizeof(*receive)); assert(receive); diff --git a/adsbus/send.c b/adsbus/send.c index 71c1415..52e009c 100644 --- a/adsbus/send.c +++ b/adsbus/send.c @@ -1,10 +1,12 @@ -#include -#include #include -#include -#include -#include +#include #include +#include +#include +#include +#include +#include +#include #include "airspy_adsb.h" #include "beast.h" @@ -115,6 +117,9 @@ struct serializer *send_get_serializer(char *name) { } void send_new(int fd, struct serializer *serializer, struct peer *on_close) { + int res = shutdown(fd, SHUT_RD); + assert(res == 0 || (res == -1 && errno == ENOTSOCK)); + struct send *send = malloc(sizeof(*send)); assert(send);