Skip to content

Commit 34ea834

Browse files
author
DenverM80
committed
save index of head into pool->queue[tail] at time of acquire
1 parent 2c86955 commit 34ea834

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

src/ds3_connection.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ ds3_connection* ds3_connection_acquire(ds3_connection_pool* pool) {
9999
}
100100

101101
next_connection_index = pool->queue[pool->head];
102+
pool->queue[pool->head] = -1; // invalid while in use
102103
if (pool->connections[next_connection_index] == NULL) {
103104
connection = g_new0(ds3_connection, 1);
104105
connection = curl_easy_init();
@@ -107,6 +108,7 @@ ds3_connection* ds3_connection_acquire(ds3_connection_pool* pool) {
107108
} else {
108109
connection = pool->connections[next_connection_index];
109110
}
111+
pool->queue[pool->tail] = pool->head;
110112
pool->head = _pool_inc(pool->head, pool->size);
111113

112114
printf("ds3_connection_acquire() END: head[%d] tail[%d]\n", pool->head, pool->tail);
@@ -116,15 +118,11 @@ ds3_connection* ds3_connection_acquire(ds3_connection_pool* pool) {
116118
}
117119

118120
void ds3_connection_release(ds3_connection_pool* pool, ds3_connection* connection) {
119-
int tail_connection_index;
120-
121121
g_mutex_lock(&pool->mutex);
122122
printf("ds3_connection_release() BEGIN: head[%d] tail[%d]\n", pool->head, pool->tail);
123123

124124
curl_easy_reset(connection);
125-
tail_connection_index = pool->queue[pool->tail];
126125

127-
pool->connections[tail_connection_index] = connection;
128126
pool->tail = _pool_inc(pool->tail, pool->size);
129127

130128
printf("ds3_connection_release() END: head[%d] tail[%d]\n", pool->head, pool->tail);

0 commit comments

Comments
 (0)