From 0ea1795cbdacdad3617885213d9246876a22dcec Mon Sep 17 00:00:00 2001 From: yuqing Date: Thu, 10 Nov 2016 09:01:03 +0800 Subject: [PATCH] bug fixed: list_all_groups expand buffer auto --- HISTORY | 3 +++ common/fdfs_global.c | 2 +- fastdfs.spec | 6 +++--- tracker/tracker_service.c | 9 +++++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/HISTORY b/HISTORY index 3104936..7cdc801 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,7 @@ +Version 5.09 2016-11-10 + * bug fixed: list_all_groups expand buffer auto + Version 5.08 2016-04-08 * install library to $(TARGET_PREFIX)/lib anyway * php extension compiled in PHP 7 diff --git a/common/fdfs_global.c b/common/fdfs_global.c index 76b2775..87a7d45 100644 --- a/common/fdfs_global.c +++ b/common/fdfs_global.c @@ -23,7 +23,7 @@ int g_fdfs_connect_timeout = DEFAULT_CONNECT_TIMEOUT; int g_fdfs_network_timeout = DEFAULT_NETWORK_TIMEOUT; char g_fdfs_base_path[MAX_PATH_SIZE] = {'/', 't', 'm', 'p', '\0'}; -Version g_fdfs_version = {5, 8}; +Version g_fdfs_version = {5, 9}; bool g_use_connection_pool = false; ConnectionPool g_connection_pool; int g_connection_pool_max_idle_time = 3600; diff --git a/fastdfs.spec b/fastdfs.spec index aa24ff6..dc11dc7 100644 --- a/fastdfs.spec +++ b/fastdfs.spec @@ -2,7 +2,7 @@ %define FDFSServer fastdfs-server %define FDFSClient libfdfsclient %define FDFSTool fastdfs-tool -%define FDFSVersion 5.0.8 +%define FDFSVersion 5.0.9 Name: %{FastDFS} Version: %{FDFSVersion} @@ -16,13 +16,13 @@ Source: http://perso.orange.fr/sebastien.godard/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id -BuildRequires: libfastcommon-devel >= 1.0.24 +BuildRequires: libfastcommon-devel >= 1.0.30 %description This package provides tracker & storage of fastdfs %package -n %{FDFSServer} -Requires: libfastcommon >= 1.0.24 +Requires: libfastcommon >= 1.0.30 Summary: fastdfs tracker & storage %package -n %{FDFSTool} diff --git a/tracker/tracker_service.c b/tracker/tracker_service.c index f69883e..1f05467 100644 --- a/tracker/tracker_service.c +++ b/tracker/tracker_service.c @@ -2952,6 +2952,8 @@ static int tracker_deal_server_list_all_groups(struct fast_task_info *pTask) FDFSGroupInfo **ppEnd; TrackerGroupStat *groupStats; TrackerGroupStat *pDest; + int result; + int expect_size; if (pTask->length - sizeof(TrackerHeader) != 0) { @@ -2966,6 +2968,13 @@ static int tracker_deal_server_list_all_groups(struct fast_task_info *pTask) return EINVAL; } + expect_size = sizeof(TrackerHeader) + g_groups.count * sizeof(TrackerGroupStat); + if ((result=free_queue_set_buffer_size(pTask, expect_size)) != 0) + { + pTask->length = sizeof(TrackerHeader); + return result; + } + groupStats = (TrackerGroupStat *)(pTask->data + sizeof(TrackerHeader)); pDest = groupStats; ppEnd = g_groups.sorted_groups + g_groups.count;