mirror of
https://github.com/danog/ext-uv.git
synced 2024-11-26 20:14:47 +01:00
Enabled http parser again
This commit is contained in:
parent
39a7fe3c7e
commit
bdaf5a0bb8
13
config.m4
13
config.m4
@ -44,7 +44,7 @@ if test $PHP_UV != "no"; then
|
||||
SOURCES=""
|
||||
|
||||
if test $PHP_HTTPPARSER != "no"; then
|
||||
SOURCES=" http-parser/http_parser.c"
|
||||
SOURCES=" uv_http_parser.c http-parser/http_parser.c"
|
||||
AC_DEFINE([ENABLE_HTTPPARSER], [1], [ Enable http parser])
|
||||
fi
|
||||
|
||||
@ -81,15 +81,4 @@ if test $PHP_UV != "no"; then
|
||||
])
|
||||
|
||||
PHP_SUBST(UV_SHARED_LIBADD)
|
||||
|
||||
# CFLAGS=" $CFLAGS -Wunused-variable -Wpointer-sign -Wimplicit-function-declaration -Winline -Wunused-macros -Wredundant-decls -Wstrict-aliasing=2 -Wswitch-enum -Wdeclaration-after-statement"
|
||||
|
||||
# case $host in
|
||||
# *darwin*)
|
||||
# ;;
|
||||
# *linux*)
|
||||
# CFLAGS="$CFLAGS -lrt"
|
||||
# esac
|
||||
|
||||
# PHP_SUBST([CFLAGS])
|
||||
fi
|
||||
|
12
php_uv.c
12
php_uv.c
@ -232,7 +232,6 @@ static int uv_lock_handle;
|
||||
|
||||
static int uv_stdio_handle;
|
||||
|
||||
|
||||
char *php_uv_resource_map[IS_UV_MAX] = {
|
||||
"uv_tcp",
|
||||
"uv_udp",
|
||||
@ -2573,9 +2572,12 @@ PHP_MINIT_FUNCTION(uv)
|
||||
uv_loop_handle = zend_register_list_destructors_ex(destruct_uv_loop, NULL, PHP_UV_LOOP_RESOURCE_NAME, module_number);
|
||||
uv_sockaddr_handle = zend_register_list_destructors_ex(destruct_uv_sockaddr, NULL, PHP_UV_SOCKADDR_RESOURCE_NAME, module_number);
|
||||
uv_lock_handle = zend_register_list_destructors_ex(destruct_uv_lock, NULL, PHP_UV_LOCK_RESOURCE_NAME, module_number);
|
||||
// uv_httpparser_handle = zend_register_list_destructors_ex(destruct_httpparser, NULL, PHP_UV_HTTPPARSER_RESOURCE_NAME, module_number);
|
||||
uv_stdio_handle = zend_register_list_destructors_ex(destruct_uv_stdio, NULL, PHP_UV_STDIO_RESOURCE_NAME, module_number);
|
||||
|
||||
#ifdef ENABLE_HTTPPARSER
|
||||
register_httpparser(module_number);
|
||||
#endif
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@ -6509,10 +6511,14 @@ static zend_function_entry uv_functions[] = {
|
||||
PHP_FE(uv_signal_init, arginfo_uv_signal_init)
|
||||
PHP_FE(uv_signal_start, arginfo_uv_signal_start)
|
||||
PHP_FE(uv_signal_stop, arginfo_uv_signal_stop)
|
||||
#ifdef ENABLE_HTTPPARSER
|
||||
/* http parser */
|
||||
PHP_FE(uv_http_parser_init, arginfo_uv_http_parser_init)
|
||||
PHP_FE(uv_http_parser_execute, arginfo_uv_http_parser_execute)
|
||||
#endif
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
PHP_MINFO_FUNCTION(uv)
|
||||
{
|
||||
char uv_version[20];
|
||||
|
4
php_uv.h
4
php_uv.h
@ -32,6 +32,10 @@
|
||||
#include "php.h"
|
||||
#include "uv.h"
|
||||
|
||||
#ifdef ENABLE_HTTPPARSER
|
||||
#include "uv_http_parser.h"
|
||||
#endif
|
||||
|
||||
#include "php_network.h"
|
||||
#include "php_streams.h"
|
||||
|
||||
|
7
uv.c
7
uv.c
@ -183,6 +183,13 @@ static int php_uv_class_init(TSRMLS_D)
|
||||
zend_declare_class_constant_long(uv_class_entry, "PROCESS_WINDOWS_VERBATIM_ARGUMENTS", sizeof("PROCESS_WINDOWS_VERBATIM_ARGUMENTS")-1, UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS TSRMLS_CC);
|
||||
zend_declare_class_constant_long(uv_class_entry, "PROCESS_DETACHED", sizeof("PROCESS_DETACHED")-1, UV_PROCESS_DETACHED TSRMLS_CC);
|
||||
|
||||
#ifdef ENABLE_HTTPPARSER
|
||||
/* http parser */
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_BOTH", sizeof("HTTP_BOTH")-1, HTTP_BOTH TSRMLS_CC);
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_REQUEST", sizeof("HTTP_REQUEST")-1, HTTP_REQUEST TSRMLS_CC);
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_RESPONSE", sizeof("HTTP_RESPONSE")-1, HTTP_RESPONSE TSRMLS_CC);
|
||||
#endif
|
||||
|
||||
#define PHP_UV_ERRNO_GEN(code_notused, name, msg_notused) zend_declare_class_constant_long(uv_class_entry, #name, sizeof(#name)-1, UV_##name TSRMLS_CC);
|
||||
UV_ERRNO_MAP(PHP_UV_ERRNO_GEN)
|
||||
#undef PHP_UV_ERRNO_GEN
|
||||
|
@ -1,9 +1,13 @@
|
||||
#include "uv_http_parser.h"
|
||||
|
||||
static int uv_httpparser_handle;
|
||||
|
||||
void static destruct_httpparser(zend_rsrc_list_entry *rsrc TSRMLS_DC)
|
||||
void destruct_httpparser(zend_rsrc_list_entry *rsrc TSRMLS_DC)
|
||||
{
|
||||
php_http_parser_context *obj = (php_http_parser_context *)rsrc->ptr;
|
||||
|
||||
fprintf(stderr, "Destroying http parser\n");
|
||||
|
||||
if (obj->headers) {
|
||||
zval_ptr_dtor(&obj->headers);
|
||||
}
|
||||
@ -14,6 +18,11 @@ void static destruct_httpparser(zend_rsrc_list_entry *rsrc TSRMLS_DC)
|
||||
efree(obj);
|
||||
}
|
||||
|
||||
void register_httpparser(int module_number)
|
||||
{
|
||||
uv_httpparser_handle = zend_register_list_destructors_ex(destruct_httpparser, NULL, PHP_UV_HTTPPARSER_RESOURCE_NAME, module_number);
|
||||
}
|
||||
|
||||
/* http parser callbacks */
|
||||
static int on_message_begin(http_parser *p)
|
||||
{
|
||||
@ -143,17 +152,6 @@ static int on_body_cb(http_parser *p, const char *at, size_t len)
|
||||
}
|
||||
/* end of callback */
|
||||
|
||||
/* HTTP PARSER */
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_uv_http_parser_init, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, target)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_uv_http_parser_execute, 0, 0, 3)
|
||||
ZEND_ARG_INFO(0, resource)
|
||||
ZEND_ARG_INFO(0, buffer)
|
||||
ZEND_ARG_INFO(0, setting)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
/* {{{ proto resource uv_http_parser_init(long $target = UV::HTTP_REQUEST)
|
||||
*/
|
||||
PHP_FUNCTION(uv_http_parser_init)
|
||||
@ -216,7 +214,7 @@ PHP_FUNCTION(uv_http_parser_execute)
|
||||
size_t nparsed = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
|
||||
"rs/a",&z_parser, &body, &body_len, &result) == FAILURE) {
|
||||
"rs/a", &z_parser, &body, &body_len, &result) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -253,25 +251,10 @@ PHP_FUNCTION(uv_http_parser_execute)
|
||||
|
||||
MAKE_STD_ZVAL(headers);
|
||||
ZVAL_ZVAL(headers, context->headers, 1, 0);
|
||||
|
||||
add_assoc_zval(headers, "VERSION", version);
|
||||
add_assoc_zval(result, "HEADERS", headers);
|
||||
|
||||
if (context->finished == 1) {
|
||||
RETURN_TRUE;
|
||||
} else {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
RETURN_BOOL(context->finished);
|
||||
}
|
||||
|
||||
// static zend_function_entry uv_functions[] = {
|
||||
|
||||
/* http parser */
|
||||
PHP_FE(uv_http_parser_init, arginfo_uv_http_parser_init)
|
||||
PHP_FE(uv_http_parser_execute, arginfo_uv_http_parser_execute)
|
||||
|
||||
// php_uv_class_init
|
||||
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_BOTH", sizeof("HTTP_BOTH")-1, HTTP_BOTH TSRMLS_CC);
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_REQUEST", sizeof("HTTP_REQUEST")-1, HTTP_REQUEST TSRMLS_CC);
|
||||
zend_declare_class_constant_long(uv_class_entry, "HTTP_RESPONSE", sizeof("HTTP_RESPONSE")-1, HTTP_RESPONSE TSRMLS_CC);
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
#ifndef UV_HTTPPARSER_H
|
||||
#define UV_HTTPPARSER_H
|
||||
|
||||
#include "php.h"
|
||||
#include "zend_exceptions.h"
|
||||
|
||||
#include "http_parser.h"
|
||||
|
||||
typedef struct {
|
||||
@ -15,3 +21,20 @@ typedef struct {
|
||||
|
||||
#define PHP_UV_HTTPPARSER_RESOURCE_NAME "uv_httpparser"
|
||||
|
||||
void register_httpparser(int module_number);
|
||||
|
||||
/* HTTP PARSER */
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_uv_http_parser_init, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, target)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_uv_http_parser_execute, 0, 0, 3)
|
||||
ZEND_ARG_INFO(0, resource)
|
||||
ZEND_ARG_INFO(0, buffer)
|
||||
ZEND_ARG_INFO(0, setting)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
PHP_FUNCTION(uv_http_parser_init);
|
||||
PHP_FUNCTION(uv_http_parser_execute);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user