Hi all,
as of yesterday the CLI server didn't seemed to listen to addr:port in
format like [::1]:3000, so here's a patch.
Feedback very welcome.
Greetings,
Florian
See http://pastie.org/2138304 or this:
--- php_cli_server.c.orig 2011-06-28 19:43:23.123167815 +0200
+++ php_cli_server.c 2011-06-29 09:08:28.971479778 +0200
@@ -1799,28 +1799,13 @@
}
{
-
char *p = strrchr(host, ':');
-
char *end = strchr(host, ']');
-
if (p && (end == `NULL` || p > end)) {
-
char *p = strchr(host, ':');
-
if (p) { *p++ = '\0'; port = strtol(p, &p, 10);
-
if (port < 0 || port > 65535) {
-
printf(stderr, "Invalid built-in
web-server addr:port argument\n");
-
return FAILURE;
-
} } }
-
if (*host == '[' && host[strlen(host)-1] == ']') {
-
char v6address[40];
-
int success = sscanf(host, "\[%39[^]]\]", v6address);
-
if (success != 1) {
-
php_cli_server_logf("Failed to listen on %s:%d
(reason: %s)" TSRMLS_CC, host, port, errstr ? errstr: "?");
-
return FAILURE;
-
}
-
host = pestrdup(v6address, 1);
-
}
-
server_sock = php_network_listen_socket(host, &port,
SOCK_STREAM, &server->address_family, &server->socklen, &errstr TSRMLS_CC);
if (server_sock == SOCK_ERR) {
php_cli_server_logf("Failed to listen on %s:%d (reason:
%s)" TSRMLS_CC, host, port, errstr ? errstr: "?");
Oops,
please have a look at the correct diff :)
--- sapi/cli/php_cli_server.c.old 2011-06-29 09:08:28.971479778 +0200
+++ sapi/cli/php_cli_server.c 2011-06-28 19:43:23.123167815 +0200
@@ -1799,13 +1799,28 @@
}
{
-
char *p = strchr(host, ':');
-
if (p) {
-
char *p = strrchr(host, ':');
-
char *end = strchr(host, ']');
-
if (p && (end == `NULL` || p > end)) { *p++ = '\0'; port = strtol(p, &p, 10);
-
if (port < 0 || port > 65535) {
-
printf(stderr, "Invalid built-in web-server addr:port argument\n");
-
return FAILURE;
-
} }
}
-
if (*host == '[' && host[strlen(host)-1] == ']') {
-
char v6address[40];
-
int success = sscanf(host, "\[%39[^]]\]", v6address);
-
if (success != 1) {
-
php_cli_server_logf("Failed to listen on %s:%d (reason: %s)"
TSRMLS_CC, host, port, errstr ? errstr: "?");
-
return FAILURE;
-
}
-
host = pestrdup(v6address, 1);
- }
- server_sock = php_network_listen_socket(host, &port, SOCK_STREAM,
&server->address_family, &server->socklen, &errstr TSRMLS_CC);
if (server_sock == SOCK_ERR) {
php_cli_server_logf("Failed to listen on %s:%d (reason: %s)"
TSRMLS_CC, host, port, errstr ? errstr: "?");
Oops,
please have a look at the correct diff :)
Keep the good ideas coming in!
Can you log a bug and attach the patch?
Chris
--
Email: christopher.jones@oracle.com
Tel: +1 650 506 8630
Blog: http://blogs.oracle.com/opal/
Can you log a bug and attach the patch?
Chris
There you go after bugs is back \o/
https://bugs.php.net/bug.php?id=55073
Greetings,
Florian