From 9b76e5925e7e1288a4160b6cdd8fce61a8f65eca Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Sun, 10 Apr 2016 13:57:49 +0000 Subject: [PATCH] Handles session id now FossilOrigin-Name: 4e452538871d01fbb40697b1bc42292dce33b620bdf5911c40e1ed3a4814f803 --- src/cw/cw_in_check_join_req.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/cw/cw_in_check_join_req.c b/src/cw/cw_in_check_join_req.c index 86549078..9d633181 100644 --- a/src/cw/cw_in_check_join_req.c +++ b/src/cw/cw_in_check_join_req.c @@ -4,6 +4,8 @@ #include "dbg.h" #include "log.h" #include "capwap_items.h" +#include "format.h" +#include "connlist.h" int cw_in_check_join_req(struct conn *conn, struct cw_action_in *a, uint8_t * data, int len,struct sockaddr *from) @@ -22,6 +24,17 @@ int cw_in_check_join_req(struct conn *conn, struct cw_action_in *a, uint8_t * da cw_dbg_missing_mand(DBG_RFC,conn,mlist,n,a); } + connlist_lock(conn->connlist); + struct conn *cc = connlist_get_by_session_id(conn->connlist,conn); + if (!cc){ + connlist_add_by_session_id(conn->connlist,conn); + } + connlist_unlock(conn->connlist); + if (cc){ + cw_dbg(DBG_ELEM_ERR,"Session already in use %s",format_bin2hex(conn->session_id,16)); + conn->capwap_state=CW_STATE_JOIN; + return CW_RESULT_JOIN_FAILURE_SESSION_ALREADY_IN_USE; + } /* set result code to ok and change to configure state */ mbag_set_dword(conn->outgoing,CW_ITEM_RESULT_CODE,0);