Handle unsupported IKEv1 exchange types more specifically.
authorTobias Brunner <tobias@strongswan.org>
Fri, 25 Nov 2011 16:58:37 +0000 (17:58 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 20 Mar 2012 16:31:08 +0000 (17:31 +0100)
src/libcharon/encoding/message.c
src/libcharon/sa/task_manager_v1.c

index 17adc5e..3b45b76 100644 (file)
@@ -1896,7 +1896,7 @@ METHOD(message_t, parse_body, status_t,
                DBG1(DBG_ENC, "no message rules specified for a %N %s",
                         exchange_type_names, this->exchange_type,
                         this->is_request ? "request" : "response");
-               return PARSE_ERROR;
+               return NOT_SUPPORTED;
        }
 
        status = parse_payloads(this);
index 036de7c..c1868f2 100644 (file)
@@ -699,6 +699,11 @@ static status_t parse_message(private_task_manager_t *this, message_t *msg)
        {
                switch (status)
                {
+                       case NOT_SUPPORTED:
+                               DBG1(DBG_IKE, "unsupported exchange type");
+                               send_notify_response(this, msg,
+                                                                        INVALID_EXCHANGE_TYPE, chunk_empty);
+                               break;
                        case PARSE_ERROR:
                                DBG1(DBG_IKE, "message parsing failed");
                                send_notify_response(this, msg,