kre_http.h File Reference

kREproxy HTTP protocol service More...

#include "kre_threads.h"
#include "kre_network.h"
#include "kre_utils.h"

Go to the source code of this file.

Data Structures

struct  kre_http_message_header
 Message header. More...
struct  kre_http_request
 kREproxy HTTP request representation. More...

Defines

#define KRE_SERVER_NAME   "kREproxy (author: Marcin Tomasik)"
#define KRE_SERVER_NAME_SIZE   33
#define KRE_HTTP_REQ_BUF_SIZE   2048
#define KRE_HTTP_MAX_FIELD_SIZE   100
#define KRE_HTTP_MAX_FIELD_VALUE_SIZE   1000
#define KRE_HTTP_MAX_REQUEST_LINE_SIZE   1000
#define KRE_HTTP_ERROR   1
#define KRE_HTTP_SHOULD_STOP   2
#define KRE_HTTP_OK   200
#define KRE_HTTP_NO_CONTENT   204
#define KRE_HTTP_BAD_REQUEST   400
#define KRE_HTTP_NOT_FOUND   404
#define KRE_HTTP_METHOD_NOT_ALLOWD   405
#define KRE_HTTP_REQ_ENTITY_TOO_LARGE   413
#define KRE_HTTP_REQ_URI_TOO_LARGE   414
#define KRE_HTTP_DST_UNRECHABLE   900
#define KRE_HTTP_SERVER_IS_BUSY   901
#define KRE_HTTP_INTERNAL_SERVER_ERROR   500
#define KRE_HTTP_NOT_IMPLEMENTED   501
#define KRE_HTTP_SERVICE_UNAVALIBLE   503
#define KRE_HTTP_METH_GET   0
#define KRE_HTTP_METH_POST   1
#define KRE_HTTP_METH_HEAD   2
#define KRE_HTTP_METH_OPTIONS   3
#define KRE_HTTP_METH_PUT   4
#define KRE_HTTP_METH_DELETE   5
#define KRE_HTTP_METH_TRACE   6
#define KRE_HTTP_METH_CONNECT   7
#define KRE_HTTP_METH_NOT_IMPLEMENTED   8

Functions

void kre_http_get_meth_from_buf (struct kre_http_request *req, char *b, size_t size)
 Get HTTP method from b parameter.
void kre_http_get_content_length (struct kre_http_request *req, char *b, size_t size)
 Get HTTP Content-Length if exsists value.
void kre_http_get_uri (struct kre_http_request *req, char *b, size_t size)
 Get URI from HTTP request ( from buffer b ).
void kre_http_get_host (struct kre_http_request *req, char *b, size_t size)
 Get Host from HTTP request b.
int kre_http_get_req_from_buf (struct kre_http_request *req, char *bu, size_t size)
 Get all needed field from request buf and save to req structure.
int kre_http_get_request (char *bu, size_t s, struct kre_http_request *req, struct kre_thread *cur)
 Get HTTP request from client to buffer bu and return count of received bytes or error or should stop flag.
int kre_http_transfer_response (char *bu, size_t s, struct kre_thread *thr)
 Transfer response from dst host to client host using buffer bu.
void kre_http_set_response (char *bu, size_t size, int code)
 Build response in bu based on http_error number.


Detailed Description

kREproxy HTTP protocol service


Function Documentation

void kre_http_get_content_length ( struct kre_http_request req,
char *  b,
size_t  size 
)

Get HTTP Content-Length if exsists value.

Parameters:
req Place where contetn length value is saved if not exsixts 0 value is saved.
b Buffor with http request.
size Size of buffer.

void kre_http_get_host ( struct kre_http_request req,
char *  b,
size_t  size 
)

Get Host from HTTP request b.

Parameters:
req Place to save host.
b Buffer with request.
size Size of buffer b.

void kre_http_get_meth_from_buf ( struct kre_http_request req,
char *  b,
size_t  size 
)

Get HTTP method from b parameter.

Parameters:
req Place to save http method.
b Buffor with http request.
size Size of buffer.

int kre_http_get_req_from_buf ( struct kre_http_request req,
char *  bu,
size_t  size 
)

Get all needed field from request buf and save to req structure.

Parameters:
req Place to save request field.
bu Source request buffor.
size Size of buffer.
Returns:
0 if everything is ok or -EINVAL, -1, or req->state ( KRE_HTTP_BAD_REQUEST, ... ).

int kre_http_get_request ( char *  bu,
size_t  s,
struct kre_http_request req,
struct kre_thread cur 
)

Get HTTP request from client to buffer bu and return count of received bytes or error or should stop flag.

Parameters:
bu Buffer where http request will go.
s Size of buffer.
req Place to save HTTP request in specific kre format.
cur Curent kre thread with csock.
Returns:
-KRE_HTTP_ERROR | -KRE_HTTP_SHOULD_STOP | count of received bytes.

void kre_http_get_uri ( struct kre_http_request req,
char *  b,
size_t  size 
)

Get URI from HTTP request ( from buffer b ).

Parameters:
req Place to save uri.
b Buffer with request.
size Size of buffer.

void kre_http_set_response ( char *  bu,
size_t  size,
int  code 
)

Build response in bu based on http_error number.

Parameters:
bu Buffer where new response is build.
size Max size of buffer.
code KRE_HTTP_( response code ) for example KRE_HTTP_BAD_REQUEST, KRE_HTTP_INTERNAL_SERVER_ERROR, ... , KRE_HTTP_SERVER_IS_BUSY,..

int kre_http_transfer_response ( char *  bu,
size_t  s,
struct kre_thread thr 
)

Transfer response from dst host to client host using buffer bu.

Parameters:
bu Buffer using during transfering.
s Size of buffer bu.
thr Thread structure with alocated and connecting dstsock and csock socket.
Returns:
Error code or 0.


Generated on Fri Feb 20 19:46:05 2009 for kREproxy by  doxygen 1.5.8