diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c index 17adc5eb9..3b45b7608 100644 --- a/src/libcharon/encoding/message.c +++ b/src/libcharon/encoding/message.c @@ -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); diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c index 036de7cbb..c1868f224 100644 --- a/src/libcharon/sa/task_manager_v1.c +++ b/src/libcharon/sa/task_manager_v1.c @@ -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,