[sheepdog] [PATCH 3/9] http: add uri and status to http_request
Liu Yuan
namei.unix at gmail.com
Thu Oct 31 10:20:14 CET 2013
On Thu, Oct 31, 2013 at 04:49:01PM +0900, MORITA Kazutaka wrote:
> From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
>
> These fields are necessary to implement REST APIs in the later patch.
>
> Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
> ---
> sheep/http.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/sheep/http.c b/sheep/http.c
> index 71bfb37..e4c1657 100644
> --- a/sheep/http.c
> +++ b/sheep/http.c
> @@ -17,12 +17,6 @@
>
> #include "sheep_priv.h"
>
> -struct http_request {
> - FCGX_Request fcgx;
> - int opcode;
> - size_t data_length;
> -};
> -
> enum http_opcode {
> HTTP_GET = 1,
> HTTP_PUT,
> @@ -32,7 +26,8 @@ enum http_opcode {
> };
>
> enum http_status {
> - OK = 1, /* 200 */
> + UNKNOWN = 0,
> + OK, /* 200 */
> CREATED, /* 201 */
> PARTIAL_CONTENT, /* 206 */
> BAD_REQUEST, /* 400 */
> @@ -42,9 +37,18 @@ enum http_status {
> NOT_IMPLEMENTED, /* 501 */
> };
>
> +struct http_request {
> + FCGX_Request fcgx;
> + char *uri;
> + enum http_opcode opcode;
> + enum http_status status;
> + size_t data_length;
> +};
> +
> static inline const char *strstatus(int status)
> {
> static const char *const descs[] = {
> + [UNKNOWN] = "Unknown",
> [OK] = "200 OK",
> [CREATED] = "201 CREATED",
> [PARTIAL_CONTENT] = "206 Partial Content",
> @@ -144,6 +148,7 @@ static int request_init_operation(struct http_request *req)
>
> p = FCGX_GetParam("CONTENT_LENGTH", env);
> req->data_length = strtoll(p, NULL, 10);
> + req->uri = FCGX_GetParam("DOCUMENT_URI", env);
>
> return OK;
> }
> @@ -162,8 +167,13 @@ static int http_init_request(struct http_request *req)
> return OK;
> }
>
> +/* This function does nothing if we have already printed a status code. */
> static void http_response_header(struct http_request *req, int status)
> {
> + if (req->status != UNKNOWN)
> + return;
Probably you meant req->status == UNKNOWN?
Thanks
Yuan
More information about the sheepdog
mailing list