Coverage Report

Created: 2026-02-14 06:27

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