aboutsummaryrefslogtreecommitdiff
path: root/websocksy.h
blob: 275b9ab67bea80afbe1342529a2cefbddab78cba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdint.h>
#include <stdlib.h>
#include <nettle/sha1.h>
#include <nettle/base64.h>

#define WS_MAX_LINE 16384

typedef enum {
	ws_new = 0,
	ws_http,
	ws_open
} ws_state;

struct {
	char* host;
	char* port;
	struct {
		char* name;
	} backend;
} config = {
	.host = "::",
	.port = "8001",
	.backend.name = "internal"
};

typedef struct /*_web_socket*/ {
	int fd;
	int peer;
	uint8_t read_buffer[WS_MAX_LINE];
	size_t read_buffer_offset;
	ws_state state;

	char* request_path;
	unsigned websocket_version;
	char* socket_key;
	unsigned want_upgrade;

	size_t protocols;
	char** protocol;
} websocket;