aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev1/tasks/quick_mode.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/libcharon/sa/ikev1/tasks/quick_mode.c b/src/libcharon/sa/ikev1/tasks/quick_mode.c
index 63b59e079..4eefe6f6e 100644
--- a/src/libcharon/sa/ikev1/tasks/quick_mode.c
+++ b/src/libcharon/sa/ikev1/tasks/quick_mode.c
@@ -887,12 +887,17 @@ METHOD(task_t, process_r, status_t,
{
list = sa_payload->get_ipcomp_proposals(sa_payload,
&this->cpi_i);
+ if (!list->get_count(list))
+ {
+ DBG1(DBG_IKE, "expected IPComp proposal but peer did "
+ "not send one, IPComp disabled");
+ this->cpi_i = 0;
+ }
}
}
if (!list || !list->get_count(list))
{
DESTROY_IF(list);
- this->cpi_i = 0;
list = sa_payload->get_proposals(sa_payload);
}
private = this->ike_sa->supports_extension(this->ike_sa,
@@ -1047,11 +1052,16 @@ METHOD(task_t, process_i, status_t,
{
list = sa_payload->get_ipcomp_proposals(sa_payload,
&this->cpi_r);
+ if (!list->get_count(list))
+ {
+ DBG1(DBG_IKE, "peer did not acccept our IPComp proposal, "
+ "IPComp disabled");
+ this->cpi_i = 0;
+ }
}
if (!list || !list->get_count(list))
{
DESTROY_IF(list);
- this->cpi_i = 0;
list = sa_payload->get_proposals(sa_payload);
}
private = this->ike_sa->supports_extension(this->ike_sa,