diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c
index f64c83f381e019ca4ce258f5e7ac3954dd54dcea..1c3c9347eeccc3469e30b9b16730c1967f5648d6 100644
--- a/res/res_pjsip/pjsip_options.c
+++ b/res/res_pjsip/pjsip_options.c
@@ -1006,10 +1006,25 @@ static int qualify_and_schedule_all_cb(void *obj, void *arg, int flags)
 	return 0;
 }
 
+/*!
+ * \internal
+ * \brief Unschedule all existing contacts
+ */
+static int unschedule_all_cb(void *obj, void *arg, int flags)
+{
+	struct sched_data *data = obj;
+
+	AST_SCHED_DEL_UNREF(sched, data->id, ao2_ref(data, -1));
+
+	return CMP_MATCH;
+}
+
 static void qualify_and_schedule_all(void)
 {
 	struct ao2_container *endpoints = ast_sip_get_endpoints();
 
+	ao2_callback(sched_qualifies, OBJ_NODATA | OBJ_MULTIPLE | OBJ_UNLINK, unschedule_all_cb, NULL);
+
 	if (!endpoints) {
 		return;
 	}