forked from wolfSSL/wolfssl
crl: refactoring DoMonitor to reduce stack usage:
--- variable buff moved to the heap (8192 bytes saved)
This commit is contained in:
23
src/crl.c
23
src/crl.c
@ -546,6 +546,11 @@ static void* DoMonitor(void* arg)
|
|||||||
int notifyFd;
|
int notifyFd;
|
||||||
int wd = -1;
|
int wd = -1;
|
||||||
CYASSL_CRL* crl = (CYASSL_CRL*)arg;
|
CYASSL_CRL* crl = (CYASSL_CRL*)arg;
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
char* buff;
|
||||||
|
#else
|
||||||
|
char buff[8192];
|
||||||
|
#endif
|
||||||
|
|
||||||
CYASSL_ENTER("DoMonitor");
|
CYASSL_ENTER("DoMonitor");
|
||||||
|
|
||||||
@ -584,10 +589,16 @@ static void* DoMonitor(void* arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
buff = (char*)XMALLOC(8192, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if (buff == NULL)
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
fd_set readfds;
|
fd_set readfds;
|
||||||
char buff[8192];
|
int result;
|
||||||
int result, length;
|
int length;
|
||||||
|
|
||||||
FD_ZERO(&readfds);
|
FD_ZERO(&readfds);
|
||||||
FD_SET(notifyFd, &readfds);
|
FD_SET(notifyFd, &readfds);
|
||||||
@ -607,7 +618,7 @@ static void* DoMonitor(void* arg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
length = read(notifyFd, buff, sizeof(buff));
|
length = read(notifyFd, buff, 8192);
|
||||||
if (length < 0) {
|
if (length < 0) {
|
||||||
CYASSL_MSG("notify read problem, continue");
|
CYASSL_MSG("notify read problem, continue");
|
||||||
continue;
|
continue;
|
||||||
@ -618,6 +629,10 @@ static void* DoMonitor(void* arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
XFREE(buff, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (wd > 0)
|
if (wd > 0)
|
||||||
inotify_rm_watch(notifyFd, wd);
|
inotify_rm_watch(notifyFd, wd);
|
||||||
close(crl->mfd);
|
close(crl->mfd);
|
||||||
|
Reference in New Issue
Block a user