diff --git a/mongoose.c b/mongoose.c
index 009fc48f3f264b918472e314df02064733f9bc21..264cc424c912d0dad134ceb9b07436ba2b2de60b 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -7183,6 +7183,7 @@ static void mg_prepare_cgi_environment(struct mg_connection *nc,
   struct mg_str *h;
   char *p;
   size_t i;
+  char buf[100];
 
   blk->len = blk->nvars = 0;
   blk->nc = nc;
@@ -7190,7 +7191,6 @@ static void mg_prepare_cgi_environment(struct mg_connection *nc,
   if ((s = getenv("SERVER_NAME")) != NULL) {
     mg_addenv(blk, "SERVER_NAME=%s", s);
   } else {
-    char buf[100];
     mg_sock_to_str(nc->sock, buf, sizeof(buf), 3);
     mg_addenv(blk, "SERVER_NAME=%s", buf);
   }
@@ -7203,18 +7203,18 @@ static void mg_prepare_cgi_environment(struct mg_connection *nc,
   mg_addenv(blk, "%s", "SERVER_PROTOCOL=HTTP/1.1");
   mg_addenv(blk, "%s", "REDIRECT_STATUS=200"); /* For PHP */
 
-  /* TODO(lsm): fix this for IPv6 case */
-  /*addenv(blk, "SERVER_PORT=%d", ri->remote_port); */
-
   mg_addenv(blk, "REQUEST_METHOD=%.*s", (int) hm->method.len, hm->method.p);
-#if 0
-  addenv(blk, "REMOTE_ADDR=%s", ri->remote_ip);
-  addenv(blk, "REMOTE_PORT=%d", ri->remote_port);
-#endif
+
   mg_addenv(blk, "REQUEST_URI=%.*s%s%.*s", (int) hm->uri.len, hm->uri.p,
             hm->query_string.len == 0 ? "" : "?", (int) hm->query_string.len,
             hm->query_string.p);
 
+  mg_conn_addr_to_str(nc, buf, sizeof(buf),
+                      MG_SOCK_STRINGIFY_REMOTE | MG_SOCK_STRINGIFY_IP);
+  mg_addenv(blk, "REMOTE_ADDR=%s", buf);
+  mg_conn_addr_to_str(nc, buf, sizeof(buf), MG_SOCK_STRINGIFY_PORT);
+  mg_addenv(blk, "SERVER_PORT=%s", buf);
+
   s = hm->uri.p + hm->uri.len - path_info->len - 1;
   if (*s == '/') {
     const char *base_name = strrchr(prog, DIRSEP);