Skip to content

Commit 5692fa2

Browse files
committed
Convert php_cli_server_client->addr_str to zend_string
1 parent 926407f commit 5692fa2

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

sapi/cli/php_cli_server.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ typedef struct php_cli_server_client {
164164
php_socket_t sock;
165165
struct sockaddr *addr;
166166
socklen_t addr_len;
167-
char *addr_str;
168-
size_t addr_str_len;
167+
zend_string *addr_str;
169168
php_http_parser parser;
170169
unsigned int request_read:1;
171170
char *current_header_name;
@@ -640,9 +639,9 @@ static void sapi_cli_server_register_variables(zval *track_vars_array) /* {{{ */
640639
sapi_cli_server_register_variable(track_vars_array, "DOCUMENT_ROOT", client->server->document_root);
641640
{
642641
char *tmp;
643-
if ((tmp = strrchr(client->addr_str, ':'))) {
642+
if ((tmp = strrchr(ZSTR_VAL(client->addr_str), ':'))) {
644643
char addr[64], port[8];
645-
const char *addr_start = client->addr_str, *addr_end = tmp;
644+
const char *addr_start = ZSTR_VAL(client->addr_str), *addr_end = tmp;
646645
if (addr_start[0] == '[') addr_start++;
647646
if (addr_end[-1] == ']') addr_end--;
648647

@@ -653,7 +652,7 @@ static void sapi_cli_server_register_variables(zval *track_vars_array) /* {{{ */
653652
sapi_cli_server_register_variable(track_vars_array, "REMOTE_ADDR", addr);
654653
sapi_cli_server_register_variable(track_vars_array, "REMOTE_PORT", port);
655654
} else {
656-
sapi_cli_server_register_variable(track_vars_array, "REMOTE_ADDR", client->addr_str);
655+
sapi_cli_server_register_variable(track_vars_array, "REMOTE_ADDR", ZSTR_VAL(client->addr_str));
657656
}
658657
}
659658
{
@@ -1152,7 +1151,8 @@ static void php_cli_server_log_response(php_cli_server_client *client, int statu
11521151
#endif
11531152

11541153
/* basic */
1155-
spprintf(&basic_buf, 0, "%s [%d]: %s %s", client->addr_str, status, php_http_method_str(client->request.request_method), client->request.request_uri);
1154+
spprintf(&basic_buf, 0, "%s [%d]: %s %s", ZSTR_VAL(client->addr_str), status,
1155+
php_http_method_str(client->request.request_method), client->request.request_uri);
11561156
if (!basic_buf) {
11571157
return;
11581158
}
@@ -1891,14 +1891,13 @@ static void php_cli_server_client_ctor(php_cli_server_client *client, php_cli_se
18911891
client->sock = client_sock;
18921892
client->addr = addr;
18931893
client->addr_len = addr_len;
1894-
{
1895-
zend_string *addr_str = 0;
18961894

1897-
php_network_populate_name_from_sockaddr(addr, addr_len, &addr_str, NULL, 0);
1898-
client->addr_str = pestrndup(ZSTR_VAL(addr_str), ZSTR_LEN(addr_str), 1);
1899-
client->addr_str_len = ZSTR_LEN(addr_str);
1900-
zend_string_release_ex(addr_str, 0);
1901-
}
1895+
// TODO Prevent realloc?
1896+
zend_string *tmp_addr = NULL;
1897+
php_network_populate_name_from_sockaddr(addr, addr_len, &tmp_addr, NULL, 0);
1898+
client->addr_str = zend_string_dup(tmp_addr, /* persistent */ true);
1899+
zend_string_release_ex(tmp_addr, /* persistent */ false);
1900+
19021901
php_http_parser_init(&client->parser, PHP_HTTP_REQUEST);
19031902
client->request_read = 0;
19041903

@@ -1925,15 +1924,15 @@ static void php_cli_server_client_dtor(php_cli_server_client *client) /* {{{ */
19251924
client->file_fd = -1;
19261925
}
19271926
pefree(client->addr, 1);
1928-
pefree(client->addr_str, 1);
1927+
zend_string_release_ex(client->addr_str, /* persistent */ true);
19291928
if (client->content_sender_initialized) {
19301929
php_cli_server_content_sender_dtor(&client->content_sender);
19311930
}
19321931
} /* }}} */
19331932

19341933
static void php_cli_server_close_connection(php_cli_server *server, php_cli_server_client *client) /* {{{ */
19351934
{
1936-
php_cli_server_logf(PHP_CLI_SERVER_LOG_MESSAGE, "%s Closing", client->addr_str);
1935+
php_cli_server_logf(PHP_CLI_SERVER_LOG_MESSAGE, "%s Closing", ZSTR_VAL(client->addr_str));
19371936

19381937
zend_hash_index_del(&server->clients, client->sock);
19391938
} /* }}} */
@@ -2515,9 +2514,9 @@ static zend_result php_cli_server_recv_event_read_request(php_cli_server *server
25152514
if (errstr) {
25162515
if (strcmp(errstr, php_cli_server_request_error_unexpected_eof) == 0 && client->parser.state == s_start_req) {
25172516
php_cli_server_logf(PHP_CLI_SERVER_LOG_MESSAGE,
2518-
"%s Closed without sending a request; it was probably just an unused speculative preconnection", client->addr_str);
2517+
"%s Closed without sending a request; it was probably just an unused speculative preconnection", ZSTR_VAL(client->addr_str));
25192518
} else {
2520-
php_cli_server_logf(PHP_CLI_SERVER_LOG_ERROR, "%s Invalid request (%s)", client->addr_str, errstr);
2519+
php_cli_server_logf(PHP_CLI_SERVER_LOG_ERROR, "%s Invalid request (%s)", ZSTR_VAL(client->addr_str), errstr);
25212520
}
25222521
efree(errstr);
25232522
}
@@ -2605,7 +2604,7 @@ static zend_result php_cli_server_do_event_for_each_fd_callback(void *_params, p
26052604

26062605
php_cli_server_client_ctor(client, server, client_sock, sa, socklen);
26072606

2608-
php_cli_server_logf(PHP_CLI_SERVER_LOG_MESSAGE, "%s Accepted", client->addr_str);
2607+
php_cli_server_logf(PHP_CLI_SERVER_LOG_MESSAGE, "%s Accepted", ZSTR_VAL(client->addr_str));
26092608

26102609
zend_hash_index_update_ptr(&server->clients, client_sock, client);
26112610

0 commit comments

Comments
 (0)