# [PATCH] Small patch for CLI server regarding IPv6 and commandline parsing

- Thread: https://externals.io/message/53646
- Original archive: https://news-web.php.net/php.internals/53646
- Started by Florian Anderiasch on 2011-06-29T07:11:20+00:00
- Messages: 4
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #53646 — Florian Anderiasch — 2011-06-29T07:11:20+00:00

URL: https://externals.io/message/53646#53646

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: "?");

---

## #53647 — Florian Anderiasch — 2011-06-29T07:30:55+00:00

URL: https://externals.io/message/53646#53647 · In reply to: #53646

Oops,
please have a look at the correct diff :)

http://pastie.org/2138369

--- 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: "?");

---

## #53672 — Christopher Jones — 2011-06-29T17:09:53+00:00

URL: https://externals.io/message/53646#53672 · In reply to: #53647

> Oops,
> please have a look at the correct diff :)
>
> http://pastie.org/2138369

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/

---

## #53687 — Florian Anderiasch — 2011-06-29T22:07:21+00:00

URL: https://externals.io/message/53646#53687 · In reply to: #53672

> 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
