forked from wolfSSL/wolfssl
threaded fixes with static memory
This commit is contained in:
@@ -3135,16 +3135,16 @@ int InitSSL(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
|
|||||||
if (ctx_hint->memory->maxHa > 0 &&
|
if (ctx_hint->memory->maxHa > 0 &&
|
||||||
ctx_hint->memory->maxHa <= ctx_hint->memory->curHa) {
|
ctx_hint->memory->maxHa <= ctx_hint->memory->curHa) {
|
||||||
WOLFSSL_MSG("At max number of handshakes for static memory");
|
WOLFSSL_MSG("At max number of handshakes for static memory");
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
ctx_hint->memory->curHa++;
|
|
||||||
|
|
||||||
if (ctx_hint->memory->maxIO > 0 &&
|
if (ctx_hint->memory->maxIO > 0 &&
|
||||||
ctx_hint->memory->maxIO <= ctx_hint->memory->curIO) {
|
ctx_hint->memory->maxIO <= ctx_hint->memory->curIO) {
|
||||||
WOLFSSL_MSG("At max number of IO allowed for static memory");
|
WOLFSSL_MSG("At max number of IO allowed for static memory");
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
ctx_hint->memory->curIO++;
|
|
||||||
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
|
|
||||||
ssl->heap = (WOLFSSL_HEAP_HINT*)XMALLOC(sizeof(WOLFSSL_HEAP_HINT),
|
ssl->heap = (WOLFSSL_HEAP_HINT*)XMALLOC(sizeof(WOLFSSL_HEAP_HINT),
|
||||||
@@ -3173,17 +3173,29 @@ int InitSSL(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
|
|||||||
return BAD_MUTEX_E;
|
return BAD_MUTEX_E;
|
||||||
}
|
}
|
||||||
if (SetFixedIO(ctx_hint->memory, &(ssl_hint->inBuf)) != 1) {
|
if (SetFixedIO(ctx_hint->memory, &(ssl_hint->inBuf)) != 1) {
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
if (SetFixedIO(ctx_hint->memory, &(ssl_hint->outBuf)) != 1) {
|
if (SetFixedIO(ctx_hint->memory, &(ssl_hint->outBuf)) != 1) {
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
if (ssl_hint->outBuf == NULL || ssl_hint->inBuf == NULL) {
|
if (ssl_hint->outBuf == NULL || ssl_hint->inBuf == NULL) {
|
||||||
WOLFSSL_MSG("Not enough memory to create fixed IO buffers");
|
WOLFSSL_MSG("Not enough memory to create fixed IO buffers");
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* increment counters at end of setting up memory */
|
||||||
|
if (LockMutex(&(ctx_hint->memory->memory_mutex)) != 0) {
|
||||||
|
WOLFSSL_MSG("Bad memory_mutex lock");
|
||||||
|
return BAD_MUTEX_E;
|
||||||
|
}
|
||||||
|
ctx_hint->memory->curHa++;
|
||||||
|
ctx_hint->memory->curIO++;
|
||||||
|
UnLockMutex(&(ctx_hint->memory->memory_mutex));
|
||||||
#ifdef WOLFSSL_HEAP_TEST
|
#ifdef WOLFSSL_HEAP_TEST
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -493,8 +493,10 @@ void wolfSSL_Free(void *ptr, void* heap, int type)
|
|||||||
|
|
||||||
/* get memory struct and add it to available list */
|
/* get memory struct and add it to available list */
|
||||||
pt = (wc_Memory*)((byte*)ptr - sizeof(wc_Memory) - padSz);
|
pt = (wc_Memory*)((byte*)ptr - sizeof(wc_Memory) - padSz);
|
||||||
LockMutex(&(mem->memory_mutex));
|
if (LockMutex(&(mem->memory_mutex)) != 0) {
|
||||||
|
WOLFSSL_MSG("Bad memory_mutex lock");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* case of using fixed IO buffers */
|
/* case of using fixed IO buffers */
|
||||||
if (mem->flag & WOLFMEM_IO_POOL_FIXED &&
|
if (mem->flag & WOLFMEM_IO_POOL_FIXED &&
|
||||||
|
Reference in New Issue
Block a user