[Bugfix] [API-359,API-358,API-354]
Change-Id: If453438a5a336aef7d3a52465c7ccf4bacc06d0a
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 102d130..07beaf7 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -128,6 +128,7 @@
char msg_notify[MAX_RET];
struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+ g_ap_watcher_stop_flag = 0;
while (g_ap_watcher_stop_flag == 0) {
if (lynq_wpa_ctrl == NULL) {
@@ -161,8 +162,10 @@
}
} // end if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
} // end while (g_ap_watcher_stop_flag == 0)
- wpa_ctrl_detach(lynq_wpa_ctrl);
- wpa_ctrl_close(lynq_wpa_ctrl);
+ if (lynq_wpa_ctrl != NULL) {
+ wpa_ctrl_detach(lynq_wpa_ctrl);
+ wpa_ctrl_close(lynq_wpa_ctrl);
+ }
}
static void STAWatcherThreadProc() {
@@ -172,6 +175,7 @@
error_number_s error;
struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+ g_sta_watcher_stop_flag = 0;
while (g_sta_watcher_stop_flag == 0) {
if (lynq_wpa_ctrl == NULL) {
@@ -212,10 +216,10 @@
pReason = strstr(msg_notify, "reason=");
if (pReason != NULL) {
pReason += strlen("reason=");
- if (memcpy(pReason, "CONN_FAILED", 11) == 0) {
+ if (memcmp(pReason, "CONN_FAILED", 11) == 0) {
error = LYNQ_TIME_OUT;
}
- else if (memcpy(pReason, "WRONG_KEY", 9) == 0) {
+ else if (memcmp(pReason, "WRONG_KEY", 9) == 0) {
error = LYNQ_PSW_ERROR;
}
g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_DISCONNECT, error);
@@ -229,8 +233,10 @@
}
}
}
- wpa_ctrl_detach(lynq_wpa_ctrl);
- wpa_ctrl_close(lynq_wpa_ctrl);
+ if (lynq_wpa_ctrl != NULL) {
+ wpa_ctrl_detach(lynq_wpa_ctrl);
+ wpa_ctrl_close(lynq_wpa_ctrl);
+ }
}
int lynq_wifi_enable(void)
@@ -948,7 +954,7 @@
return -1;
}
- if (0 == lynq_wifi_ap_auth_get(idx, &org_auth)) {
+ if (0 == lynq_wifi_ap_auth_get(idx, &org_auth) && org_auth != -1) {
if (org_auth == auth) {
return 0;
}
@@ -973,6 +979,7 @@
case LYNQ_WIFI_AUTH_OPEN:
{
sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
+ sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
DO_OK_FAIL_REQUEST(lynq_auth_cmd);
break;
@@ -980,6 +987,7 @@
case LYNQ_WIFI_AUTH_WEP:
{
sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
+ sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
sprintf(lynq_auth_alg_cmd,"SET_NETWORK %d auth_alg SHARED", AP_NETWORK_0);
DO_OK_FAIL_REQUEST(lynq_auth_cmd);
@@ -1040,9 +1048,9 @@
*auth = LYNQ_WIFI_AUTH_OPEN;
}
}
- else {
+ else if(strcmp( lynq_auth_str, "WPA-PSK") == 0 ) {
if (inner_get_param(CTRL_AP, AP_NETWORK_0, "proto", lynq_proto_str) != 0) {
- *auth = LYNQ_WIFI_AUTH_WPA_PSK;
+ *auth = -1;
}
else if (memcmp(lynq_proto_str, "RSN", 3) == 0) {
*auth = LYNQ_WIFI_AUTH_WPA2_PSK;
@@ -1051,6 +1059,9 @@
*auth = LYNQ_WIFI_AUTH_WPA_PSK;
}
}
+ else {
+ *auth = -1;
+ }
return 0;
}