diff --git a/test/udp_heartbeat.c b/test/udp_heartbeat.c index f964bca..c440d90 100644 --- a/test/udp_heartbeat.c +++ b/test/udp_heartbeat.c @@ -17,6 +17,7 @@ #include #include #include +#include #define HB_MAGIX 0xBEA7BEA7 @@ -54,12 +55,14 @@ struct HBPeer { struct sockaddr_in peer_addr; time_t last_ok; enum PeerState state; - TAILQ_ENTRY(HBPeer) entry; + //TAILQ_ENTRY(HBPeer) entry; + struct TailQ entry; }; struct HBContext { struct IOMuxFD sock_fd; - TAILQ_HEAD(, HBPeer) peers; + //TAILQ_HEAD(, HBPeer) peers; + struct TailQ peers; //of HBPeer struct IOMux *mux; }; @@ -91,14 +94,15 @@ void peer_add_addr(struct HBContext *ctx, const struct sockaddr_in *addr) int usec; if (peer != NULL) { - UC_LOGF(UC_LL_INFO, LMAIN, "Ignorming adding existing peer %s:%u\n", + UC_LOGF(UC_LL_INFO, LMAIN, "Ignoring adding existing peer %s:%u\n", inet_ntoa(addr->sin_addr), addr->sin_port); return; } peer = calloc(1, sizeof *peer); peer->peer_addr = *addr; - TAILQ_INSERT_TAIL(&ctx->peers, peer, entry); + //TAILQ_INSERT_TAIL(&ctx->peers, peer, entry); + uc_tailq_insert_tail(&ctx->peers, &peer->entry); peer->timer.callback = peer_timer_cb; peer->timer.cookie_ptr = ctx; @@ -143,16 +147,17 @@ void peer_send(struct HBContext *ctx, struct HBPeer *peer) struct HBPeer *hb_peer_find(struct HBContext *ctx, const struct sockaddr_in *peer_addr) { - struct HBPeer *peer; + struct HBPeer *peer = NULL; - TAILQ_FOREACH(peer, &ctx->peers, entry) { + UC_TAILQ_FOREACH_CONTAINER(peer, entry, &ctx->peers) { if (peer_addr->sin_addr.s_addr == peer->peer_addr.sin_addr.s_addr && peer_addr->sin_port == peer->peer_addr.sin_port) { - break; + + return peer; } } - return peer; + return NULL; } void peer_do_state(struct HBPeer *peer, enum PeerEvent event) @@ -243,7 +248,7 @@ void init_hb_context(struct HBContext *ctx, uint16_t local_port) return; } - TAILQ_INIT(&ctx->peers); + uc_tailq_init(&ctx->peers); ctx->sock_fd.fd = sock_fd; ctx->sock_fd.what = MUX_EV_READ;