summaryrefslogtreecommitdiff
path: root/lib/HttpServ.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/HttpServ.cc')
-rw-r--r--lib/HttpServ.cc21
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/HttpServ.cc b/lib/HttpServ.cc
index b354f69..69dff1e 100644
--- a/lib/HttpServ.cc
+++ b/lib/HttpServ.cc
@@ -2,6 +2,7 @@
#include "Action.h"
#include "HttpServ.h"
#include "Buffer.h"
+#include "ReadJob.h"
#include "config.h"
String endhl = "\r\n", endnl = "\n";
@@ -14,14 +15,18 @@ HttpServ::HttpServ(int port, const String & nname) : name(nname), localport(port
void HttpServ::MainLoop(Action * p) {
while (1) {
- ProcessRequest(p, Socket(Listener.Accept()));
+ ProcessRequest(p, Listener.Accept());
}
}
void HttpServ::ProcessRequest(Action * p, Socket s) {
String file, domain, t;
+ Buffer b;
+ ReadJob c(s, b);
Action * f;
int len;
+
+ c.Do();
bad = false;
@@ -29,11 +34,11 @@ void HttpServ::ProcessRequest(Action * p, Socket s) {
cerr << "Got a request\n----\n";
- bool post = ParseUri(file, domain, s);
+ bool post = ParseUri(file, domain, b);
len = -1;
do {
- s >> t;
+ b >> t;
cerr << t << endl;
if ((t.strstr("Content-Length: ") == 0) || (t.strstr("Content-length: ") == 0)) {
cerr << "Saw 'Content-Lenght:', reading length from '" << t.extract(16) << "'\n";
@@ -109,7 +114,7 @@ void HttpServ::ProcessRequest(Action * p, Socket s) {
cerr << "----\n";
}
-void HttpServ::ParseVars(Socket & s, int len) {
+void HttpServ::ParseVars(Handle & s, int len) {
String t, v;
char conv[3], l;
int hconv, nbvars;
@@ -169,7 +174,7 @@ void HttpServ::ParseVars(Socket & s, int len) {
* c'est à dire la méthode demandée par le client.
*/
-bool HttpServ::ParseUri(String & file, String & domain, Socket & s) {
+bool HttpServ::ParseUri(String & file, String & domain, Handle & s) {
String t, Uri;
bool post = false;
char * p = NULL;
@@ -228,7 +233,7 @@ bool HttpServ::ParseUri(String & file, String & domain, Socket & s) {
/*
* Ceci sert à rediriger le navigateur vers l'url de démarrage.
*/
-void HttpServ::SendRedirect(Socket & s) {
+void HttpServ::SendRedirect(Handle & s) {
s << "HTTP/1.1 301 Moved Permanently" << endhl <<
"Server: " << name << endhl <<
"Location: http://127.0.0.1:" << localport << "/bin/start" << endhl <<
@@ -245,7 +250,7 @@ void HttpServ::SendRedirect(Socket & s) {
* Nous envoyons les entetes de réponse HTTP.
*/
-void HttpServ::SendHeads(Socket & s, const String & mime) {
+void HttpServ::SendHeads(Handle & s, const String & mime) {
s << "HTTP/1.1 200 OK" << endhl <<
"Server: " << name << endhl <<
"Cache-Control: no-cache" << endhl <<
@@ -257,7 +262,7 @@ void HttpServ::SendHeads(Socket & s, const String & mime) {
* Affichage d'une erreur 404.
*/
-void HttpServ::ShowError(Socket & s) {
+void HttpServ::ShowError(Handle & s) {
s << "HTTP/1.1 404 Not Found" << endhl <<
"Server: " << name << endhl <<
"Cache-Control: no-cache" << endhl <<