diff options
Diffstat (limited to 'trunk/ACE/apps/JAWS2/HTTPU/http_request.cpp')
-rw-r--r-- | trunk/ACE/apps/JAWS2/HTTPU/http_request.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/trunk/ACE/apps/JAWS2/HTTPU/http_request.cpp b/trunk/ACE/apps/JAWS2/HTTPU/http_request.cpp new file mode 100644 index 00000000000..d4f5eb4366b --- /dev/null +++ b/trunk/ACE/apps/JAWS2/HTTPU/http_request.cpp @@ -0,0 +1,86 @@ +// $Id$ + +#include "HTTPU/http_request.h" +#include "HTTPU/parse_http_request.h" + +void +HTTP_Request::parse_line (void) +{ + this->status_ = STATUS_OK; + + this->request_.init (this->line ()); + if (this->request_.error () != Parse_HTTP_Request::HTTPU_OK) + { + this->status_ = STATUS_INTERNAL_SERVER_ERROR; + return; + } + if (this->request_.major_version () == 0) + { + this->no_headers_ = 1; + return; + } + + this->url_.init (this->request_.url ()); + if (this->url_.error () != 0) + this->status_ = STATUS_INTERNAL_SERVER_ERROR; +} + +int +HTTP_Request::espouse_line (void) +{ + int count; + + if (this->request_.major_version () == 0) + { + count = ACE_OS::sprintf (this->mb_->wr_ptr (), "%s /%s\r\n\r\n", + this->request_.method_str (), + this->url_.url_path ()); + + if (count < 0) + return -1; + + this->mb_->wr_ptr (count); + + return 1; + } + + count = ACE_OS::sprintf (this->mb_->wr_ptr (), "%s /%s %s\r\n", + this->request_.method_str (), + this->url_.url_path (), + this->request_.version ()); + + if (count < 0) + return -1; + + this->mb_->wr_ptr (count); + + if (this->url_.host () != 0) + { + JAWS_Header_Data *hd = this->headers ()->find ("Host"); + if (hd == 0) + { + count = ACE_OS::sprintf (this->mb_->wr_ptr (), "Host: %s\r\n", + this->url_.host ()); + + if (count < 0) + return -1; + + this->mb_->wr_ptr (count); + } + } + + return 0; +} + +void +HTTP_Request::dump (void) +{ + ACE_DEBUG ((LM_DEBUG, "===== BEGIN entera_HTTP_Request::dump =====\n")); + HTTP_Base::dump (); + this->request_.dump (); + ACE_DEBUG ((LM_DEBUG, "===== END entera_HTTP_Request::dump =====\n")); +} + +#if !defined (ACE_HAS_INLINED_OSCALLS) +# include "HTTPU/http_request.inl" +# endif /* ACE_HAS_INLINED_OSCALLS */ |