diff --git a/library/server/wsf/router/wsf_delete_helper.e b/library/server/wsf/router/wsf_delete_helper.e index 751e0adf..15f08204 100644 --- a/library/server/wsf/router/wsf_delete_helper.e +++ b/library/server/wsf/router/wsf_delete_helper.e @@ -23,34 +23,42 @@ feature {NONE} -- Implementation -- "NEGOTIATED_ENCODING" local l_dt: STRING + l_ok: BOOLEAN do a_handler.delete (req) - if a_handler.includes_response_entity (req) then - a_handler.ensure_content_available (req) - a_header.put_content_length (a_handler.content_length (req).as_integer_32) - -- we don't bother supporting chunked responses for DELETE. - else - a_header.put_content_length (0) - end - if attached req.request_time as l_time then - l_dt := (create {HTTP_DATE}.make_from_date_time (l_time)).rfc1123_string - a_header.put_header_key_value ({HTTP_HEADER_NAMES}.header_date, l_dt) - generate_cache_headers (req, a_handler, a_header, l_time) - end - if a_handler.delete_queued (req) then - res.set_status_code ({HTTP_STATUS_CODE}.accepted) - res.put_header_text (a_header.string) - res.put_string (a_handler.content (req)) - elseif a_handler.deleted (req) then + l_ok := a_handler.response_ok (req) + if l_ok then if a_handler.includes_response_entity (req) then - res.set_status_code ({HTTP_STATUS_CODE}.ok) + a_handler.ensure_content_available (req) + l_ok := a_handler.response_ok (req) + if l_ok then + a_header.put_content_length (a_handler.content_length (req).as_integer_32) + end + -- we don't bother supporting chunked responses for DELETE. + else + a_header.put_content_length (0) + end + if attached req.request_time as l_time then + l_dt := (create {HTTP_DATE}.make_from_date_time (l_time)).rfc1123_string + a_header.put_header_key_value ({HTTP_HEADER_NAMES}.header_date, l_dt) + generate_cache_headers (req, a_handler, a_header, l_time) + end + if a_handler.delete_queued (req) then + res.set_status_code ({HTTP_STATUS_CODE}.accepted) res.put_header_text (a_header.string) res.put_string (a_handler.content (req)) - else - res.set_status_code ({HTTP_STATUS_CODE}.no_content) - res.put_header_text (a_header.string) + elseif a_handler.deleted (req) then + if a_handler.includes_response_entity (req) then + res.set_status_code ({HTTP_STATUS_CODE}.ok) + res.put_header_text (a_header.string) + res.put_string (a_handler.content (req)) + else + res.set_status_code ({HTTP_STATUS_CODE}.no_content) + res.put_header_text (a_header.string) + end end - else + end + if not l_ok then write_error_response (req, res) end end diff --git a/library/server/wsf/router/wsf_get_helper.e b/library/server/wsf/router/wsf_get_helper.e index c5e7a8cb..666518e2 100644 --- a/library/server/wsf/router/wsf_get_helper.e +++ b/library/server/wsf/router/wsf_get_helper.e @@ -26,18 +26,21 @@ feature {NONE} -- Implementation l_dt: STRING do a_handler.ensure_content_available (req) - l_chunked := a_handler.is_chunking (req) - if l_chunked then - a_header.put_transfer_encoding_chunked - else - a_header.put_content_length (a_handler.content_length (req).as_integer_32) - end - if attached req.request_time as l_time then - l_dt := (create {HTTP_DATE}.make_from_date_time (l_time)).rfc1123_string - a_header.put_header_key_value ({HTTP_HEADER_NAMES}.header_date, l_dt) - generate_cache_headers (req, a_handler, a_header, l_time) - end l_ok := a_handler.response_ok (req) + if l_ok then + l_chunked := a_handler.is_chunking (req) + if l_chunked then + a_header.put_transfer_encoding_chunked + else + a_header.put_content_length (a_handler.content_length (req).as_integer_32) + end + if attached req.request_time as l_time then + l_dt := (create {HTTP_DATE}.make_from_date_time (l_time)).rfc1123_string + a_header.put_header_key_value ({HTTP_HEADER_NAMES}.header_date, l_dt) + generate_cache_headers (req, a_handler, a_header, l_time) + end + l_ok := a_handler.response_ok (req) + end if l_ok then res.set_status_code ({HTTP_STATUS_CODE}.ok) else