Apparently I missed receive when I switched to the new list impl.

This commit is contained in:
Ian Gulliver
2016-03-02 18:54:41 -08:00
parent e2fd6be394
commit 7aa29f1364

View File

@@ -11,6 +11,7 @@
#include "buf.h" #include "buf.h"
#include "flow.h" #include "flow.h"
#include "json.h" #include "json.h"
#include "list.h"
#include "packet.h" #include "packet.h"
#include "peer.h" #include "peer.h"
#include "proto.h" #include "proto.h"
@@ -32,10 +33,9 @@ struct receive {
char parser_state[PARSER_STATE_LEN]; char parser_state[PARSER_STATE_LEN];
parser_wrapper parser_wrapper; parser_wrapper parser_wrapper;
parser parser; parser parser;
struct receive *prev; struct list_head receive_list;
struct receive *next;
}; };
static struct receive *receive_head = NULL; static struct list_head receive_head = LIST_HEAD_INIT(receive_head);
static void receive_new(int, void *, struct peer *); static void receive_new(int, void *, struct peer *);
@@ -97,14 +97,7 @@ static void receive_del(struct receive *receive) {
peer_count_in--; peer_count_in--;
peer_epoll_del((struct peer *) receive); peer_epoll_del((struct peer *) receive);
assert(!close(receive->peer.fd)); assert(!close(receive->peer.fd));
if (receive->prev) { list_del(&receive->receive_list);
receive->prev->next = receive->next;
} else {
receive_head = receive->next;
}
if (receive->next) {
receive->next->prev = receive->prev;
}
peer_call(receive->on_close); peer_call(receive->on_close);
free(receive); free(receive);
} }
@@ -152,20 +145,18 @@ static void receive_new(int fd, void __attribute__((unused)) *passthrough, struc
buf_init(&receive->buf); buf_init(&receive->buf);
memset(receive->parser_state, 0, PARSER_STATE_LEN); memset(receive->parser_state, 0, PARSER_STATE_LEN);
receive->parser_wrapper = receive_autodetect_parse; receive->parser_wrapper = receive_autodetect_parse;
receive->prev = NULL;
receive->next = receive_head; list_add(&receive->receive_list, &receive_head);
if (receive->next) {
receive->next->prev = receive;
}
receive_head = receive;
peer_epoll_add((struct peer *) receive, EPOLLIN); peer_epoll_add((struct peer *) receive, EPOLLIN);
fprintf(stderr, "R %s: New receive connection\n", receive->id); fprintf(stderr, "R %s: New receive connection\n", receive->id);
} }
void receive_cleanup() { void receive_cleanup() {
while (receive_head) { struct receive *iter, *next;
receive_del(receive_head); list_for_each_entry_safe(iter, next, &receive_head, receive_list) {
receive_del(iter);
} }
} }