24#include <openssl/ssl.h>
30#define PKRSRV_WEBSOCKET_EXPECTED_HTTP_HEADER "GET / HTTP/1.1"
32#define pkrsrv_websocket_packet_frame_header \
33 uint8_t fin_rsv_opcode; \
39pkrsrv_websocket_packet_frame_len8 {
45pkrsrv_websocket_packet_frame_len16 {
52pkrsrv_websocket_packet_frame_len64 {
58#define PKRSRV_WEBSOCKET_GUID "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
60#define HTTP_HEADER_BUFF_SIZE 1000
61#define HTTP_PROP_BUFF_SIZE 40
62#define HTTP_VAL_BUFF_SIZE 50
77typedef struct pkrsrv_websocket_header {
78 uint8_t header0_16[2];
85 unsigned char mkey[4];
89typedef struct pkrsrv_websocket_payload {
94typedef struct pkrsrv_websocket {
95 int (*read)(SSL* ssl,
void* buffer, ssize_t length);
96 int (*write)(SSL* ssl,
void* buffer, ssize_t length);
bool is_fragmented
Definition websocket.h:98
int mask_i
Definition websocket.h:86
char * buffer
Definition websocket.h:99
pkrsrv_websocket_header_t current_header
Definition websocket.h:97
ssize_t length
Definition websocket.h:90
uint64_t plen
Definition websocket.h:80
unsigned char * data
Definition websocket.h:91
uint8_t opcode
Definition websocket.h:83
uint16_t plen16
Definition websocket.h:81
uint8_t is_masked
Definition websocket.h:84
pthread_mutex_t * write_mutex
Definition websocket.h:102
int buffer_length
Definition websocket.h:100
uint64_t plen64
Definition websocket.h:82
uint8_t fin
Definition websocket.h:79
int buffer_readed
Definition websocket.h:101
struct __attribute__((packed)) pkrsrv_websocket_packet_frame_len8
Definition websocket.h:38
ssize_t pkrsrv_websocket_read_payload(pkrsrv_websocket_t *ws, SSL *ssl, void *buffer, ssize_t size)
struct pkrsrv_websocket_packet_frame_len16 pkrsrv_websocket_packet_frame_len16_t
Definition websocket.h:43
#define pkrsrv_websocket_packet_frame_header
Definition websocket.h:32
char * pkrsrv_websocket_generate_ws_accept_key(char *websocket_key)
struct pkrsrv_websocket_packet_frame_len8 pkrsrv_websocket_packet_frame_len8_t
Definition websocket.h:37
PKRSRV_WEBSOCKET_RESPONSE
Definition websocket.h:73
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE
Definition websocket.h:64
void pkrsrv_websocket_fragmented_begin(pkrsrv_websocket_t *ws, SSL *ssl, size_t length)
struct pkrsrv_websocket_packet_frame_len64 pkrsrv_websocket_packet_frame_len64_t
Definition websocket.h:50
void pkrsrv_websocket_init(pkrsrv_websocket_t *ws)
ssize_t pkrsrv_websocket_send_header(pkrsrv_websocket_t *ws, SSL *ssl, ssize_t length)
ssize_t pkrsrv_websocket_read_header(pkrsrv_websocket_t *ws, SSL *ssl)
ssize_t pkrsrv_websocket_fragmented_put(pkrsrv_websocket_t *ws, SSL *ssl, void *data, ssize_t length)
ssize_t pkrsrv_websocket_read_http_header(pkrsrv_websocket_t *ws, SSL *ssl)
@ PKRSRV_WEBSOCKET_RESPONSE_INSTANCE_PORT
Definition websocket.h:74
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_VAL
Definition websocket.h:68
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_PROP
Definition websocket.h:66
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_CR
Definition websocket.h:69
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_END
Definition websocket.h:70
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_METHOD
Definition websocket.h:65
@ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_SPACE
Definition websocket.h:67
Definition websocket.h:89
Definition websocket.h:94