Optimize gcc10 compilation error
Set the maximum number of open files per process
This commit is contained in:
parent
9ba3f7dcf1
commit
c7d9d6ab03
@ -2,7 +2,7 @@ global {
|
|||||||
uid=3004;
|
uid=3004;
|
||||||
process=2;
|
process=2;
|
||||||
timeout=60;
|
timeout=60;
|
||||||
sslencoding=128;
|
encode=128;
|
||||||
tcp_listen=0124;
|
tcp_listen=0124;
|
||||||
dns_listen=0125;
|
dns_listen=0125;
|
||||||
}
|
}
|
||||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
CROSS_COMPILE ?=
|
CROSS_COMPILE ?=
|
||||||
CC := $(CROSS_COMPILE)gcc
|
CC := $(CROSS_COMPILE)gcc
|
||||||
STRIP := $(CROSS_COMPILE)strip
|
STRIP := $(CROSS_COMPILE)strip
|
||||||
CFLAGS += -g -O2 -Wall -pthread -fcommon
|
CFLAGS += -g -O2 -Wall -pthread
|
||||||
LIBS =
|
LIBS =
|
||||||
OBJ := CProxy
|
OBJ := CProxy
|
||||||
|
|
||||||
|
2
conf.c
2
conf.c
@ -114,7 +114,7 @@ static void parse_global_module(char *content, conf * p)
|
|||||||
p->process = atoi(val_begin);
|
p->process = atoi(val_begin);
|
||||||
} else if (strcasecmp(var, "timeout") == 0) {
|
} else if (strcasecmp(var, "timeout") == 0) {
|
||||||
p->timeout = atoi(val_begin);
|
p->timeout = atoi(val_begin);
|
||||||
} else if (strcasecmp(var, "sslencoding") == 0) {
|
} else if (strcasecmp(var, "encode") == 0) {
|
||||||
p->sslencoding = atoi(val_begin);
|
p->sslencoding = atoi(val_begin);
|
||||||
} else if (strcasecmp(var, "tcp_listen") == 0) {
|
} else if (strcasecmp(var, "tcp_listen") == 0) {
|
||||||
p->tcp_listen = atoi(val_begin);
|
p->tcp_listen = atoi(val_begin);
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
int sslEncodeCode;
|
int sslEncodeCode;
|
||||||
|
int remote_port;
|
||||||
|
char remote_host[128];
|
||||||
|
|
||||||
/* 对数据进行编码 */
|
/* 对数据进行编码 */
|
||||||
void dataEncode(char *data, int data_len)
|
void dataEncode(char *data, int data_len)
|
||||||
|
@ -7,9 +7,8 @@
|
|||||||
#define HTTP_TYPE 0
|
#define HTTP_TYPE 0
|
||||||
#define OTHER_TYPE 1
|
#define OTHER_TYPE 1
|
||||||
|
|
||||||
int remote_port;
|
extern int remote_port;
|
||||||
char remote_host[128];
|
extern char remote_host[128];
|
||||||
|
|
||||||
extern int sslEncodeCode;
|
extern int sslEncodeCode;
|
||||||
|
|
||||||
typedef struct conn_t {
|
typedef struct conn_t {
|
||||||
|
32
httpdns.c
32
httpdns.c
@ -13,6 +13,8 @@ char *cachePath = NULL;
|
|||||||
struct dns_cache *cache, *cache_temp;
|
struct dns_cache *cache, *cache_temp;
|
||||||
socklen_t addr_len = sizeof(dst_addr);
|
socklen_t addr_len = sizeof(dst_addr);
|
||||||
unsigned int cache_using, cacheLimit;
|
unsigned int cache_using, cacheLimit;
|
||||||
|
dns_t dns_list[DNS_MAX_CONNECTION];
|
||||||
|
struct epoll_event evs[DNS_MAX_CONNECTION+1], event;
|
||||||
|
|
||||||
int read_cache_file()
|
int read_cache_file()
|
||||||
{
|
{
|
||||||
@ -152,9 +154,9 @@ void respond_clients()
|
|||||||
dns_list[i].wait_response_client = 0;
|
dns_list[i].wait_response_client = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ev.events = EPOLLIN;
|
event.events = EPOLLIN;
|
||||||
ev.data.fd = dnsListenFd;
|
event.data.fd = dnsListenFd;
|
||||||
epoll_ctl(dns_efd, EPOLL_CTL_MOD, dnsListenFd, &ev);
|
epoll_ctl(dns_efd, EPOLL_CTL_MOD, dnsListenFd, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 分析DNS请求 */
|
/* 分析DNS请求 */
|
||||||
@ -245,9 +247,9 @@ int build_dns_response(dns_t * dns)
|
|||||||
}
|
}
|
||||||
if (respond_client(dns) == 1) {
|
if (respond_client(dns) == 1) {
|
||||||
dns->wait_response_client = 1;
|
dns->wait_response_client = 1;
|
||||||
ev.events = EPOLLIN | EPOLLOUT;
|
event.events = EPOLLIN | EPOLLOUT;
|
||||||
ev.data.fd = dnsListenFd;
|
event.data.fd = dnsListenFd;
|
||||||
epoll_ctl(dns_efd, EPOLL_CTL_MOD, dnsListenFd, &ev);
|
epoll_ctl(dns_efd, EPOLL_CTL_MOD, dnsListenFd, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -263,9 +265,9 @@ void http_out(dns_t * out)
|
|||||||
if (write_len == out->http_request_len) {
|
if (write_len == out->http_request_len) {
|
||||||
//puts("write success");
|
//puts("write success");
|
||||||
free(out->http_request);
|
free(out->http_request);
|
||||||
ev.events = EPOLLIN | EPOLLET;
|
event.events = EPOLLIN | EPOLLET;
|
||||||
ev.data.ptr = out;
|
event.data.ptr = out;
|
||||||
epoll_ctl(dns_efd, EPOLL_CTL_MOD, out->fd, &ev);
|
epoll_ctl(dns_efd, EPOLL_CTL_MOD, out->fd, &event);
|
||||||
} else if (write_len > 0) {
|
} else if (write_len > 0) {
|
||||||
//puts("write a little");
|
//puts("write a little");
|
||||||
out->http_request_len -= write_len;
|
out->http_request_len -= write_len;
|
||||||
@ -414,9 +416,9 @@ void new_client(conf *configure)
|
|||||||
dns->http_request_len = strlen(dns->http_request);
|
dns->http_request_len = strlen(dns->http_request);
|
||||||
//printf("%s\n", dns->http_request);
|
//printf("%s\n", dns->http_request);
|
||||||
|
|
||||||
ev.events = EPOLLOUT | EPOLLERR | EPOLLET;
|
event.events = EPOLLOUT | EPOLLERR | EPOLLET;
|
||||||
ev.data.ptr = dns;
|
event.data.ptr = dns;
|
||||||
epoll_ctl(dns_efd, EPOLL_CTL_ADD, dns->fd, &ev);
|
epoll_ctl(dns_efd, EPOLL_CTL_ADD, dns->fd, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *httpdns_loop(void *p)
|
void *httpdns_loop(void *p)
|
||||||
@ -430,9 +432,9 @@ void *httpdns_loop(void *p)
|
|||||||
perror("epoll_create");
|
perror("epoll_create");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ev.data.fd = dnsListenFd;
|
event.data.fd = dnsListenFd;
|
||||||
ev.events = EPOLLIN;
|
event.events = EPOLLIN;
|
||||||
epoll_ctl(dns_efd, EPOLL_CTL_ADD, dnsListenFd, &ev);
|
epoll_ctl(dns_efd, EPOLL_CTL_ADD, dnsListenFd, &event);
|
||||||
memset(dns_list, 0, sizeof(dns_list));
|
memset(dns_list, 0, sizeof(dns_list));
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -43,8 +43,8 @@ struct dns_cache {
|
|||||||
struct dns_cache *next;
|
struct dns_cache *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
dns_t dns_list[DNS_MAX_CONNECTION];
|
extern dns_t dns_list[DNS_MAX_CONNECTION];
|
||||||
struct epoll_event evs[DNS_MAX_CONNECTION+1], ev;
|
extern struct epoll_event evs[DNS_MAX_CONNECTION+1], event;
|
||||||
|
|
||||||
|
|
||||||
void *httpdns_loop(void *p);
|
void *httpdns_loop(void *p);
|
||||||
|
11
main.c
11
main.c
@ -14,6 +14,9 @@
|
|||||||
struct epoll_event ev, events[MAX_CONNECTION + 1];
|
struct epoll_event ev, events[MAX_CONNECTION + 1];
|
||||||
int epollfd, server_sock;
|
int epollfd, server_sock;
|
||||||
conn cts[MAX_CONNECTION];
|
conn cts[MAX_CONNECTION];
|
||||||
|
int local_port;
|
||||||
|
char local_host[128];
|
||||||
|
int process;
|
||||||
|
|
||||||
int create_connection(char *remote_host, int remote_port)
|
int create_connection(char *remote_host, int remote_port)
|
||||||
{
|
{
|
||||||
@ -227,6 +230,7 @@ void _main(int argc, char *argv[])
|
|||||||
char executable_filename[PATH_SIZE] = { 0 };
|
char executable_filename[PATH_SIZE] = { 0 };
|
||||||
(void)get_executable_path(path, executable_filename, sizeof(path));
|
(void)get_executable_path(path, executable_filename, sizeof(path));
|
||||||
char *inifile = "/CProxy.conf";
|
char *inifile = "/CProxy.conf";
|
||||||
|
struct rlimit rt;
|
||||||
inifile = strcat(path, inifile);
|
inifile = strcat(path, inifile);
|
||||||
conf *configure = (struct CONF *)malloc(sizeof(struct CONF));
|
conf *configure = (struct CONF *)malloc(sizeof(struct CONF));
|
||||||
memset(configure, 0, sizeof(struct CONF));
|
memset(configure, 0, sizeof(struct CONF));
|
||||||
@ -314,6 +318,12 @@ void _main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置每个进程允许打开的最大文件数
|
||||||
|
rt.rlim_max = rt.rlim_cur = MAX_CONNECTION * 2;
|
||||||
|
if (setrlimit(RLIMIT_NOFILE, &rt) == -1) {
|
||||||
|
perror("setrlimit");
|
||||||
|
}
|
||||||
|
|
||||||
server_ini(); // 守护进程
|
server_ini(); // 守护进程
|
||||||
httpdns_initialize(configure); // 初始化http_dns
|
httpdns_initialize(configure); // 初始化http_dns
|
||||||
memset(cts, 0, sizeof(cts));
|
memset(cts, 0, sizeof(cts));
|
||||||
@ -378,4 +388,5 @@ void _main(int argc, char *argv[])
|
|||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
_main(argc, argv);
|
_main(argc, argv);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
8
main.h
8
main.h
@ -19,15 +19,17 @@
|
|||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
#define MAX_CONNECTION 1020
|
#define MAX_CONNECTION 1020
|
||||||
#define BUFFER_SIZE 8192
|
#define BUFFER_SIZE 8192
|
||||||
#define PATH_SIZE 270
|
#define PATH_SIZE 270
|
||||||
#define CACHE_SIZE 270
|
#define CACHE_SIZE 270
|
||||||
|
|
||||||
int local_port;
|
extern int local_port;
|
||||||
char local_host[128];
|
extern char local_host[128];
|
||||||
int process;
|
extern int process;
|
||||||
|
|
||||||
extern int epollfd;
|
extern int epollfd;
|
||||||
extern struct epoll_event ev, events[MAX_CONNECTION + 1];
|
extern struct epoll_event ev, events[MAX_CONNECTION + 1];
|
||||||
|
Loading…
Reference in New Issue
Block a user