#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. | 
 1.5.8
 1.5.8