check g_free_queue.head == NULL before free_queue_realloc()

pull/10/head
yuqing 2016-06-08 18:30:14 +08:00
parent 45e57c2bb0
commit fb0162d769
2 changed files with 26 additions and 15 deletions

View File

@ -1,10 +1,11 @@
Version 1.28 2016-06-06
Version 1.28 2016-06-08
* id generator support extra bits
* change inet_aton to inet_pton
* connect by ip and connection pool support ipv6
* id generator in php extension support multi instance
* add function http_parse_url_params
* check g_free_queue.head == NULL before free_queue_realloc()
Version 1.27 2016-04-15
* add function fd_set_cloexec

View File

@ -410,6 +410,8 @@ static int free_queue_realloc()
struct fast_task_info *free_queue_pop()
{
struct fast_task_info *pTask;
int i;
if ((pTask=task_queue_pop(&g_free_queue)) != NULL)
{
return pTask;
@ -420,6 +422,8 @@ struct fast_task_info *free_queue_pop()
return NULL;
}
for (i=0; i<10; i++)
{
pthread_mutex_lock(&g_free_queue.lock);
if (g_free_queue.alloc_connections >= g_free_queue.max_connections)
{
@ -431,7 +435,7 @@ struct fast_task_info *free_queue_pop()
}
else
{
if (free_queue_realloc() != 0)
if (g_free_queue.head == NULL && free_queue_realloc() != 0)
{
pthread_mutex_unlock(&g_free_queue.lock);
return NULL;
@ -439,7 +443,13 @@ struct fast_task_info *free_queue_pop()
}
pthread_mutex_unlock(&g_free_queue.lock);
return task_queue_pop(&g_free_queue);
if ((pTask=task_queue_pop(&g_free_queue)) != NULL)
{
return pTask;
}
}
return NULL;
}
static int _realloc_buffer(struct fast_task_info *pTask, const int new_size,