diff --git a/src/Network/httpd.cxx b/src/Network/httpd.cxx
index b012e0ba1..7a567a61a 100644
--- a/src/Network/httpd.cxx
+++ b/src/Network/httpd.cxx
@@ -100,6 +100,7 @@ void HttpdChannel::foundTerminator (void) {
unsigned int pos = rest.find( " " );
if ( pos != string::npos ) {
request = rest.substr( 0, pos );
+ request = urlDecode(request);
} else {
request = "/";
}
@@ -176,6 +177,11 @@ void HttpdChannel::foundTerminator (void) {
for (int i = 0; i < node->nChildren(); i++) {
SGPropertyNode *child = node->getChild(i);
string name = child->getName();
+ if ( node->getChild(name, 1) ) {
+ char buf[16];
+ sprintf(buf, "[%d]", child->getIndex());
+ name += buf;
+ }
string line = "";
if ( child->nChildren() > 0 ) {
line += "";
line += name;
line += "";
@@ -197,7 +203,7 @@ void HttpdChannel::foundTerminator (void) {
if ( request.substr(request.length() - 1, 1) != (string)"/" ) {
line += "/";
}
- line += name;
+ line += urlEncode(name);
line += "\">(";
line += value;
line += ")
";
@@ -210,12 +216,12 @@ void HttpdChannel::foundTerminator (void) {
string value = node->getStringValue();
response += "