in src/plugin/plugin_curl.rs [435:460]
fn finish_exit_span(span: &mut impl HandleSpanObject, ch: &ZVal) -> crate::Result<()> {
let result = call("curl_getinfo", &mut [ch.clone()])?;
let response = result.as_z_arr().context("response in not arr")?;
let http_code = response
.get("http_code")
.and_then(|code| code.as_long())
.context("Call curl_getinfo, http_code is null")?;
span.add_tag("status_code", &*http_code.to_string());
if http_code == 0 {
let result = call("curl_error", &mut [ch.clone()])?;
let curl_error = result
.as_z_str()
.context("curl_error is not string")?
.to_str()?;
let span_object = span.span_object_mut();
span_object.is_error = true;
span_object.add_log(vec![("CURL_ERROR", curl_error)]);
} else {
span.span_object_mut().is_error = http_code >= 400;
}
log_exception(span);
Ok(())
}