static void rb_curl_multi_remove(ruby_curl_multi *rbcm, VALUE easy) { CURLMcode result; ruby_curl_easy *rbce; Data_Get_Struct(easy, ruby_curl_easy, rbce); rbcm->active--; //printf( "calling rb_curl_multi_remove: 0x%X, active: %d\n", (long)easy, rbcm->active ); result = curl_multi_remove_handle(rbcm->handle, rbce->curl); if (result != 0) { raise_curl_multi_error_exception(result); } ruby_curl_easy_cleanup( easy, rbce, rbce->bodybuf, rbce->headerbuf, rbce->curl_headers ); rbce->headerbuf = Qnil; rbce->bodybuf = Qnil; rb_hash_delete( rbcm->requests, rb_int_new((long)rbce->curl) ); }
static void rb_curl_multi_remove(ruby_curl_multi *rbcm, VALUE easy) { CURLMcode result; ruby_curl_easy *rbce; VALUE r; Data_Get_Struct(easy, ruby_curl_easy, rbce); result = curl_multi_remove_handle(rbcm->handle, rbce->curl); if (result != 0) { raise_curl_multi_error_exception(result); } rbcm->active--; ruby_curl_easy_cleanup( easy, rbce ); // active should equal INT2FIX(RHASH(rbcm->requests)->tbl->num_entries) r = rb_hash_delete( rbcm->requests, easy ); if( r != easy || r == Qnil ) { rb_warn("Possibly lost track of Curl::Easy VALUE, it may not be reclaimed by GC"); } }