From b199455adeb01250743ba36e13d0905980326335 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sun, 22 Dec 2013 15:46:50 -0800 Subject: Adding formatted append to the String class. --- src/BString.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/BString.cc b/src/BString.cc index 57febcd..d14280c 100644 --- a/src/BString.cc +++ b/src/BString.cc @@ -22,6 +22,24 @@ Balau::String & Balau::String::set(const char * fmt, va_list ap) { return *this; } +Balau::String & Balau::String::append(const char * fmt, va_list ap) { + unsigned int l; +#ifdef _WIN32 + // Microsoft is stupid. + char tt[65536]; + l = _vsnprintf(tt, sizeof(tt)-1, fmt, ap); + tt[65535] = 0; + std::string::append(tt, l); +#else + char * t; + l = vasprintf(&t, fmt, ap); + std::string::append(t, l); + free(t); +#endif + + return *this; +} + int Balau::String::strchrcnt(char c) const { unsigned int l = length(); int r = 0; -- cgit v1.2.3 From e977ca1e5f6a10bab7af8b2736591f709783566f Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Mon, 23 Dec 2013 00:32:02 -0800 Subject: Few minor fixes... --- src/HelperTasks.cc | 4 +++- src/HttpServer.cc | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/HelperTasks.cc b/src/HelperTasks.cc index ab1c2a9..074aa8d 100644 --- a/src/HelperTasks.cc +++ b/src/HelperTasks.cc @@ -21,7 +21,7 @@ void Balau::CopyTask::Do() { toread = std::min(toread, (ssize_t) COPY_BUFSIZE); m_read = m_s->read(m_buffer, toread); AAssert(m_read >= 0, "Error while reading"); - if (m_s->isEOF() || !m_read) + if (!m_read) return; m_written = 0; m_state = 1; @@ -33,6 +33,8 @@ void Balau::CopyTask::Do() { } while (m_read != m_written); m_state = 0; m_current += m_read; + if (m_s->isEOF()) + return; } } } diff --git a/src/HttpServer.cc b/src/HttpServer.cc index 8eea5bb..921da3b 100644 --- a/src/HttpServer.cc +++ b/src/HttpServer.cc @@ -559,6 +559,7 @@ bool Balau::HttpWorker::handleClient() { auto f = m_server->findAction(uri.to_charp(), host.to_charp()); if (f.action) { + setOkayToEAgain(false); m_strm->detach(); IO out(new OutputCheck(m_socket)); Http::Request req; -- cgit v1.2.3 From 61202b565e7c440cae443d71f78b6c506ab60f38 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Mon, 23 Dec 2013 00:37:36 -0800 Subject: Apparently, the Connection header can be mixed cases. --- src/HttpServer.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/HttpServer.cc b/src/HttpServer.cc index 921da3b..43594e9 100644 --- a/src/HttpServer.cc +++ b/src/HttpServer.cc @@ -436,15 +436,15 @@ bool Balau::HttpWorker::handleClient() { bool gotOne = false; for (auto j = connVals.begin(); j != connVals.end(); j++) { String t = j->trim(); - if ((t == "close") && (!gotOne)) { + if ((t.lower() == "close") && (!gotOne)) { gotOne = true; persistent = false; - } else if ((t == "keep-alive") && (!gotOne)) { + } else if ((t.lower() == "keep-alive") && (!gotOne)) { gotOne = true; persistent = true; } else if (t == "TE") { Printer::elog(E_HTTPSERVER, "%s got the 'TE' connection marker (which is still unknown)", m_name.to_charp()); - } else if (t == "Upgrade") { + } else if (t.lower() == "upgrade") { upgrade = true; persistent = true; } else { -- cgit v1.2.3