diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 1b291dc2d77ea42e472c77e8207a92a4350b9aed..4fe916dab383644e341c7dcbf0998510c19983ff 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1021,16 +1021,16 @@ static int __sip_pretend_ack(struct sip_pvt *p)
 	struct sip_pkt *cur=NULL;
 	char *c;
 	while(p->packets) {
-		if (cur == p) {
+		if (cur == p->packets) {
 			ast_log(LOG_WARNING, "Have a packet that doesn't want to give up!\n");
 			return -1;
 		}
-		cur = p;
+		cur = p->packets;
 		strncpy(method, p->packets->data, sizeof(method) - 1);
 		c = method;
 		while(*c && (*c < 33)) c++;
-		*c = '\0;;
-		__sip_ack(p, p->packets->seqno, (ast_test_flag(p->packets, FLAG_RESPONSE)), find_sip_method(p->packets->data));
+		*c = '\0';
+		__sip_ack(p, p->packets->seqno, (ast_test_flag(p->packets, FLAG_RESPONSE)), find_sip_method(method));
 	}
 	return 0;
 }