diff --git a/adsbus/receive.c b/adsbus/receive.c index 74fb013..b39212f 100644 --- a/adsbus/receive.c +++ b/adsbus/receive.c @@ -144,6 +144,9 @@ void receive_new(int fd, void *unused, struct peer *on_close) { receive->parser_wrapper = receive_autodetect_parse; receive->prev = NULL; receive->next = receive_head; + if (receive->next) { + receive->next->prev = receive; + } receive_head = receive; peer_epoll_add((struct peer *) receive, EPOLLIN); diff --git a/adsbus/send.c b/adsbus/send.c index 369459a..c9e98e3 100644 --- a/adsbus/send.c +++ b/adsbus/send.c @@ -126,6 +126,9 @@ void send_new(int fd, struct serializer *serializer, struct peer *on_close) { send->serializer = serializer; send->prev = NULL; send->next = serializer->send_head; + if (send->next) { + send->next->prev = send; + } serializer->send_head = send; peer_epoll_add((struct peer *) send, EPOLLIN);