-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathconn.h
59 lines (53 loc) · 1.73 KB
/
conn.h
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <time.h>
#ifdef HAVE_LIBSSL
#include <openssl/ssl.h>
#include <openssl/err.h>
#endif
#include <time.h>
#define CONNECTIONS_MAX 500 /* max simultaneous connections */
/* Connection states, as used in struct conn */
#define CS_UNUSED (0) /* not connected, unused slot */
#define CS_IN_PROGRESS (1) /* connection in progress */
#define CS_CONNECTED (2) /* successfully connected */
#define CS_CLOSED_UP (4) /* we read eof from upfd */
#define CS_CLOSED_DOWN (8) /* we read eof from downfd */
#define CS_CLOSED (CS_CLOSED_UP | CS_CLOSED_DOWN)
#define CS_HALFDEAD (16) /* has not seen recent traffic */
#define CS_WAIT_PEEK (32) /* waiting for client's first frame */
typedef struct {
int state; /* as per above */
time_t t; /* time of connection attempt */
int downfd, upfd;
unsigned char *downb, *downbptr, *upb, *upbptr;
int downn, upn; /* pending bytes */
unsigned long ssx, srx; /* server total sent, received */
unsigned long csx, crx; /* client total sent, received */
int client; /* client index */
int initial; /* first server tried */
int server; /* server index */
int pend; /* node in pending_list */
#ifdef HAVE_LIBSSL
SSL *ssl;
time_t reneg; /* last time client requested renegotiation */
#endif
} connection;
extern connection *conns;
extern int idle_timeout;
extern int pending_list;
extern int pending_queue;
extern int pending_max;
extern int connections_max;
extern int connections_used;
extern int connections_last;
extern int tracking_time;
extern void fd2conn_set(int, int);
extern int fd2conn_get(int);
extern int closing_time(int);
#ifdef HAVE_LIBSSL
int store_conn(int, SSL *, int);
#else
int store_conn(int, int);
#endif
extern int idler(int);
extern void close_conn(int);
extern void expand_conntable(size_t);