Merged the composable_generator branch into the trunk
git-svn-id: http://mc-server.googlecode.com/svn/trunk@504 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -47,7 +47,15 @@
|
||||
#include "UrlHelper.h"
|
||||
#include "base64.h"
|
||||
|
||||
webserver::request_func webserver::request_func_=0;
|
||||
|
||||
|
||||
|
||||
|
||||
webserver::request_func webserver::request_func_ = NULL;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static std::string EatLine( std::string& a_String )
|
||||
{
|
||||
@@ -76,6 +84,10 @@ static std::string EatLine( std::string& a_String )
|
||||
return RetVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Turns
|
||||
// "blabla my string with \"quotes\"!"
|
||||
// into
|
||||
@@ -116,6 +128,10 @@ static std::string GetQuotedString( const std::string& a_String )
|
||||
return RetVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void ParseMultipartFormData( webserver::http_request& req, Socket* s)
|
||||
{
|
||||
static const std::string multipart_form_data = "multipart/form-data";
|
||||
@@ -229,6 +245,10 @@ void ParseMultipartFormData( webserver::http_request& req, Socket* s)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
unsigned webserver::Request(void* ptr_s)
|
||||
#else
|
||||
@@ -395,6 +415,10 @@ void* webserver::Request(void* ptr_s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void webserver::Stop()
|
||||
{
|
||||
m_bStop = true;
|
||||
@@ -402,46 +426,72 @@ void webserver::Stop()
|
||||
m_Events->Wait();
|
||||
}
|
||||
|
||||
void webserver::Begin()
|
||||
|
||||
|
||||
|
||||
|
||||
bool webserver::Begin()
|
||||
{
|
||||
if (!m_Socket->IsValid())
|
||||
{
|
||||
LOGINFO("WebAdmin: The server socket is invalid. Terminating WebAdmin.");
|
||||
return false;
|
||||
}
|
||||
m_bStop = false;
|
||||
while ( !m_bStop )
|
||||
{
|
||||
Socket* ptr_s=m_Socket->Accept();
|
||||
if( m_bStop )
|
||||
Socket * ptr_s = m_Socket->Accept();
|
||||
if (m_bStop)
|
||||
{
|
||||
if( ptr_s != 0 )
|
||||
if (ptr_s != 0)
|
||||
{
|
||||
ptr_s->Close();
|
||||
delete ptr_s;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (ptr_s == NULL)
|
||||
{
|
||||
LOGINFO("WebAdmin: Accepted socket is NULL. Terminating WebAdmin to avoid busywait.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// unused variable 'ret'
|
||||
//_beginthreadex(0,0,Request,(void*) ptr_s,0,&ret);
|
||||
// Thanks to Frank M. Hoffmann for fixing a HANDLE leak
|
||||
#ifdef _WIN32
|
||||
unsigned ret;
|
||||
HANDLE hHandle = reinterpret_cast<HANDLE>(_beginthreadex(0,0,Request,(void*) ptr_s,0,&ret));
|
||||
HANDLE hHandle = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, Request, (void *)ptr_s, 0, &ret));
|
||||
CloseHandle(hHandle);
|
||||
#else
|
||||
pthread_t* hHandle = new pthread_t;
|
||||
// Mattes: TODO: this handle probably leaks!
|
||||
pthread_t * hHandle = new pthread_t;
|
||||
pthread_create( hHandle, NULL, Request, ptr_s);
|
||||
#endif
|
||||
}
|
||||
m_Events->Set();
|
||||
return true;
|
||||
}
|
||||
|
||||
webserver::webserver(unsigned int port_to_listen, request_func r) {
|
||||
m_Socket = new SocketServer(port_to_listen,1);
|
||||
|
||||
|
||||
|
||||
|
||||
webserver::webserver(unsigned int port_to_listen, request_func r)
|
||||
{
|
||||
m_Socket = new SocketServer(port_to_listen, 1);
|
||||
|
||||
request_func_ = r;
|
||||
m_Events = new cEvents();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
webserver::~webserver()
|
||||
{
|
||||
delete m_Socket;
|
||||
delete m_Events;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user