diff options
Diffstat (limited to 'src/eap_peer/eap_proxy_qmi.c')
-rw-r--r-- | src/eap_peer/eap_proxy_qmi.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/eap_peer/eap_proxy_qmi.c b/src/eap_peer/eap_proxy_qmi.c index 60710306..fc469e64 100644 --- a/src/eap_peer/eap_proxy_qmi.c +++ b/src/eap_peer/eap_proxy_qmi.c @@ -716,6 +716,20 @@ int eap_auth_end_eap_session(qmi_client_type qmi_auth_svc_client_ptr) return 0; } +static void eap_proxy_schedule_thread(void *eloop_ctx, void *timeout_ctx) +{ + struct eap_proxy_sm *eap_proxy = eloop_ctx; + pthread_attr_t attr; + int ret = -1; + + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + ret = pthread_create(&eap_proxy->thread_id, &attr, eap_proxy_post_init, eap_proxy); + if(ret < 0) + wpa_printf(MSG_ERROR, "eap_proxy: starting thread is failed %d\n", ret); +} + + struct eap_proxy_sm * eap_proxy_init(void *eapol_ctx, struct eapol_callbacks *eapol_cb, void *msg_ctx) @@ -724,8 +738,6 @@ eap_proxy_init(void *eapol_ctx, struct eapol_callbacks *eapol_cb, int qmiRetCode; struct eap_proxy_sm *eap_proxy; qmi_idl_service_object_type qmi_client_service_obj; - pthread_attr_t attr; - int ret = -1; eap_proxy = os_malloc(sizeof(struct eap_proxy_sm)); if (NULL == eap_proxy) { @@ -751,11 +763,7 @@ eap_proxy_init(void *eapol_ctx, struct eapol_callbacks *eapol_cb, * parent process that created the qmi client context. */ - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - ret = pthread_create(&eap_proxy->thread_id, &attr, eap_proxy_post_init, eap_proxy); - if(ret < 0) - wpa_printf(MSG_ERROR, "eap_proxy: starting thread is failed %d\n", ret); + eloop_register_timeout(0, 0, eap_proxy_schedule_thread, eap_proxy, NULL); return eap_proxy; } |