3 #include "JAWS/IO_Handler.h"
4 #include "JAWS/Policy.h"
8 #include "HTTP_10_Request.h"
12 // --------------- WRITE TASK ----------------------
14 JAWS_HTTP_10_Write_Task::JAWS_HTTP_10_Write_Task (void)
18 JAWS_HTTP_10_Write_Task::~JAWS_HTTP_10_Write_Task (void)
23 JAWS_HTTP_10_Write_Task::handle_put (JAWS_Data_Block
*data
, ACE_Time_Value
*)
25 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put");
27 JAWS_IO_Handler
*handler
= data
->io_handler ();
29 JAWS_Dispatch_Policy
*policy
= this->policy ();
30 if (policy
== 0) policy
= data
->policy ();
32 JAWS_IO
*io
= policy
->io ();
34 JAWS_HTTP_10_Request
*info
= static_cast<JAWS_HTTP_10_Request
*> (data
->payload ());
36 if (info
->status () == (int) JAWS_HTTP_10_Request::STATUS_QUIT
)
44 ACE_DEBUG ((LM_DEBUG
, " (%t) request %s::%s::%s parsed\n",
45 (info
->method () ? info
->method () : "-"),
46 (info
->uri () ? info
->uri () : "="),
47 (info
->version () ? info
->version () : "HTTP/0.9")));
50 if (info
->type () != (int) JAWS_HTTP_10_Request::GET
)
51 info
->set_status (JAWS_HTTP_10_Request::STATUS_NOT_IMPLEMENTED
);
53 if (info
->type () == (int) JAWS_HTTP_10_Request::QUIT
)
54 info
->set_status (JAWS_HTTP_10_Request::STATUS_QUIT
);
56 if (info
->status () != (int) JAWS_HTTP_10_Request::STATUS_OK
)
58 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, ! STATUS OK");
61 "<html><head><title>HTTP/1.0 500 Internal Server Error</title>"
62 "<body><h1>Server Error</h1>HTTP/1.0 500 Internal Server Error"
65 io
->send_error_message (handler
, msg
, sizeof (msg
));
66 switch (handler
->status ())
68 case JAWS_IO_Handler::WRITE_OK
:
69 case JAWS_IO_Handler::WRITE_OK_A
:
70 if (info
->status () == (int) JAWS_HTTP_10_Request::STATUS_QUIT
)
81 case JAWS_IO_Handler::WRITE_ERROR
:
82 case JAWS_IO_Handler::WRITE_ERROR_A
:
95 if (ACE_OS::strcmp (info
->version (), "HTTP/0.9") == 0)
96 io
->transmit_file (handler
,
103 io
->transmit_file (handler
,
105 "HTTP/1.0 200 Ok\r\n\r\n",
110 switch (handler
->status ())
112 case JAWS_IO_Handler::TRANSMIT_OK_A
:
114 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, OK_A");
120 case JAWS_IO_Handler::TRANSMIT_OK
:
122 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, OK");
127 case JAWS_IO_Handler::TRANSMIT_ERROR
:
129 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, ERROR");
134 case JAWS_IO_Handler::TRANSMIT_ERROR_A
:
136 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, ERROR_A");
143 JAWS_TRACE ("JAWS_HTTP_10_Write_Task::handle_put, DEFAULT");