don't abuse STR_FREE; ditch http\Url::parse(); fix tests
[m6w6/ext-http] / php_http_env_response.c
index 4d6ef037471fb9bb02faf0a32f2773e052a631e1..83ebc6b64d7f7c893f118db997ba525ef505dfe5 100644 (file)
@@ -147,7 +147,7 @@ php_http_cache_status_t php_http_env_is_response_cached_by_etag(zval *options, c
                efree(etag);
        }
 
-       STR_FREE(header);
+       PTR_FREE(header);
        return ret;
 }
 
@@ -190,7 +190,7 @@ php_http_cache_status_t php_http_env_is_response_cached_by_last_modified(zval *o
                }
        }
 
-       STR_FREE(header);
+       PTR_FREE(header);
        return ret;
 }
 
@@ -254,7 +254,7 @@ static STATUS php_http_env_response_send_data(php_http_env_response_t *r, const
                        return SUCCESS;
                }
                chunks_sent = php_http_buffer_chunked_output(&r->buffer, enc_str, enc_len, buf ? chunk : 0, output, r TSRMLS_CC);
-               STR_FREE(enc_str);
+               PTR_FREE(enc_str);
        } else {
                chunks_sent = php_http_buffer_chunked_output(&r->buffer, buf, len, buf ? chunk : 0, output, r TSRMLS_CC);
        }
@@ -303,8 +303,8 @@ void php_http_env_response_dtor(php_http_env_response_t *r)
        }
        php_http_buffer_free(&r->buffer);
        zval_ptr_dtor(&r->options);
-       STR_FREE(r->content.type);
-       STR_FREE(r->content.encoding);
+       PTR_FREE(r->content.type);
+       PTR_FREE(r->content.encoding);
        if (r->content.encoder) {
                php_http_encoding_stream_free(&r->content.encoder);
        }
@@ -329,6 +329,17 @@ static STATUS php_http_env_response_send_head(php_http_env_response_t *r, php_ht
                return ret;
        }
 
+       if ((zoption = get_option(options, ZEND_STRL("headers") TSRMLS_CC))) {
+               if (Z_TYPE_P(zoption) == IS_ARRAY) {
+                       php_http_header_to_callback(Z_ARRVAL_P(zoption), 0, (php_http_pass_format_callback_t) r->ops->set_header, r TSRMLS_CC);
+               }
+               zval_ptr_dtor(&zoption);
+       }
+
+       if (ret != SUCCESS) {
+               return ret;
+       }
+
        if ((zoption = get_option(options, ZEND_STRL("responseCode") TSRMLS_CC))) {
                zval *zoption_copy = php_http_ztyp(IS_LONG, zoption);
 
@@ -359,17 +370,6 @@ static STATUS php_http_env_response_send_head(php_http_env_response_t *r, php_ht
                return ret;
        }
 
-       if ((zoption = get_option(options, ZEND_STRL("headers") TSRMLS_CC))) {
-               if (Z_TYPE_P(zoption) == IS_ARRAY) {
-                       php_http_header_to_callback(Z_ARRVAL_P(zoption), 0, (php_http_pass_format_callback_t) r->ops->set_header, r TSRMLS_CC);
-               }
-               zval_ptr_dtor(&zoption);
-       }
-
-       if (ret != SUCCESS) {
-               return ret;
-       }
-
        if ((zoption = get_option(options, ZEND_STRL("contentType") TSRMLS_CC))) {
                zval *zoption_copy = php_http_ztyp(IS_STRING, zoption);
 
@@ -1096,7 +1096,11 @@ static PHP_METHOD(HttpEnvResponse, __invoke)
 
                php_http_message_object_init_body_object(obj);
                php_http_message_body_append(obj->message->body, ob_str, ob_len);
+#if PHP_VERSION_ID >= 50400
                RETURN_TRUE;
+#else
+               RETURN_EMPTY_STRING();
+#endif
        }
 }