diff --git a/src/algo_dup2.c b/src/algo_dup2.c index 3c1b991..8a3b03f 100644 --- a/src/algo_dup2.c +++ b/src/algo_dup2.c @@ -56,7 +56,7 @@ int algo_dup2_on_datagram(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdin for (int i = 0; i < 2; i++) { // 1. A whole packet has been read, we will find someone to write it - to_fdinfo = g_array_index(cat->socklist, struct evt_core_fdinfo*, i); + to_fdinfo = cat->socklist->len > i ? g_array_index(cat->socklist, struct evt_core_fdinfo*, i) : NULL; if (to_fdinfo == NULL) { fprintf(stderr, "No fd for cat %s in udp-read.\n", cat->name); continue; diff --git a/src/algo_naive.c b/src/algo_naive.c index 64f9cce..d821a05 100644 --- a/src/algo_naive.c +++ b/src/algo_naive.c @@ -32,7 +32,7 @@ int algo_naive_on_datagram(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdi // 1. A whole packet has been read, we will find someone to write it struct evt_core_cat* cat = evt_core_get_from_cat (ctx, "tcp-write"); - to_fdinfo = g_array_index(cat->socklist, struct evt_core_fdinfo*, 0); + to_fdinfo = cat->socklist->len > 0 ? g_array_index(cat->socklist, struct evt_core_fdinfo*, 0) : NULL; if (to_fdinfo == NULL) { fprintf(stderr, "No fd for cat %s in udp-read. Dropping packet :( \n", cat->name); mv_buffer_wtof (app_ctx, fdinfo);