diff --git a/tracker/tracker_mem.c b/tracker/tracker_mem.c index abe92fd..f0c15b7 100644 --- a/tracker/tracker_mem.c +++ b/tracker/tracker_mem.c @@ -4097,6 +4097,32 @@ static int tracker_mem_first_add_tracker_servers(FDFSStorageJoinBody *pJoinBody) return find_my_ip_in_tracker_list(); } +static int tracker_mem_copy_uniq_tracker_servers( + TrackerServerInfo *pSrcServer, + TrackerServerInfo *pDestServer) +{ + ConnectionInfo *conn; + ConnectionInfo *end; + + end = pSrcServer->connections + pSrcServer->count; + for (conn=pSrcServer->connections; conncount == FDFS_MULTI_IP_MAX_COUNT) + { + logError("file: "__FILE__", line: %d, " + "tracker IPs reach max count: %d", + __LINE__, FDFS_MULTI_IP_MAX_COUNT); + return ENOSPC; + } + + pDestServer->connections[pDestServer->count++] = *conn; + } + } + return 0; +} + static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody) { TrackerServerInfo *pJoinTracker; @@ -4117,8 +4143,17 @@ static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody) for (pLocalTracker=g_tracker_servers.servers; pLocalTrackercount > pLocalTracker->count) + { + tracker_mem_copy_uniq_tracker_servers(pJoinTracker, + pLocalTracker); + } break; } } diff --git a/tracker/tracker_relationship.c b/tracker/tracker_relationship.c index 7a455b0..60fc3f9 100644 --- a/tracker/tracker_relationship.c +++ b/tracker/tracker_relationship.c @@ -192,7 +192,7 @@ static int relationship_get_tracker_leader(TrackerRunningStatus *pTrackerStatus) pStatus = trackerStatus; result = 0; pTrackerEnd = g_tracker_servers.servers + g_tracker_servers.server_count; - for (pTrackerServer=g_tracker_servers.servers; \ + for (pTrackerServer=g_tracker_servers.servers; pTrackerServerpTrackerServer = pTrackerServer;