edg_wll_FreeContext(ctx);
 
-        printf("Thread %d exitting\n",(int)pthread_self());
+//        printf("Thread %d exitting\n",(int)pthread_self());
 
         pthread_exit(NULL);
 
-        printf("Thread %d out !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",(int)pthread_self());
-//        return 0;
 }
 
 int main(int argc,char **argv)
 {
 
-        #define NUM_THREADS 10
+        #define NUM_THREADS 60
 
         thread_code_args arguments = { NULL , 0 , NULL };
        int     i,rc,status;
         pthread_attr_destroy(&attr);
 
         for (i=0;i<NUM_THREADS;i++) {
-            printf("*** Joining thread %d.\n",i);
+//            printf("*** Joining thread %d.\n",i);
             rc=pthread_join(threads[i],(void **)&status);
-            printf("*** Thread %d joined. (status %d ret. code %d)\n",i,status,rc);
+//            printf("*** Thread %d joined. (status %d ret. code %d)\n",i,status,rc);
 
         }
 
 
         cIndex = *conn_index;
 
        assert(ctx->connections->connOpened);
-       assert(cIndex < ctx->connections->connOpened);
+//     assert(cIndex < ctx->connections->connOpened); // Assertion no longer valid. "Holes" in the pool are permitted.
 
        edg_wll_gss_close(&ctx->connections->connPool[cIndex].gss, &ctx->p_tmp_timeout);
        if (ctx->connections->connPool[cIndex].gsiCred) 
        assert(connToUse >= 0);
        gettimeofday(&ctx->connections->connPool[connToUse].lastUsed, NULL);
  
-        sleep(3); //Just for testing
+//        sleep(3); //Just for testing
 
         edg_wll_connectionUnlock(ctx, connToUse);
        return 0;