Method: Curl::Easy#close
- Defined in:
- ext/curb_easy.c
#close ⇒ nil
Close the Curl::Easy instance. Any open connections are closed The easy handle is reinitialized. If a previous multi handle was open it is set to nil and will be cleared after a GC.
509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 |
# File 'ext/curb_easy.c', line 509
static VALUE ruby_curl_easy_close(VALUE self) {
CURLcode ecode;
ruby_curl_easy *rbce;
Data_Get_Struct(self, ruby_curl_easy, rbce);
if (rbce->callback_active) {
rb_raise(rb_eRuntimeError, "Cannot close an active curl handle within a callback");
}
ruby_curl_easy_free(rbce);
/* reinit the handle */
rbce->curl = curl_easy_init();
if (!rbce->curl) {
rb_raise(eCurlErrFailedInit, "Failed to initialize easy handle");
}
rbce->multi = Qnil;
ruby_curl_easy_zero(rbce);
rbce->self = self;
/* give the new curl handle a reference back to the ruby object */
ecode = curl_easy_setopt(rbce->curl, CURLOPT_PRIVATE, (void*)rbce);
if (ecode != CURLE_OK) {
raise_curl_easy_error_exception(ecode);
}
return Qnil;
}
|