X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_request_object.c;h=35c66200278a4eed9233cdf02224b4b2c736bdb1;hb=79b54baf2c7fa5b37a4ed96a21d29c3574c1270b;hp=2ab84c0c3fe0300efbe271254a58be09e62d6b3f;hpb=96c0ae82ca8cda98d70b87597d765a9d050129de;p=m6w6%2Fext-http diff --git a/http_request_object.c b/http_request_object.c index 2ab84c0..35c6620 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -576,53 +576,20 @@ STATUS _http_request_object_responsehandler(http_request_object *obj, zval *this * the requests and the responses in separate chains * for redirects */ - http_message *response = http_message_dup(msg); + http_message *response = http_message_parse(PHPSTR_VAL(&obj->request->conv.response), PHPSTR_LEN(&obj->request->conv.response)); http_message *request = http_message_parse(PHPSTR_VAL(&obj->request->conv.request), PHPSTR_LEN(&obj->request->conv.request)); - if (request && response) { - int num_req, num_resp; - - http_message_count(num_req, request); - http_message_count(num_resp, response); - - /* - stuck request messages in between response messages + if (response && request) { + zval *hist, *history = GET_PROP(history); + http_message *hist_msg = http_message_reverse(http_message_interconnect(response, request)); - response request - v v - response request - v v - response request - ================== - response > request - ,---' - response > request - ,---' - response > request - */ - if (num_req == num_resp) { - int i; - zval *hist, *history = GET_PROP(history); - http_message *res_tmp = response, *req_tmp = request, *req_par, *res_par; - - for (i = 0; i < num_req; ++i) { - res_par = res_tmp->parent; - req_par = req_tmp->parent; - res_tmp->parent = req_tmp; - req_tmp->parent = res_par; - res_tmp = res_par; - req_tmp = req_par; - } - - MAKE_STD_ZVAL(hist); - ZVAL_OBJVAL(hist, http_message_object_new_ex(http_message_object_ce, response, NULL), 0); - if (Z_TYPE_P(history) == IS_OBJECT) { - http_message_object_prepend(hist, history); - } - SET_PROP(history, hist); - zval_ptr_dtor(&hist); + MAKE_STD_ZVAL(hist); + ZVAL_OBJVAL(hist, http_message_object_new_ex(http_message_object_ce, hist_msg, NULL), 0); + if (Z_TYPE_P(history) == IS_OBJECT) { + http_message_object_prepend(hist, history); } - /* TODO: error? */ + SET_PROP(history, hist); + zval_ptr_dtor(&hist); } else { http_message_free(&response); http_message_free(&request);