]> git.tdb.fi Git - libs/net.git/blobdiff - source/http/server.cpp
Fix processing of IPv6 addresses in HTTP server
[libs/net.git] / source / http / server.cpp
index 066fabe39218a47fe5a58de05450c696c110888d..04bae0b4d8c24f7f9e72177c923c19fc2234083c 100644 (file)
@@ -1,3 +1,4 @@
+#include "server.h"
 #include <exception>
 #include <typeinfo>
 #include <msp/core/maputils.h>
@@ -9,7 +10,6 @@
 #include <msp/strings/utils.h>
 #include "request.h"
 #include "response.h"
-#include "server.h"
 
 using namespace std;
 
@@ -146,7 +146,7 @@ void Server::client_data_available(Client &cl)
                                cl.request = make_unique<Request>(Request::parse(cl.in_buf));
 
                                string addr_str = cl.sock->get_peer_address().str();
-                               string::size_type colon = addr_str.find(':');
+                               string::size_type colon = addr_str.find(':', (addr_str[0]=='[' ? addr_str.find(']')+1 : 0));
                                cl.request->set_header("-Client-Host", addr_str.substr(0, colon));
 
                                if(cl.request->get_method()!="GET" && cl.request->get_method()!="POST")