-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjcc.h
145 lines (116 loc) · 4.11 KB
/
jcc.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#ifndef JCC_H_INCLUDED
#define JCC_H_INCLUDED
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/jcc.h,v $
*
* Purpose : Main file. Contains main() method, main loop, and
* the main connection-handling function.
*
* Copyright : Written by and Copyright (C) 2001-2014 the
* Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General
* Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* The GNU General Public License should be included with
* this file. If not, you can view it at
* http://www.gnu.org/copyleft/gpl.html
* or write to the Free Software Foundation, Inc., 59
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*********************************************************************/
struct client_state;
struct file_list;
/* Global variables */
#ifdef FEATURE_STATISTICS
#if defined(FEATURE_PTHREAD) || defined(_WIN32)
extern unsigned long long number_of_requests_received;
extern unsigned long long number_of_requests_blocked;
#else
extern int urls_read;
extern int urls_rejected;
#endif
#endif /*def FEATURE_STATISTICS*/
extern struct client_states clients[1];
extern struct file_list files[1];
#ifdef unix
extern const char *pidfile;
#endif
extern int daemon_mode;
#ifdef FEATURE_GRACEFUL_TERMINATION
extern int g_terminate;
#endif
#if defined(FEATURE_PTHREAD) || defined(_WIN32)
#define MUTEX_LOCKS_AVAILABLE
#ifdef FEATURE_PTHREAD
#include <pthread.h>
typedef pthread_mutex_t privoxy_mutex_t;
#else
typedef CRITICAL_SECTION privoxy_mutex_t;
#endif
extern void privoxy_mutex_lock(privoxy_mutex_t *mutex);
extern void privoxy_mutex_unlock(privoxy_mutex_t *mutex);
extern privoxy_mutex_t log_mutex;
extern privoxy_mutex_t log_init_mutex;
extern privoxy_mutex_t connection_reuse_mutex;
#ifdef FEATURE_EXTERNAL_FILTERS
extern privoxy_mutex_t external_filter_mutex;
#endif
#ifdef FEATURE_CLIENT_TAGS
extern privoxy_mutex_t client_tags_mutex;
#endif
#ifdef FEATURE_STATISTICS
extern privoxy_mutex_t block_statistics_mutex;
#endif
#ifdef FEATURE_EXTENDED_STATISTICS
extern privoxy_mutex_t filter_statistics_mutex;
extern privoxy_mutex_t block_reason_statistics_mutex;
#endif
#ifndef HAVE_GMTIME_R
extern privoxy_mutex_t gmtime_mutex;
#endif /* ndef HAVE_GMTIME_R */
#ifndef HAVE_LOCALTIME_R
extern privoxy_mutex_t localtime_mutex;
#endif /* ndef HAVE_GMTIME_R */
#if !defined(HAVE_GETHOSTBYADDR_R) || !defined(HAVE_GETHOSTBYNAME_R)
extern privoxy_mutex_t resolver_mutex;
#endif /* !defined(HAVE_GETHOSTBYADDR_R) || !defined(HAVE_GETHOSTBYNAME_R) */
#ifndef HAVE_RANDOM
extern privoxy_mutex_t rand_mutex;
#endif /* ndef HAVE_RANDOM */
#ifdef FEATURE_HTTPS_INSPECTION
extern privoxy_mutex_t certificate_mutex;
extern privoxy_mutex_t ssl_init_mutex;
#endif
#endif /* FEATURE_PTHREAD */
/* Functions */
#ifdef __MINGW32__
int real_main(int argc, char **argv);
#else
int main(int argc, char **argv);
#endif
#ifdef FUZZ
extern int fuzz_client_request(struct client_state *csp, char *fuzz_input_file);
extern int fuzz_server_response(struct client_state *csp, char *fuzz_input_file);
extern int fuzz_chunked_transfer_encoding(struct client_state *csp, char *fuzz_input_file);
#endif
#endif /* ndef JCC_H_INCLUDED */
/*
Local Variables:
tab-width: 3
end:
*/