From 704bc7a923250d5ce87fc8b9308fd806a70ba07b Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Tue, 26 Oct 2010 12:48:32 +0300 Subject: [PATCH] Fix #3090663: Re-authentication fails (4th attempt) Commit b8ecabd1ba8161a0b30067d478a993866778058e changed the code to drop a message and its associated transaction if it was unsigned and not a REGISTER or 401 response. It turns out that OCS can send provisional messages (100 Trying) that aren't signed. The old code simply ignored them but with the new code the transaction got dropped. As a consequence no IM session could be established, because when we received the final 200 response to our INVITE the transaction was gone. Change the code to only remove transactions for unsigned messages that have a response code of 200 or higher. --- src/core/sip-transport.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/sip-transport.c b/src/core/sip-transport.c index e83071d2..7428d088 100644 --- a/src/core/sip-transport.c +++ b/src/core/sip-transport.c @@ -1597,7 +1597,8 @@ static void sip_transport_input(struct sipe_transport_connection *conn) SIPE_CONNECTION_ERROR_AUTHENTICATION_FAILED, _("Authentication failed")); } else { - if (msg->response) { + /* OCS sends provisional messages that are *not* signed */ + if (msg->response >= 200) { /* We are not calling process_input_message(), so we need to drop the transaction here. */ struct transaction *trans = transactions_find(transport, msg); -- 2.11.4.GIT