static void HttpResult_dealloc(pycbc_HttpResult *self) { if (self->u.htreq) { if (self->parent) { if (self->htype == PYCBC_HTTP_HVIEW) { lcb_view_cancel(self->parent->instance, self->u.vh); } else { lcb_cancel_http_request(self->parent->instance, self->u.htreq); } } self->u.htreq = NULL; } Py_XDECREF(self->http_data); Py_XDECREF(self->headers); Py_XDECREF(self->parent); pycbc_Result_dealloc((pycbc_Result*)self); }
void PLCB__viewhandle_stop(SV *pp) { AV *req = (AV *)SvRV(pp); PLCB_t *parent = parent_from_req(req); SV **tmp, *vhsv; tmp = av_fetch(req, PLCB_VHIDX_VHANDLE, 0); if (!tmp) { return; } vhsv = *tmp; if (SvIOK(vhsv)) { lcb_VIEWHANDLE vh = NUM2PTR(lcb_VIEWHANDLE, SvUV(vhsv)); lcb_view_cancel(parent->instance, vh); av_store(req, PLCB_VHIDX_VHANDLE, SvREFCNT_inc(&PL_sv_undef)); av_store(req, PLCB_VHIDX_ISDONE, SvREFCNT_inc(&PL_sv_yes)); SvREFCNT_dec((SV *)req); } }