Coverage Report

Created: 2025-08-26 06:59

/src/S2OPC/src/ClientServer/services/bgenc/session_mgr.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Licensed to Systerel under one or more contributor license
3
 * agreements. See the NOTICE file distributed with this work
4
 * for additional information regarding copyright ownership.
5
 * Systerel licenses this file to you under the Apache
6
 * License, Version 2.0 (the "License"); you may not use this
7
 * file except in compliance with the License. You may obtain
8
 * a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
20
/******************************************************************************
21
22
 File Name            : session_mgr.c
23
24
 Date                 : 03/03/2025 09:32:36
25
26
 C Translator Version : tradc Java V1.2 (06/02/2022)
27
28
******************************************************************************/
29
30
/*------------------------
31
   Exported Declarations
32
  ------------------------*/
33
#include "session_mgr.h"
34
35
/*------------------------
36
   INITIALISATION Clause
37
  ------------------------*/
38
0
void session_mgr__INITIALISATION(void) {
39
0
}
40
41
/*--------------------
42
   OPERATIONS Clause
43
  --------------------*/
44
void session_mgr__local_client_close_session(
45
   const constants__t_session_i session_mgr__session,
46
0
   const constants_statuscodes_bs__t_StatusCode_i session_mgr__sc_reason) {
47
0
   session_request_handle_bs__client_remove_all_request_handles(session_mgr__session);
48
0
   session_core__client_close_session_sm(session_mgr__session,
49
0
      session_mgr__sc_reason);
50
0
}
51
52
void session_mgr__local_client_close_session_if_needed(
53
   const t_bool session_mgr__cond,
54
   const constants__t_session_i session_mgr__session,
55
0
   const constants_statuscodes_bs__t_StatusCode_i session_mgr__sc_reason) {
56
0
   if (session_mgr__cond == false) {
57
0
      session_mgr__local_client_close_session(session_mgr__session,
58
0
         session_mgr__sc_reason);
59
0
   }
60
0
}
61
62
void session_mgr__local_client_activate_sessions_on_SC_connection(
63
0
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx) {
64
0
   {
65
0
      t_bool session_mgr__l_continue;
66
0
      constants__t_session_i session_mgr__l_session;
67
0
      t_bool session_mgr__l_dom;
68
0
      constants__t_channel_config_idx_i session_mgr__l_channel_config_idx;
69
      
70
0
      session_mgr_it__init_iter_session(&session_mgr__l_continue);
71
0
      if (session_mgr__l_continue == true) {
72
0
         while (session_mgr__l_continue == true) {
73
0
            session_mgr_it__continue_iter_session(&session_mgr__l_continue,
74
0
               &session_mgr__l_session);
75
0
            session_core__getall_orphaned(session_mgr__l_session,
76
0
               &session_mgr__l_dom,
77
0
               &session_mgr__l_channel_config_idx);
78
0
            if ((session_mgr__l_dom == true) &&
79
0
               (session_mgr__l_channel_config_idx == session_mgr__channel_config_idx)) {
80
0
               session_core__client_gen_activate_orphaned_session_internal_event(session_mgr__l_session,
81
0
                  session_mgr__channel_config_idx);
82
0
            }
83
0
            session_core__getall_to_create(session_mgr__l_session,
84
0
               &session_mgr__l_dom,
85
0
               &session_mgr__l_channel_config_idx);
86
0
            if ((session_mgr__l_dom == true) &&
87
0
               (session_mgr__l_channel_config_idx == session_mgr__channel_config_idx)) {
88
0
               session_core__reset_session_to_create(session_mgr__l_session);
89
0
               session_core__client_gen_create_session_internal_event(session_mgr__l_session,
90
0
                  session_mgr__channel_config_idx);
91
0
            }
92
0
         }
93
0
      }
94
0
   }
95
0
}
96
97
void session_mgr__local_client_close_sessions_on_SC_final_connection_failure(
98
0
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx) {
99
0
   {
100
0
      t_bool session_mgr__l_continue;
101
0
      constants__t_session_i session_mgr__l_session;
102
0
      t_bool session_mgr__l_dom;
103
0
      constants__t_channel_config_idx_i session_mgr__l_channel_config_idx;
104
      
105
0
      session_mgr_it__init_iter_session(&session_mgr__l_continue);
106
0
      if (session_mgr__l_continue == true) {
107
0
         while (session_mgr__l_continue == true) {
108
0
            session_mgr_it__continue_iter_session(&session_mgr__l_continue,
109
0
               &session_mgr__l_session);
110
0
            session_core__getall_orphaned(session_mgr__l_session,
111
0
               &session_mgr__l_dom,
112
0
               &session_mgr__l_channel_config_idx);
113
0
            if ((session_mgr__l_dom == true) &&
114
0
               (session_mgr__l_channel_config_idx == session_mgr__channel_config_idx)) {
115
0
               session_mgr__local_client_close_session(session_mgr__l_session,
116
0
                  constants_statuscodes_bs__e_sc_bad_secure_channel_closed);
117
0
            }
118
0
            session_core__getall_to_create(session_mgr__l_session,
119
0
               &session_mgr__l_dom,
120
0
               &session_mgr__l_channel_config_idx);
121
0
            if ((session_mgr__l_dom == true) &&
122
0
               (session_mgr__l_channel_config_idx == session_mgr__channel_config_idx)) {
123
0
               session_mgr__local_client_close_session(session_mgr__l_session,
124
0
                  constants_statuscodes_bs__e_sc_bad_secure_channel_closed);
125
0
            }
126
0
         }
127
0
      }
128
0
   }
129
0
}
130
131
void session_mgr__local_session_get_endpoint_config(
132
   const constants__t_session_i session_mgr__p_session,
133
0
   constants__t_endpoint_config_idx_i * const session_mgr__endpoint_config_idx) {
134
0
   {
135
0
      constants__t_channel_i session_mgr__l_channel;
136
0
      t_bool session_mgr__l_continue;
137
0
      t_bool session_mgr__l_connected_channel;
138
      
139
0
      *session_mgr__endpoint_config_idx = constants__c_endpoint_config_idx_indet;
140
0
      session_core__getall_valid_session_channel(session_mgr__p_session,
141
0
         &session_mgr__l_continue,
142
0
         &session_mgr__l_channel);
143
0
      if (session_mgr__l_continue == true) {
144
0
         channel_mgr__is_connected_channel(session_mgr__l_channel,
145
0
            &session_mgr__l_connected_channel);
146
0
         if (session_mgr__l_connected_channel == true) {
147
0
            channel_mgr__server_get_endpoint_config(session_mgr__l_channel,
148
0
               session_mgr__endpoint_config_idx);
149
0
         }
150
0
      }
151
0
   }
152
0
}
153
154
void session_mgr__local_client_validate_and_drop_session_req_session_handle(
155
   const constants__t_channel_i session_mgr__channel,
156
   const constants__t_client_request_handle_i session_mgr__req_handle,
157
   t_bool * const session_mgr__bres,
158
0
   constants__t_session_i * const session_mgr__session) {
159
0
   {
160
0
      constants__t_session_i session_mgr__l_session;
161
0
      t_bool session_mgr__l_valid_session;
162
0
      constants__t_sessionState_i session_mgr__l_session_state;
163
0
      constants__t_channel_i session_mgr__l_session_channel;
164
      
165
0
      *session_mgr__session = constants__c_session_indet;
166
0
      session_request_handle_bs__client_get_session_and_remove_request_handle(session_mgr__req_handle,
167
0
         &session_mgr__l_session);
168
0
      session_core__is_valid_session(session_mgr__l_session,
169
0
         &session_mgr__l_valid_session);
170
0
      if (session_mgr__l_valid_session == true) {
171
0
         session_core__get_session_state_or_closed(session_mgr__l_session,
172
0
            &session_mgr__l_session_state);
173
0
         session_core__get_session_channel(session_mgr__l_session,
174
0
            &session_mgr__l_session_channel);
175
0
         if ((session_mgr__l_session_state == constants__e_session_userActivated) &&
176
0
            (session_mgr__l_session_channel == session_mgr__channel)) {
177
0
            session_core__is_session_valid_for_service(session_mgr__channel,
178
0
               session_mgr__l_session,
179
0
               session_mgr__bres);
180
0
         }
181
0
         else {
182
0
            *session_mgr__bres = false;
183
0
         }
184
0
      }
185
0
      else {
186
0
         *session_mgr__bres = false;
187
0
      }
188
0
      if (*session_mgr__bres == true) {
189
0
         *session_mgr__session = session_mgr__l_session;
190
0
      }
191
0
   }
192
0
}
193
194
void session_mgr__client_receive_session_resp(
195
   const constants__t_channel_i session_mgr__channel,
196
   const constants__t_client_request_handle_i session_mgr__req_handle,
197
   const constants__t_msg_type_i session_mgr__resp_typ,
198
   const constants__t_msg_header_i session_mgr__resp_header,
199
   const constants__t_msg_i session_mgr__resp_msg,
200
0
   constants__t_session_i * const session_mgr__session) {
201
0
   {
202
0
      constants__t_session_token_i session_mgr__l_session_token;
203
0
      constants__t_sessionState_i session_mgr__l_session_state;
204
0
      constants__t_channel_i session_mgr__l_session_channel;
205
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_resp_status;
206
0
      constants__t_user_token_i session_mgr__l_session_user_token;
207
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_status_reason;
208
0
      t_bool session_mgr__l_bret;
209
      
210
0
      session_mgr__l_bret = false;
211
0
      session_request_handle_bs__client_get_session_and_remove_request_handle(session_mgr__req_handle,
212
0
         session_mgr__session);
213
0
      session_core__get_session_state_or_closed(*session_mgr__session,
214
0
         &session_mgr__l_session_state);
215
0
      message_in_bs__read_msg_resp_header_service_status(session_mgr__resp_header,
216
0
         &session_mgr__l_resp_status);
217
0
      if ((session_mgr__l_session_state != constants__e_session_closed) &&
218
0
         (session_mgr__l_resp_status == constants_statuscodes_bs__e_sc_ok)) {
219
0
         switch (session_mgr__resp_typ) {
220
0
         case constants__e_msg_session_create_resp:
221
0
            if (session_mgr__l_session_state == constants__e_session_creating) {
222
0
               session_core__get_session_channel(*session_mgr__session,
223
0
                  &session_mgr__l_session_channel);
224
0
               if (session_mgr__l_session_channel == session_mgr__channel) {
225
0
                  message_in_bs__read_create_session_msg_session_token(session_mgr__resp_msg,
226
0
                     &session_mgr__l_session_token);
227
0
                  session_core__client_create_session_resp_sm(session_mgr__channel,
228
0
                     *session_mgr__session,
229
0
                     session_mgr__l_session_token,
230
0
                     session_mgr__resp_msg,
231
0
                     &session_mgr__l_bret);
232
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_security_checks_failed;
233
0
                  session_core__get_session_state_or_closed(*session_mgr__session,
234
0
                     &session_mgr__l_session_state);
235
0
                  if (session_mgr__l_session_state == constants__e_session_created) {
236
0
                     session_core__get_session_user_client(*session_mgr__session,
237
0
                        &session_mgr__l_session_user_token);
238
0
                     session_core__client_gen_activate_user_session_internal_event(*session_mgr__session,
239
0
                        session_mgr__l_session_user_token);
240
0
                  }
241
0
                  else {
242
0
                     session_mgr__l_bret = false;
243
0
                  }
244
0
               }
245
0
               else {
246
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
247
0
                  ;
248
0
               }
249
0
            }
250
0
            else {
251
0
               session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_invalid_state;
252
0
               ;
253
0
            }
254
0
            break;
255
0
         case constants__e_msg_session_activate_resp:
256
0
            if ((session_mgr__l_session_state == constants__e_session_userActivating) ||
257
0
               (session_mgr__l_session_state == constants__e_session_scActivating)) {
258
0
               session_core__get_session_channel(*session_mgr__session,
259
0
                  &session_mgr__l_session_channel);
260
0
               if (session_mgr__l_session_channel == session_mgr__channel) {
261
0
                  session_core__client_activate_session_resp_sm(session_mgr__channel,
262
0
                     *session_mgr__session,
263
0
                     session_mgr__resp_msg,
264
0
                     &session_mgr__l_bret);
265
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_security_checks_failed;
266
0
               }
267
0
               else {
268
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
269
0
                  ;
270
0
               }
271
0
            }
272
0
            else {
273
0
               session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_invalid_state;
274
0
               ;
275
0
            }
276
0
            break;
277
0
         case constants__e_msg_session_close_resp:
278
0
            if (session_mgr__l_session_state == constants__e_session_closing) {
279
0
               session_core__get_session_channel(*session_mgr__session,
280
0
                  &session_mgr__l_session_channel);
281
0
               if (session_mgr__l_session_channel == session_mgr__channel) {
282
0
                  session_request_handle_bs__client_remove_all_request_handles(*session_mgr__session);
283
0
                  session_core__client_close_session_resp_sm(session_mgr__channel,
284
0
                     *session_mgr__session,
285
0
                     session_mgr__resp_msg);
286
0
                  session_mgr__l_bret = true;
287
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_ok;
288
0
               }
289
0
               else {
290
0
                  session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
291
0
                  ;
292
0
               }
293
0
            }
294
0
            else {
295
0
               session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_invalid_state;
296
0
               ;
297
0
            }
298
0
            break;
299
0
         case constants__e_msg_session_cancel_resp:
300
0
            session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_service_unsupported;
301
0
            ;
302
0
            break;
303
0
         default:
304
0
            session_mgr__l_status_reason = constants_statuscodes_bs__e_sc_bad_service_unsupported;
305
0
            ;
306
0
            break;
307
0
         }
308
0
         session_mgr__local_client_close_session_if_needed(session_mgr__l_bret,
309
0
            *session_mgr__session,
310
0
            session_mgr__l_status_reason);
311
0
      }
312
0
      else if (session_mgr__l_session_state != constants__e_session_closed) {
313
0
         session_mgr__local_client_close_session(*session_mgr__session,
314
0
            session_mgr__l_resp_status);
315
0
      }
316
0
      else {
317
0
         ;
318
0
      }
319
0
   }
320
0
}
321
322
void session_mgr__server_receive_session_req(
323
   const constants__t_channel_i session_mgr__channel,
324
   const constants__t_session_token_i session_mgr__session_token,
325
   const constants__t_msg_i session_mgr__req_msg,
326
   const constants__t_msg_type_i session_mgr__req_typ,
327
   const constants__t_msg_i session_mgr__resp_msg,
328
   constants__t_session_i * const session_mgr__session,
329
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__service_ret,
330
0
   t_bool * const session_mgr__security_failed) {
331
0
   {
332
0
      t_bool session_mgr__l_valid_session;
333
0
      constants__t_sessionState_i session_mgr__l_session_state;
334
0
      constants__t_channel_i session_mgr__l_session_channel;
335
0
      t_bool session_mgr__l_is_valid_user_token;
336
0
      constants__t_user_token_i session_mgr__l_user_token;
337
0
      constants__t_channel_config_idx_i session_mgr__l_channel_config_idx;
338
0
      constants__t_endpoint_config_idx_i session_mgr__l_endpoint_config_idx;
339
0
      t_bool session_mgr__l_has_user_token_policy_available;
340
0
      t_bool session_mgr__l_session_creation_locked;
341
0
      t_entier4 session_mgr__l_nb_sessions_on_SC;
342
0
      t_bool session_mgr__l_timer_creation_ok;
343
0
      constants__t_user_i session_mgr__l_user;
344
0
      constants__t_SignatureData_i session_mgr__l_user_token_signature;
345
      
346
0
      *session_mgr__security_failed = false;
347
0
      *session_mgr__session = constants__c_session_indet;
348
0
      *session_mgr__service_ret = constants_statuscodes_bs__c_StatusCode_indet;
349
0
      switch (session_mgr__req_typ) {
350
0
      case constants__e_msg_session_create_req:
351
0
         channel_mgr__get_channel_info(session_mgr__channel,
352
0
            &session_mgr__l_channel_config_idx);
353
0
         channel_mgr__server_get_endpoint_config(session_mgr__channel,
354
0
            &session_mgr__l_endpoint_config_idx);
355
0
         session_core__has_user_token_policy_available(session_mgr__l_channel_config_idx,
356
0
            session_mgr__l_endpoint_config_idx,
357
0
            &session_mgr__l_has_user_token_policy_available);
358
0
         channel_mgr__is_create_session_locked(session_mgr__channel,
359
0
            &session_mgr__l_session_creation_locked);
360
0
         session_core__get_channel_nb_sessions(session_mgr__channel,
361
0
            &session_mgr__l_nb_sessions_on_SC);
362
0
         if (((session_mgr__l_has_user_token_policy_available == true) &&
363
0
            (session_mgr__l_session_creation_locked == false)) &&
364
0
            (session_mgr__l_nb_sessions_on_SC < constants__c_max_sessions_per_channel)) {
365
0
            session_core__may_close_unactivated_session();
366
0
            session_core__server_create_session_req_and_resp_sm(session_mgr__channel,
367
0
               session_mgr__req_msg,
368
0
               session_mgr__resp_msg,
369
0
               session_mgr__session,
370
0
               session_mgr__service_ret);
371
0
            if (*session_mgr__service_ret == constants_statuscodes_bs__e_sc_ok) {
372
0
               session_core__server_session_timeout_start_timer(*session_mgr__session,
373
0
                  session_mgr__resp_msg,
374
0
                  &session_mgr__l_timer_creation_ok);
375
0
               if (session_mgr__l_timer_creation_ok == false) {
376
0
                  *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_resource_unavailable;
377
0
                  session_core__server_close_session_sm(*session_mgr__session,
378
0
                     constants_statuscodes_bs__e_sc_bad_resource_unavailable);
379
0
               }
380
0
               else {
381
0
                  session_core__may_close_unactivated_session();
382
0
               }
383
0
            }
384
0
         }
385
0
         else if (session_mgr__l_has_user_token_policy_available == false) {
386
0
            *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
387
0
         }
388
0
         else {
389
0
            *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_too_many_sessions;
390
0
         }
391
0
         break;
392
0
      case constants__e_msg_session_activate_req:
393
0
         session_core__server_get_session_from_token(session_mgr__session_token,
394
0
            session_mgr__session);
395
0
         session_core__is_valid_session(*session_mgr__session,
396
0
            &session_mgr__l_valid_session);
397
0
         session_core__get_session_state_or_closed(*session_mgr__session,
398
0
            &session_mgr__l_session_state);
399
0
         if (session_mgr__l_valid_session == true) {
400
0
            if (((session_mgr__l_session_state == constants__e_session_created) ||
401
0
               (session_mgr__l_session_state == constants__e_session_userActivated)) ||
402
0
               (session_mgr__l_session_state == constants__e_session_scOrphaned)) {
403
0
               message_in_bs__read_activate_req_msg_identity_token(session_mgr__req_msg,
404
0
                  &session_mgr__l_is_valid_user_token,
405
0
                  &session_mgr__l_user_token,
406
0
                  &session_mgr__l_user_token_signature);
407
0
               if (session_mgr__l_is_valid_user_token == true) {
408
0
                  session_core__allocate_authenticated_user(session_mgr__channel,
409
0
                     *session_mgr__session,
410
0
                     session_mgr__l_user_token,
411
0
                     session_mgr__l_user_token_signature,
412
0
                     session_mgr__service_ret,
413
0
                     session_mgr__security_failed,
414
0
                     &session_mgr__l_user);
415
0
                  if (*session_mgr__service_ret == constants_statuscodes_bs__e_sc_ok) {
416
0
                     session_core__server_activate_session_req_and_resp_sm(session_mgr__channel,
417
0
                        *session_mgr__session,
418
0
                        session_mgr__l_user,
419
0
                        session_mgr__req_msg,
420
0
                        session_mgr__resp_msg,
421
0
                        session_mgr__service_ret);
422
0
                     if (*session_mgr__service_ret != constants_statuscodes_bs__e_sc_ok) {
423
0
                        session_core__deallocate_user(session_mgr__l_user);
424
0
                     }
425
0
                  }
426
0
                  else if (*session_mgr__security_failed == true) {
427
0
                     session_core__server_close_session_sm(*session_mgr__session,
428
0
                        *session_mgr__service_ret);
429
0
                  }
430
0
               }
431
0
               else {
432
0
                  *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_identity_token_invalid;
433
0
               }
434
0
               if (*session_mgr__service_ret == constants_statuscodes_bs__e_sc_ok) {
435
0
                  session_core__server_session_timeout_msg_received(*session_mgr__session);
436
0
               }
437
0
            }
438
0
            else {
439
0
               session_core__server_close_session_sm(*session_mgr__session,
440
0
                  constants_statuscodes_bs__e_sc_bad_invalid_state);
441
0
               *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_invalid_state;
442
0
            }
443
0
         }
444
0
         else {
445
0
            *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
446
0
         }
447
0
         break;
448
0
      case constants__e_msg_session_close_req:
449
0
         session_core__server_get_session_from_token(session_mgr__session_token,
450
0
            session_mgr__session);
451
0
         session_core__is_valid_session(*session_mgr__session,
452
0
            &session_mgr__l_valid_session);
453
0
         session_core__get_session_state_or_closed(*session_mgr__session,
454
0
            &session_mgr__l_session_state);
455
0
         if (session_mgr__l_valid_session == true) {
456
0
            if (((session_mgr__l_session_state == constants__e_session_created) ||
457
0
               (session_mgr__l_session_state == constants__e_session_userActivating)) ||
458
0
               (session_mgr__l_session_state == constants__e_session_userActivated)) {
459
0
               session_core__get_session_channel(*session_mgr__session,
460
0
                  &session_mgr__l_session_channel);
461
0
               if (session_mgr__l_session_channel == session_mgr__channel) {
462
0
                  session_core__server_close_session_req_and_resp_sm(session_mgr__channel,
463
0
                     *session_mgr__session,
464
0
                     session_mgr__req_msg,
465
0
                     session_mgr__resp_msg,
466
0
                     session_mgr__service_ret);
467
0
               }
468
0
               else {
469
0
                  session_core__server_close_session_sm(*session_mgr__session,
470
0
                     constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid);
471
0
                  *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
472
0
               }
473
0
            }
474
0
            else {
475
0
               session_core__server_close_session_sm(*session_mgr__session,
476
0
                  constants_statuscodes_bs__e_sc_bad_invalid_state);
477
0
               *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_invalid_state;
478
0
            }
479
0
         }
480
0
         else {
481
0
            *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
482
0
         }
483
0
         break;
484
0
      default:
485
0
         *session_mgr__service_ret = constants_statuscodes_bs__e_sc_bad_service_unsupported;
486
0
         break;
487
0
      }
488
0
   }
489
0
}
490
491
void session_mgr__client_validate_session_service_req(
492
   const constants__t_session_i session_mgr__session,
493
   const constants__t_client_request_handle_i session_mgr__req_handle,
494
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__ret,
495
   constants__t_channel_i * const session_mgr__channel,
496
0
   constants__t_session_token_i * const session_mgr__session_token) {
497
0
   {
498
0
      constants__t_sessionState_i session_mgr__l_session_state;
499
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_ret;
500
      
501
0
      *session_mgr__session_token = constants__c_session_token_indet;
502
0
      *session_mgr__channel = constants__c_channel_indet;
503
0
      session_core__get_session_state_or_closed(session_mgr__session,
504
0
         &session_mgr__l_session_state);
505
0
      if (session_mgr__l_session_state == constants__e_session_userActivated) {
506
0
         session_core__client_get_token_from_session(session_mgr__session,
507
0
            session_mgr__session_token);
508
0
         session_core__get_session_channel(session_mgr__session,
509
0
            session_mgr__channel);
510
0
         session_request_handle_bs__client_add_session_request_handle(session_mgr__session,
511
0
            session_mgr__req_handle);
512
0
         session_mgr__l_ret = constants_statuscodes_bs__e_sc_ok;
513
0
      }
514
0
      else {
515
0
         session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
516
0
      }
517
0
      *session_mgr__ret = session_mgr__l_ret;
518
0
   }
519
0
}
520
521
void session_mgr__client_validate_session_service_req_failed(
522
   const constants__t_channel_i session_mgr__channel,
523
   const constants__t_client_request_handle_i session_mgr__req_handle,
524
0
   t_bool * const session_mgr__bres) {
525
0
   {
526
0
      constants__t_session_i session_mgr__l_session;
527
0
      constants__t_sessionState_i session_mgr__l_session_state;
528
      
529
0
      session_mgr__local_client_validate_and_drop_session_req_session_handle(session_mgr__channel,
530
0
         session_mgr__req_handle,
531
0
         session_mgr__bres,
532
0
         &session_mgr__l_session);
533
0
      if (*session_mgr__bres == true) {
534
0
         session_core__get_session_state_or_closed(session_mgr__l_session,
535
0
            &session_mgr__l_session_state);
536
0
         *session_mgr__bres = (session_mgr__l_session_state != constants__e_session_closed);
537
0
      }
538
0
   }
539
0
}
540
541
void session_mgr__client_validate_session_service_resp(
542
   const constants__t_channel_i session_mgr__channel,
543
   const constants__t_client_request_handle_i session_mgr__req_handle,
544
   t_bool * const session_mgr__bres,
545
0
   constants__t_session_i * const session_mgr__session) {
546
0
   {
547
0
      constants__t_session_i session_mgr__l_session;
548
0
      t_bool session_mgr__l_valid_session;
549
0
      constants__t_sessionState_i session_mgr__l_session_state;
550
      
551
0
      *session_mgr__session = constants__c_session_indet;
552
0
      session_mgr__local_client_validate_and_drop_session_req_session_handle(session_mgr__channel,
553
0
         session_mgr__req_handle,
554
0
         session_mgr__bres,
555
0
         &session_mgr__l_session);
556
0
      if (*session_mgr__bres == false) {
557
0
         session_core__is_valid_session(session_mgr__l_session,
558
0
            &session_mgr__l_valid_session);
559
0
         if (session_mgr__l_valid_session == true) {
560
0
            session_core__get_session_state_or_closed(session_mgr__l_session,
561
0
               &session_mgr__l_session_state);
562
0
            if (session_mgr__l_session_state != constants__e_session_userActivated) {
563
0
               session_mgr__local_client_close_session(session_mgr__l_session,
564
0
                  constants_statuscodes_bs__e_sc_bad_invalid_state);
565
0
            }
566
0
            else {
567
0
               session_mgr__local_client_close_session(session_mgr__l_session,
568
0
                  constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid);
569
0
            }
570
0
         }
571
0
      }
572
0
      else {
573
0
         *session_mgr__session = session_mgr__l_session;
574
0
      }
575
0
   }
576
0
}
577
578
void session_mgr__server_validate_session_service_req(
579
   const constants__t_channel_i session_mgr__channel,
580
   const constants__t_session_token_i session_mgr__session_token,
581
   t_bool * const session_mgr__is_valid_res,
582
   constants__t_session_i * const session_mgr__session,
583
0
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__status_code_err) {
584
0
   {
585
0
      constants__t_session_i session_mgr__l_session;
586
0
      t_bool session_mgr__l_valid_session;
587
0
      constants__t_sessionState_i session_mgr__l_session_state;
588
0
      constants__t_channel_i session_mgr__l_session_channel;
589
0
      constants__t_user_i session_mgr__l_user;
590
      
591
0
      session_core__server_get_session_from_token(session_mgr__session_token,
592
0
         &session_mgr__l_session);
593
0
      session_core__is_valid_session(session_mgr__l_session,
594
0
         &session_mgr__l_valid_session);
595
0
      session_core__get_session_state_or_closed(session_mgr__l_session,
596
0
         &session_mgr__l_session_state);
597
0
      *session_mgr__session = constants__c_session_indet;
598
0
      if (session_mgr__l_valid_session == true) {
599
0
         session_core__get_session_channel(session_mgr__l_session,
600
0
            &session_mgr__l_session_channel);
601
0
         if ((session_mgr__l_session_state == constants__e_session_userActivated) &&
602
0
            (session_mgr__l_session_channel == session_mgr__channel)) {
603
0
            session_core__is_session_valid_for_service(session_mgr__channel,
604
0
               session_mgr__l_session,
605
0
               session_mgr__is_valid_res);
606
0
            *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_ok;
607
0
            *session_mgr__session = session_mgr__l_session;
608
0
            if (*session_mgr__is_valid_res == true) {
609
0
               session_core__get_session_user_server(session_mgr__l_session,
610
0
                  &session_mgr__l_user);
611
0
               app_cb_call_context_bs__set_app_call_context_session(session_mgr__l_session,
612
0
                  session_mgr__l_user);
613
0
               session_core__server_session_timeout_msg_received(session_mgr__l_session);
614
0
            }
615
0
         }
616
0
         else {
617
0
            if (session_mgr__l_session_channel != session_mgr__channel) {
618
0
               *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
619
0
            }
620
0
            else {
621
0
               if (session_mgr__l_session_state == constants__e_session_created) {
622
0
                  *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_session_not_activated;
623
0
               }
624
0
               else {
625
0
                  *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_invalid_state;
626
0
               }
627
0
               session_core__server_close_session_sm(session_mgr__l_session,
628
0
                  *session_mgr__status_code_err);
629
0
            }
630
0
            *session_mgr__is_valid_res = false;
631
0
         }
632
0
      }
633
0
      else {
634
0
         *session_mgr__is_valid_res = false;
635
0
         *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
636
0
      }
637
0
   }
638
0
}
639
640
void session_mgr__server_validate_async_session_service_resp(
641
   const constants__t_session_i session_mgr__session,
642
   t_bool * const session_mgr__is_valid_res,
643
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__status_code_err,
644
0
   constants__t_channel_i * const session_mgr__channel) {
645
0
   {
646
0
      t_bool session_mgr__l_valid_session;
647
0
      constants__t_sessionState_i session_mgr__l_session_state;
648
0
      constants__t_channel_i session_mgr__l_session_channel;
649
      
650
0
      *session_mgr__channel = constants__c_channel_indet;
651
0
      session_core__is_valid_session(session_mgr__session,
652
0
         &session_mgr__l_valid_session);
653
0
      session_core__get_session_state_or_closed(session_mgr__session,
654
0
         &session_mgr__l_session_state);
655
0
      if (session_mgr__l_valid_session == true) {
656
0
         session_core__get_session_channel(session_mgr__session,
657
0
            &session_mgr__l_session_channel);
658
0
         if (session_mgr__l_session_state == constants__e_session_userActivated) {
659
0
            session_core__is_session_valid_for_service(session_mgr__l_session_channel,
660
0
               session_mgr__session,
661
0
               session_mgr__is_valid_res);
662
0
            *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_ok;
663
0
            *session_mgr__channel = session_mgr__l_session_channel;
664
0
         }
665
0
         else {
666
0
            *session_mgr__is_valid_res = false;
667
0
            *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_invalid_state;
668
0
         }
669
0
      }
670
0
      else {
671
0
         *session_mgr__is_valid_res = false;
672
0
         *session_mgr__status_code_err = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
673
0
      }
674
0
   }
675
0
}
676
677
void session_mgr__client_create_session_req(
678
   const constants__t_session_i session_mgr__session,
679
   const constants__t_channel_i session_mgr__channel,
680
   const constants__t_client_request_handle_i session_mgr__req_handle,
681
   const constants__t_msg_i session_mgr__create_req_msg,
682
0
   t_bool * const session_mgr__bret) {
683
0
   {
684
0
      t_bool session_mgr__l_valid_session;
685
0
      constants__t_sessionState_i session_mgr__l_session_state;
686
0
      t_bool session_mgr__l_valid;
687
0
      t_bool session_mgr__l_bret;
688
      
689
0
      session_mgr__l_bret = false;
690
0
      session_core__is_valid_session(session_mgr__session,
691
0
         &session_mgr__l_valid_session);
692
0
      session_core__get_session_state_or_closed(session_mgr__session,
693
0
         &session_mgr__l_session_state);
694
0
      if (session_mgr__l_valid_session == true) {
695
0
         if (session_mgr__l_session_state == constants__e_session_init) {
696
0
            session_core__client_create_session_req_sm(session_mgr__session,
697
0
               session_mgr__channel,
698
0
               session_mgr__create_req_msg,
699
0
               &session_mgr__l_valid);
700
0
            if (session_mgr__l_valid == true) {
701
0
               session_request_handle_bs__client_add_session_request_handle(session_mgr__session,
702
0
                  session_mgr__req_handle);
703
0
               session_mgr__l_bret = true;
704
0
            }
705
0
            else {
706
0
               ;
707
0
            }
708
0
         }
709
0
         else {
710
0
            ;
711
0
         }
712
0
      }
713
0
      else {
714
0
         ;
715
0
      }
716
0
      *session_mgr__bret = session_mgr__l_bret;
717
0
   }
718
0
}
719
720
void session_mgr__client_async_activate_new_session_without_channel(
721
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx,
722
   const constants__t_user_token_i session_mgr__p_user_token,
723
   const constants__t_session_application_context_i session_mgr__app_context,
724
0
   t_bool * const session_mgr__bres) {
725
0
   {
726
0
      constants__t_session_i session_mgr__l_session;
727
0
      constants__t_sessionState_i session_mgr__l_session_state;
728
      
729
0
      session_core__client_init_session_sm(&session_mgr__l_session);
730
0
      session_core__get_session_state_or_closed(session_mgr__l_session,
731
0
         &session_mgr__l_session_state);
732
0
      if (session_mgr__l_session_state == constants__e_session_init) {
733
0
         *session_mgr__bres = true;
734
0
         session_core__set_session_to_create(session_mgr__l_session,
735
0
            session_mgr__channel_config_idx);
736
0
         session_core__set_session_app_context(session_mgr__l_session,
737
0
            session_mgr__app_context);
738
0
         session_core__set_session_user_client(session_mgr__l_session,
739
0
            session_mgr__p_user_token);
740
0
      }
741
0
      else {
742
0
         *session_mgr__bres = false;
743
0
      }
744
0
   }
745
0
}
746
747
void session_mgr__client_async_activate_new_session_with_channel(
748
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx,
749
   const constants__t_channel_i session_mgr__channel,
750
   const constants__t_user_token_i session_mgr__p_user_token,
751
   const constants__t_session_application_context_i session_mgr__app_context,
752
0
   t_bool * const session_mgr__bres) {
753
0
   {
754
0
      constants__t_session_i session_mgr__l_session;
755
0
      constants__t_sessionState_i session_mgr__l_session_state;
756
      
757
0
      channel_mgr__channel_do_nothing(session_mgr__channel);
758
0
      session_core__client_init_session_sm(&session_mgr__l_session);
759
0
      session_core__get_session_state_or_closed(session_mgr__l_session,
760
0
         &session_mgr__l_session_state);
761
0
      if (session_mgr__l_session_state == constants__e_session_init) {
762
0
         *session_mgr__bres = true;
763
0
         session_core__client_gen_create_session_internal_event(session_mgr__l_session,
764
0
            session_mgr__channel_config_idx);
765
0
         session_core__set_session_user_client(session_mgr__l_session,
766
0
            session_mgr__p_user_token);
767
0
         session_core__set_session_app_context(session_mgr__l_session,
768
0
            session_mgr__app_context);
769
0
      }
770
0
      else {
771
0
         *session_mgr__bres = false;
772
0
      }
773
0
   }
774
0
}
775
776
void session_mgr__client_user_activate_session_req(
777
   const constants__t_session_i session_mgr__session,
778
   const constants__t_client_request_handle_i session_mgr__req_handle,
779
   const constants__t_user_token_i session_mgr__p_user_token,
780
   const constants__t_msg_i session_mgr__activate_req_msg,
781
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__ret,
782
   constants__t_channel_i * const session_mgr__channel,
783
0
   constants__t_session_token_i * const session_mgr__session_token) {
784
0
   {
785
0
      t_bool session_mgr__l_valid_session;
786
0
      constants__t_sessionState_i session_mgr__l_session_state;
787
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_ret;
788
      
789
0
      session_core__is_valid_session(session_mgr__session,
790
0
         &session_mgr__l_valid_session);
791
0
      if (session_mgr__l_valid_session == true) {
792
0
         session_core__get_session_state_or_closed(session_mgr__session,
793
0
            &session_mgr__l_session_state);
794
0
         if ((session_mgr__l_session_state == constants__e_session_created) ||
795
0
            (session_mgr__l_session_state == constants__e_session_userActivated)) {
796
0
            session_core__client_user_activate_session_req_sm(session_mgr__session,
797
0
               session_mgr__p_user_token,
798
0
               session_mgr__activate_req_msg,
799
0
               &session_mgr__l_ret,
800
0
               session_mgr__channel,
801
0
               session_mgr__session_token);
802
0
            if (session_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
803
0
               session_request_handle_bs__client_add_session_request_handle(session_mgr__session,
804
0
                  session_mgr__req_handle);
805
0
            }
806
0
         }
807
0
         else {
808
0
            session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_state;
809
0
            *session_mgr__channel = constants__c_channel_indet;
810
0
            *session_mgr__session_token = constants__c_session_token_indet;
811
0
         }
812
0
      }
813
0
      else {
814
0
         session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
815
0
         *session_mgr__channel = constants__c_channel_indet;
816
0
         *session_mgr__session_token = constants__c_session_token_indet;
817
0
      }
818
0
      *session_mgr__ret = session_mgr__l_ret;
819
0
   }
820
0
}
821
822
void session_mgr__client_sc_activate_session_req(
823
   const constants__t_session_i session_mgr__session,
824
   const constants__t_client_request_handle_i session_mgr__req_handle,
825
   const constants__t_channel_i session_mgr__channel,
826
   const constants__t_msg_i session_mgr__activate_req_msg,
827
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__ret,
828
0
   constants__t_session_token_i * const session_mgr__session_token) {
829
0
   {
830
0
      t_bool session_mgr__l_valid_session;
831
0
      constants__t_sessionState_i session_mgr__l_session_state;
832
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_ret;
833
      
834
0
      session_core__is_valid_session(session_mgr__session,
835
0
         &session_mgr__l_valid_session);
836
0
      if (session_mgr__l_valid_session == true) {
837
0
         session_core__get_session_state_or_closed(session_mgr__session,
838
0
            &session_mgr__l_session_state);
839
0
         if ((session_mgr__l_session_state == constants__e_session_scOrphaned) ||
840
0
            (session_mgr__l_session_state == constants__e_session_userActivated)) {
841
0
            session_core__client_sc_activate_session_req_sm(session_mgr__session,
842
0
               session_mgr__channel,
843
0
               session_mgr__activate_req_msg,
844
0
               session_mgr__session_token);
845
0
            session_request_handle_bs__client_add_session_request_handle(session_mgr__session,
846
0
               session_mgr__req_handle);
847
0
            session_mgr__l_ret = constants_statuscodes_bs__e_sc_ok;
848
0
         }
849
0
         else {
850
0
            session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_state;
851
0
            *session_mgr__session_token = constants__c_session_token_indet;
852
0
         }
853
0
      }
854
0
      else {
855
0
         session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
856
0
         *session_mgr__session_token = constants__c_session_token_indet;
857
0
      }
858
0
      *session_mgr__ret = session_mgr__l_ret;
859
0
   }
860
0
}
861
862
void session_mgr__client_channel_connected_event_session(
863
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx,
864
0
   const constants__t_channel_i session_mgr__channel) {
865
0
   channel_mgr__channel_do_nothing(session_mgr__channel);
866
0
   session_mgr__local_client_activate_sessions_on_SC_connection(session_mgr__channel_config_idx);
867
0
}
868
869
void session_mgr__client_close_session_req(
870
   const constants__t_session_i session_mgr__session,
871
   const constants__t_client_request_handle_i session_mgr__req_handle,
872
   const constants__t_msg_i session_mgr__close_req_msg,
873
   constants_statuscodes_bs__t_StatusCode_i * const session_mgr__ret,
874
   constants__t_channel_i * const session_mgr__channel,
875
0
   constants__t_session_token_i * const session_mgr__session_token) {
876
0
   {
877
0
      t_bool session_mgr__l_valid_session;
878
0
      constants__t_sessionState_i session_mgr__l_session_state;
879
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_ret;
880
      
881
0
      session_core__is_valid_session(session_mgr__session,
882
0
         &session_mgr__l_valid_session);
883
0
      if (session_mgr__l_valid_session == true) {
884
0
         session_core__get_session_state_or_closed(session_mgr__session,
885
0
            &session_mgr__l_session_state);
886
0
         if (((session_mgr__l_session_state == constants__e_session_created) ||
887
0
            (session_mgr__l_session_state == constants__e_session_userActivating)) ||
888
0
            (session_mgr__l_session_state == constants__e_session_userActivated)) {
889
0
            session_core__client_close_session_req_sm(session_mgr__session,
890
0
               session_mgr__close_req_msg,
891
0
               &session_mgr__l_ret,
892
0
               session_mgr__channel,
893
0
               session_mgr__session_token);
894
0
            if (session_mgr__l_ret != constants_statuscodes_bs__e_sc_ok) {
895
0
               session_mgr__local_client_close_session(session_mgr__session,
896
0
                  session_mgr__l_ret);
897
0
               session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_unexpected_error;
898
0
            }
899
0
            if (session_mgr__l_ret == constants_statuscodes_bs__e_sc_ok) {
900
0
               session_request_handle_bs__client_add_session_request_handle(session_mgr__session,
901
0
                  session_mgr__req_handle);
902
0
            }
903
0
         }
904
0
         else {
905
0
            session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_state;
906
0
            session_mgr__local_client_close_session(session_mgr__session,
907
0
               session_mgr__l_ret);
908
0
            *session_mgr__channel = constants__c_channel_indet;
909
0
            *session_mgr__session_token = constants__c_session_token_indet;
910
0
         }
911
0
      }
912
0
      else {
913
0
         session_mgr__l_ret = constants_statuscodes_bs__e_sc_bad_invalid_argument;
914
0
         *session_mgr__channel = constants__c_channel_indet;
915
0
         *session_mgr__session_token = constants__c_session_token_indet;
916
0
      }
917
0
      *session_mgr__ret = session_mgr__l_ret;
918
0
   }
919
0
}
920
921
void session_mgr__client_close_sessions_on_final_connection_failure(
922
0
   const constants__t_channel_config_idx_i session_mgr__channel_config_idx) {
923
0
   session_mgr__local_client_close_sessions_on_SC_final_connection_failure(session_mgr__channel_config_idx);
924
0
}
925
926
void session_mgr__client_close_session(
927
   const constants__t_session_i session_mgr__session,
928
0
   const constants_statuscodes_bs__t_StatusCode_i session_mgr__sc_reason) {
929
0
   {
930
0
      t_bool session_mgr__l_valid_session;
931
      
932
0
      session_core__is_valid_session(session_mgr__session,
933
0
         &session_mgr__l_valid_session);
934
0
      if (session_mgr__l_valid_session == true) {
935
0
         session_mgr__local_client_close_session(session_mgr__session,
936
0
            session_mgr__sc_reason);
937
0
      }
938
0
   }
939
0
}
940
941
void session_mgr__server_evaluate_session_timeout(
942
0
   const constants__t_session_i session_mgr__session) {
943
0
   {
944
0
      t_bool session_mgr__l_valid_session;
945
0
      t_bool session_mgr__l_session_expired;
946
      
947
0
      session_core__is_valid_session(session_mgr__session,
948
0
         &session_mgr__l_valid_session);
949
0
      if (session_mgr__l_valid_session == true) {
950
0
         session_core__server_session_timeout_evaluation(session_mgr__session,
951
0
            &session_mgr__l_session_expired);
952
0
         if (session_mgr__l_session_expired == true) {
953
0
            session_core__server_close_session_sm(session_mgr__session,
954
0
               constants_statuscodes_bs__e_sc_bad_timeout);
955
0
         }
956
0
      }
957
0
   }
958
0
}
959
960
void session_mgr__server_close_session(
961
   const constants__t_session_i session_mgr__session,
962
0
   const constants_statuscodes_bs__t_StatusCode_i session_mgr__sc_reason) {
963
0
   {
964
0
      t_bool session_mgr__l_valid_session;
965
      
966
0
      session_core__is_valid_session(session_mgr__session,
967
0
         &session_mgr__l_valid_session);
968
0
      if (session_mgr__l_valid_session == true) {
969
0
         session_core__server_close_session_sm(session_mgr__session,
970
0
            session_mgr__sc_reason);
971
0
      }
972
0
   }
973
0
}
974
975
void session_mgr__session_get_endpoint_config(
976
   const constants__t_session_i session_mgr__p_session,
977
0
   constants__t_endpoint_config_idx_i * const session_mgr__endpoint_config_idx) {
978
0
   session_mgr__local_session_get_endpoint_config(session_mgr__p_session,
979
0
      session_mgr__endpoint_config_idx);
980
0
}
981
982
0
void session_mgr__server_evaluate_all_session_user_cert(void) {
983
0
   {
984
0
      t_bool session_mgr__l_continue;
985
0
      constants__t_session_i session_mgr__l_session;
986
0
      t_bool session_mgr__l_valid_session;
987
0
      t_bool session_mgr__l_server_side;
988
0
      constants__t_endpoint_config_idx_i session_mgr__l_endpoint_config_idx;
989
0
      t_bool session_mgr__l_valid_endpoint;
990
0
      constants__t_user_i session_mgr__l_user;
991
0
      constants__t_user_token_i session_mgr__l_user_token;
992
0
      t_bool session_mgr__l_valid_token;
993
0
      constants_statuscodes_bs__t_StatusCode_i session_mgr__l_valid_user;
994
      
995
0
      session_mgr_it__init_iter_session(&session_mgr__l_continue);
996
0
      if (session_mgr__l_continue == true) {
997
0
         while (session_mgr__l_continue == true) {
998
0
            session_mgr_it__continue_iter_session(&session_mgr__l_continue,
999
0
               &session_mgr__l_session);
1000
0
            session_core__is_valid_session(session_mgr__l_session,
1001
0
               &session_mgr__l_valid_session);
1002
0
            if (session_mgr__l_valid_session == true) {
1003
0
               session_core__session_has_user_server(session_mgr__l_session,
1004
0
                  &session_mgr__l_server_side);
1005
0
               if (session_mgr__l_server_side == true) {
1006
0
                  session_mgr__local_session_get_endpoint_config(session_mgr__l_session,
1007
0
                     &session_mgr__l_endpoint_config_idx);
1008
0
                  channel_mgr__is_valid_endpoint_config_idx(session_mgr__l_endpoint_config_idx,
1009
0
                     &session_mgr__l_valid_endpoint);
1010
0
                  if (session_mgr__l_valid_endpoint == true) {
1011
0
                     session_core__get_session_user_server(session_mgr__l_session,
1012
0
                        &session_mgr__l_user);
1013
0
                     session_core__allocate_x509_token_from_user(session_mgr__l_user,
1014
0
                        &session_mgr__l_valid_token,
1015
0
                        &session_mgr__l_user_token);
1016
0
                     if (session_mgr__l_valid_token == true) {
1017
0
                        session_core__is_valid_user_x509_authentication(session_mgr__l_endpoint_config_idx,
1018
0
                           constants__e_userTokenType_x509,
1019
0
                           session_mgr__l_user_token,
1020
0
                           &session_mgr__l_valid_user);
1021
0
                        if (session_mgr__l_valid_user != constants_statuscodes_bs__e_sc_ok) {
1022
0
                           session_core__server_close_session_sm(session_mgr__l_session,
1023
0
                              session_mgr__l_valid_user);
1024
0
                        }
1025
0
                        session_core__deallocate_x509_token(session_mgr__l_user_token);
1026
0
                     }
1027
0
                  }
1028
0
               }
1029
0
            }
1030
0
         }
1031
0
      }
1032
0
   }
1033
0
}
1034
1035
0
void session_mgr__session_mgr_UNINITIALISATION(void) {
1036
0
   session_core__session_core_UNINITIALISATION();
1037
0
}
1038