]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add function to discard EAP session based on request
authorAlan T. DeKok <aland@freeradius.org>
Tue, 24 Feb 2026 16:17:26 +0000 (11:17 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 24 Feb 2026 16:28:01 +0000 (11:28 -0500)
src/lib/eap/session.c
src/lib/eap/session.h

index 64ca8ee4814e43ac3cd9bbe378f84c62b09a6381..61ed3c39f599a52f4f8def33fed7d09ea7b2e1d2 100644 (file)
@@ -153,6 +153,29 @@ void eap_session_destroy(eap_session_t **eap_session)
        *eap_session = NULL;
 }
 
+/** discard and 'destroy' an EAP session and disassociate it from the current request
+ *
+ * @see eap_session_continue
+ * @see eap_session_freeze
+ * @see eap_session_thaw
+ *
+ * @param request to destroy (disassociate and free).
+ */
+void eap_session_discard(request_t *request)
+{
+       eap_session_t *eap_session;
+
+       eap_session = request_data_reference(request, NULL, REQUEST_DATA_EAP_SESSION);
+       if (!eap_session) return;
+
+       /*
+        *      Don't print "session didn't finish".
+        */
+       eap_session->finished = true;
+
+       eap_session_destroy(&eap_session);
+}
+
 /** Freeze an #eap_session_t so that it can continue later
  *
  * Sets the request and pointer to the eap_session to NULL. Primarily here to help track
index 0c5507e119e345c4c3a04fe6695ab56370d0fddc..cb972fe110cc1552d8511623f24b254276ea9dcf 100644 (file)
@@ -72,6 +72,8 @@ struct eap_session_s {
        bool            finished;                       //!< Whether we consider this session complete.
 };
 
+void           eap_session_discard(request_t *request);
+
 void           eap_session_destroy(eap_session_t **eap_session);
 
 void           eap_session_freeze(eap_session_t **eap_session);