--- a/libpurple/protocols/simple/simple.c Fri Mar 04 00:08:27 2022 -0600
+++ b/libpurple/protocols/simple/simple.c Thu Apr 07 22:33:38 2022 -0500
@@ -620,6 +620,11 @@
trans = transactions->data;
+ purple_debug_info("simple", + "received CSeq %s vs known transaction CSeq %s\n", if(purple_strequal(trans->cseq, cseq)) {
@@ -1570,7 +1575,7 @@
/* This is encountered when a generic (MESSAGE, NOTIFY, etc)
* was denied until further authorization is provided.
+ gchar *resend, *auth, *cseq; if(sip->registrar.retries > SIMPLE_REGISTER_RETRY_MAX) return;
@@ -1583,10 +1588,22 @@
sipmsg_remove_header(trans->msg, "Authorization");
sipmsg_add_header(trans->msg, "Authorization", auth);
+ sipmsg_remove_header(trans->msg, "CSeq"); + cseq = g_strdup_printf("%d %s", sip->cseq, trans->msg->method); + sipmsg_add_header(trans->msg, "CSeq", cseq); + trans->cseq = sipmsg_find_header(trans->msg, "CSeq"); resend = sipmsg_to_string(trans->msg);
sendout_pkt(sip->gc, resend);
+ /* exit here - no need to call callback, don't remove trans */ /* Reset any count of retries that may have
* accumulated in the above branch.