From 55364a8860da95c883e46c703978bdbe62aabbe2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com>
Date: Mon, 11 Jul 2016 15:59:45 +0200
Subject: [PATCH] UE/ESM: fix esm_pt_start_timer callback

---
 openair3/NAS/UE/ESM/PdnConnectivity.c | 4 ++--
 openair3/NAS/UE/ESM/PdnDisconnect.c   | 5 ++---
 openair3/NAS/UE/ESM/esm_pt.c          | 4 ++--
 openair3/NAS/UE/ESM/esm_pt.h          | 2 +-
 4 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/openair3/NAS/UE/ESM/PdnConnectivity.c b/openair3/NAS/UE/ESM/PdnConnectivity.c
index 161e88669a5..957e8279ab0 100644
--- a/openair3/NAS/UE/ESM/PdnConnectivity.c
+++ b/openair3/NAS/UE/ESM/PdnConnectivity.c
@@ -302,7 +302,7 @@ int esm_proc_pdn_connectivity_request(nas_user_t *user, int is_standalone, int p
 
     if (rc != RETURNerror) {
       /* Start T3482 retransmission timer */
-      rc = esm_pt_start_timer(pti, msg, T3482_DEFAULT_VALUE,
+      rc = esm_pt_start_timer(user, pti, msg, T3482_DEFAULT_VALUE,
                               _pdn_connectivity_t3482_handler);
     }
   }
@@ -635,7 +635,7 @@ static void *_pdn_connectivity_t3482_handler(void *args)
 
     if (rc != RETURNerror) {
       /* Restart the timer T3482 */
-      rc = esm_pt_start_timer(data->pti, &data->msg, T3482_DEFAULT_VALUE,
+      rc = esm_pt_start_timer(user, data->pti, &data->msg, T3482_DEFAULT_VALUE,
                               _pdn_connectivity_t3482_handler);
     }
   } else {
diff --git a/openair3/NAS/UE/ESM/PdnDisconnect.c b/openair3/NAS/UE/ESM/PdnDisconnect.c
index 18ffe34a996..0eb51d753ca 100644
--- a/openair3/NAS/UE/ESM/PdnDisconnect.c
+++ b/openair3/NAS/UE/ESM/PdnDisconnect.c
@@ -191,7 +191,7 @@ int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti
 
     if (rc != RETURNerror) {
       /* Start T3482 retransmission timer */
-      rc = esm_pt_start_timer(pti, msg, T3492_DEFAULT_VALUE,
+      rc = esm_pt_start_timer(user, pti, msg, T3492_DEFAULT_VALUE,
                               _pdn_disconnect_t3492_handler);
     }
   }
@@ -382,7 +382,6 @@ int esm_proc_pdn_disconnect_reject(nas_user_t *user, int pti, int *esm_cause)
 static void *_pdn_disconnect_t3492_handler(void *args)
 {
   LOG_FUNC_IN;
-  // FIXME check callback call
   nas_user_t *user = args;
   esm_data_t *esm_data = _esm_data;;
   int rc;
@@ -411,7 +410,7 @@ static void *_pdn_disconnect_t3492_handler(void *args)
 
     if (rc != RETURNerror) {
       /* Restart the timer T3492 */
-      rc = esm_pt_start_timer(data->pti, &data->msg, T3492_DEFAULT_VALUE,
+      rc = esm_pt_start_timer(user, data->pti, &data->msg, T3492_DEFAULT_VALUE,
                               _pdn_disconnect_t3492_handler);
     }
   } else {
diff --git a/openair3/NAS/UE/ESM/esm_pt.c b/openair3/NAS/UE/ESM/esm_pt.c
index 1d8c8bc525d..fa9adb0b6e7 100644
--- a/openair3/NAS/UE/ESM/esm_pt.c
+++ b/openair3/NAS/UE/ESM/esm_pt.c
@@ -264,7 +264,7 @@ int esm_pt_release(int pti)
  **      Others:    _esm_pt_data                               **
  **                                                                        **
  ***************************************************************************/
-int esm_pt_start_timer(int pti, const OctetString *msg,
+int esm_pt_start_timer(nas_user_t *user, int pti, const OctetString *msg,
                        long sec, nas_timer_callback_t cb)
 {
   LOG_FUNC_IN;
@@ -291,6 +291,7 @@ int esm_pt_start_timer(int pti, const OctetString *msg,
     ctx->args = (esm_pt_timer_data_t *)malloc(sizeof(esm_pt_timer_data_t));
 
     if (ctx->args) {
+      ctx->args->user = user;
       /* Set the EPS bearer identity */
       ctx->args->pti = pti;
       /* Reset the retransmission counter */
@@ -308,7 +309,6 @@ int esm_pt_start_timer(int pti, const OctetString *msg,
        * time interval */
       ctx->timer.id = nas_timer_start(sec, cb, ctx->args);
       ctx->timer.sec = sec;
-      // FIXME add user
     }
   }
 
diff --git a/openair3/NAS/UE/ESM/esm_pt.h b/openair3/NAS/UE/ESM/esm_pt.h
index c39d7f98bd7..a4a3de7651c 100644
--- a/openair3/NAS/UE/ESM/esm_pt.h
+++ b/openair3/NAS/UE/ESM/esm_pt.h
@@ -86,7 +86,7 @@ void esm_pt_initialize(void);
 int esm_pt_assign(void);
 int esm_pt_release(int pti);
 
-int esm_pt_start_timer(int pti, const OctetString *msg, long sec,
+int esm_pt_start_timer(nas_user_t *user, int pti, const OctetString *msg, long sec,
                        nas_timer_callback_t cb);
 int esm_pt_stop_timer(int pti);
 
-- 
GitLab