Ignore session in teardown state

This commit is contained in:
vemax78 2013-10-21 18:54:40 +02:00
parent 3147abc9bc
commit f82cca5e81

View File

@ -70,8 +70,12 @@ static struct ac_session_t* ac_search_session_from_wtpaddress(struct sockaddr_st
ASSERT(session != NULL); ASSERT(session != NULL);
if (!capwap_compare_ip(address, (isctrlsocket ? &session->wtpctrladdress : &session->wtpdataaddress))) { if (!capwap_compare_ip(address, (isctrlsocket ? &session->wtpctrladdress : &session->wtpdataaddress))) {
/* Return session if not teardown */
if (!session->teardown) {
session->count++; session->count++;
result = session; result = session;
}
break; break;
} }
@ -202,8 +206,11 @@ static struct ac_session_t* ac_get_session_from_keepalive(void* buffer, int buff
ASSERT(session != NULL); ASSERT(session != NULL);
if (!memcmp(sessionid, &session->sessionid, sizeof(struct capwap_sessionid_element))) { if (!memcmp(sessionid, &session->sessionid, sizeof(struct capwap_sessionid_element))) {
if (!session->teardown) {
session->count++; session->count++;
result = session; result = session;
}
break; break;
} }
@ -227,8 +234,10 @@ static struct ac_session_t* ac_get_session_from_keepalive(void* buffer, int buff
/* Close session */ /* Close session */
static void ac_close_session(struct ac_session_t* session) { static void ac_close_session(struct ac_session_t* session) {
if (!session->teardown) {
ac_session_send_action(session, AC_SESSION_ACTION_CLOSE, 0, NULL, 0); ac_session_send_action(session, AC_SESSION_ACTION_CLOSE, 0, NULL, 0);
} }
}
/* Close sessions */ /* Close sessions */
static void ac_close_sessions() { static void ac_close_sessions() {