Browse Source

add fast open option in server

pull/69/head
clowwindy 10 years ago
parent
commit
e83c0b5698
2 changed files with 27 additions and 4 deletions
  1. 2
      src/local.c
  2. 29
      src/server.c

2
src/local.c

@ -48,8 +48,8 @@
#endif #endif
int verbose = 0; int verbose = 0;
int fast_open = 0;
int udprelay = 0; int udprelay = 0;
static int fast_open = 0;
static struct addrinfo *remote_res = NULL; static struct addrinfo *remote_res = NULL;
#ifndef __MINGW32__ #ifndef __MINGW32__

29
src/server.c

@ -13,6 +13,7 @@
#include <strings.h> #include <strings.h>
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include <getopt.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
@ -41,6 +42,7 @@
int verbose = 0; int verbose = 0;
int udprelay = 0; int udprelay = 0;
static int fast_open = 0;
static int remote_conn = 0; static int remote_conn = 0;
static int server_conn = 0; static int server_conn = 0;
@ -93,8 +95,11 @@ int create_and_bind(const char *host, const char *port)
setsockopt(listen_sock, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); setsockopt(listen_sock, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt));
#endif #endif
#ifdef TCP_FASTOPEN #ifdef TCP_FASTOPEN
opt = 5;
setsockopt(listen_sock, SOL_TCP, TCP_FASTOPEN, &opt, sizeof(opt));
if (fast_open)
{
opt = 5;
int r = setsockopt(listen_sock, SOL_TCP, TCP_FASTOPEN, &opt, sizeof(opt));
}
#endif #endif
s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen); s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen);
@ -919,12 +924,30 @@ int main (int argc, char **argv)
int dns_thread_num = DNS_THREAD_NUM; int dns_thread_num = DNS_THREAD_NUM;
int option_index = 0;
static struct option long_options[] = {
{"fast-open", no_argument, 0, 0 },
{0, 0, 0, 0 }
};
opterr = 0; opterr = 0;
while ((c = getopt (argc, argv, "f:s:p:l:k:t:m:c:i:d:a:uv")) != -1)
while ((c = getopt_long(argc, argv, "f:s:p:l:k:t:m:c:i:d:a:uv",
long_options, &option_index)) != -1)
{ {
switch (c) switch (c)
{ {
case 0:
if (option_index == 0)
{
#ifdef TCP_FASTOPEN
fast_open = 1;
LOGD("using tcp fast open");
#else
LOGE("tcp fast open is not supported by this environment");
#endif
}
break;
case 's': case 's':
server_host[server_num++] = optarg; server_host[server_num++] = optarg;
break; break;

Loading…
Cancel
Save