@@ -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
118120void 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