#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. |
void kre_http_get_content_length | ( | struct kre_http_request * | req, | |
char * | b, | |||
size_t | size | |||
) |
Get HTTP Content-Length if exsists value.
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.
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.
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.
req | Place to save request field. | |
bu | Source request buffor. | |
size | Size of buffer. |
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.
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. |
void kre_http_get_uri | ( | struct kre_http_request * | req, | |
char * | b, | |||
size_t | size | |||
) |
Get URI from HTTP request ( from buffer b ).
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.
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.
bu | Buffer using during transfering. | |
s | Size of buffer bu. | |
thr | Thread structure with alocated and connecting dstsock and csock socket. |