diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index f2547ae52b6d9b795de42237b8ede4dcbfeae46a..2720bcede63a2877545b40b880603be01c3e3e1f 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4236,8 +4236,7 @@ static int sip_call(struct ast_channel *ast, char *dest, int timeout)
 		p->invitestate = INV_CALLING;
 	
 		/* Initialize auto-congest time */
-		ast_sched_del(sched, p->initid);
-		p->initid = ast_sched_add(sched, p->timer_b, auto_congest, dialog_ref(p));
+		AST_SCHED_REPLACE(p->initid, sched, p->timer_b, auto_congest, dialog_ref(p));
 	}
 
 	return res;
@@ -4307,7 +4306,7 @@ static void __sip_destroy(struct sip_pvt *p, int lockowner, int lockdialoglist)
 
 	if (p->stateid > -1)
 		ast_extension_state_del(p->stateid, NULL);
-	ast_sched_del(sched, p->initid);
+	AST_SCHED_DEL(sched, p->initid);
 	AST_SCHED_DEL(sched, p->waitid);
 	AST_SCHED_DEL(sched, p->autokillid);
 
@@ -14552,7 +14551,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
 
 	/* Acknowledge sequence number - This only happens on INVITE from SIP-call */
 	/* Don't auto congest anymore since we've gotten something useful back */
-	ast_sched_del(sched, p->initid);
+	AST_SCHED_DEL(sched, p->initid);
 
 	/* RFC3261 says we must treat every 1xx response (but not 100)
 	   that we don't recognize as if it was 183.