diff --git a/res/res_timing_kqueue.c b/res/res_timing_kqueue.c
index 8ac2714740c23029b3b3c04f382dfbf0ad31455e..9ada1ae65e24a2925b57767e784d86a811c383cb 100644
--- a/res/res_timing_kqueue.c
+++ b/res/res_timing_kqueue.c
@@ -93,7 +93,9 @@ static int kqueue_timer_cmp(void *obj, void *args, int flags)
 static void timer_destroy(void *obj)
 {
 	struct kqueue_timer *timer = obj;
-	close(timer->handle);
+	if (timer->handle > -1) {
+		close(timer->handle);
+	}
 }
 
 #define lookup_timer(a)	_lookup_timer(a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
@@ -121,13 +123,12 @@ static int kqueue_timer_open(void)
 		ast_log(LOG_ERROR, "Could not allocate memory for kqueue_timer structure\n");
 		return -1;
 	}
-	if ((handle = kqueue()) < 0) {
+	if ((timer->handle = handle = kqueue()) < 0) {
 		ast_log(LOG_ERROR, "Failed to create kqueue timer: %s\n", strerror(errno));
 		ao2_ref(timer, -1);
 		return -1;
 	}
 
-	timer->handle = handle;
 	ao2_link(kqueue_timers, timer);
 	/* Get rid of the reference from the allocation */
 	ao2_ref(timer, -1);
diff --git a/res/res_timing_timerfd.c b/res/res_timing_timerfd.c
index 5c96dd6620b610ef9ef1a9cdb9f72768a14e44aa..41b5f7d4c3119932afd62f365792c9b3d5ef0d1c 100644
--- a/res/res_timing_timerfd.c
+++ b/res/res_timing_timerfd.c
@@ -90,7 +90,9 @@ static int timerfd_timer_cmp(void *obj, void *args, int flags)
 static void timer_destroy(void *obj)
 {
 	struct timerfd_timer *timer = obj;
-	close(timer->handle);
+	if (timer->handle > -1) {
+		close(timer->handle);
+	}
 	timer->handle = -1;
 }
 
@@ -103,13 +105,12 @@ static int timerfd_timer_open(void)
 		ast_log(LOG_ERROR, "Could not allocate memory for timerfd_timer structure\n");
 		return -1;
 	}
-	if ((handle = timerfd_create(CLOCK_MONOTONIC, 0)) < 0) {
+	if ((timer->handle = handle = timerfd_create(CLOCK_MONOTONIC, 0)) < 0) {
 		ast_log(LOG_ERROR, "Failed to create timerfd timer: %s\n", strerror(errno));
 		ao2_ref(timer, -1);
 		return -1;
 	}
 
-	timer->handle = handle;
 	ao2_link(timerfd_timers, timer);
 	/* Get rid of the reference from the allocation */
 	ao2_ref(timer, -1);