Close file descriptors for socket appropriately during SoftAP disconnect.
Change-Id: Idadae26ce6bbdf1ea6f6b1eaa63cd890bbfcb541
CRs-Fixed: 293934
diff --git a/softap/jni/QWiFiSoftApCfg.c b/softap/jni/QWiFiSoftApCfg.c
old mode 100644
new mode 100755
index 28ef074..22a6f43
--- a/softap/jni/QWiFiSoftApCfg.c
+++ b/softap/jni/QWiFiSoftApCfg.c
@@ -313,7 +313,8 @@
const char *pcmd;
char cmd[MAX_CMD_SIZE];
char resp[MAX_RESP_SIZE];
- int sock, rc;
+ int sock = -1;
+ int rc;
int done = 0;
char code[32] = {0};
int connect_retry;
@@ -400,5 +401,10 @@
end:
(*env)->ReleaseStringUTFChars(env, jcmd, pcmd);
+ if( sock >= 0 ){
+ close(sock);
+ sock = -1;
+ }
+
return (*env)->NewStringUTF(env, resp);
}
diff --git a/softap/sdk/qsap_api.c b/softap/sdk/qsap_api.c
index 4626710..2dbd24d 100755
--- a/softap/sdk/qsap_api.c
+++ b/softap/sdk/qsap_api.c
@@ -1132,12 +1132,14 @@
ret = ioctl(sock, QCSAP_IOCTL_GET_CHANNEL, &wrq);
if(ret < 0) {
LOGE("%s: ioctl failure \n",__func__);
+ close(sock);
goto error;
}
LOGE("Recv len :%d \n", wrq.u.data.length);
LOGE("Operating channel :%ld \n", *pchan);
+ close(sock);
return eSUCCESS;
error:
@@ -1231,6 +1233,7 @@
pbuf = (s8 *)malloc((MAX_STA_ALLOWED * 6) + 8);
if(NULL == pbuf) {
LOGE("%s :No memory \n", __func__);
+ close(sock);
goto error;
}
@@ -1245,6 +1248,7 @@
if(ret < 0) {
LOGE("%s :ioctl failure \n", __func__);
free(pbuf);
+ close(sock);
goto error;
}
@@ -1259,6 +1263,7 @@
*plen = len + tlen;
free(pbuf);
+ close(sock);
return;
error:
@@ -1328,6 +1333,7 @@
pbuf = (s8 *)malloc(MAX_RESP_LEN);
if(NULL == pbuf) {
LOGE("%s :No memory \n", __func__);
+ close(sock);
goto error;
}
@@ -1340,6 +1346,7 @@
if(ret < 0) {
LOGE("%s :ioctl failure \n", __func__);
free(pbuf);
+ close(sock);
goto error;
}
@@ -1350,7 +1357,7 @@
*plen = recvLen;
free(pbuf);
-
+ close(sock);
return;
error:
@@ -2052,6 +2059,7 @@
if(TRUE != qsap_get_mac_in_bytes(pVal, pbuf)) {
LOGE("%s: Invalid input \n", __func__);
+ close(sock);
goto end;
}
@@ -2063,6 +2071,7 @@
if(ret < 0) {
LOGE("%s: ioctl failure \n", __func__);
}
+ close(sock);
end:
*plen = snprintf(presp, *plen, "%s", (ret == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);