Hello community, here is the log from the commit of package shadowsocks-libev for openSUSE:Factory checked in at 2018-01-22 16:18:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/shadowsocks-libev (Old) and /work/SRC/openSUSE:Factory/.shadowsocks-libev.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "shadowsocks-libev" Mon Jan 22 16:18:49 2018 rev:4 rq:567907 version:3.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/shadowsocks-libev/shadowsocks-libev.changes 2018-01-02 16:34:51.391100127 +0100 +++ /work/SRC/openSUSE:Factory/.shadowsocks-libev.new/shadowsocks-libev.changes 2018-01-22 16:20:44.167710399 +0100 @@ -1,0 +2,6 @@ +Sat Jan 20 14:02:33 UTC 2018 - [email protected] + +- Update version to 3.1.3 + * Fix a bug in UDP relay. + +------------------------------------------------------------------- Old: ---- shadowsocks-libev-3.1.2.tar.gz New: ---- shadowsocks-libev-3.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ shadowsocks-libev.spec ++++++ --- /var/tmp/diff_new_pack.T6xHXM/_old 2018-01-22 16:20:44.827679531 +0100 +++ /var/tmp/diff_new_pack.T6xHXM/_new 2018-01-22 16:20:44.831679343 +0100 @@ -1,7 +1,7 @@ # # spec file for package shadowsocks-libev # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,8 +17,9 @@ %define libver 2 + Name: shadowsocks-libev -Version: 3.1.2 +Version: 3.1.3 Release: 0 Summary: Libev port of Shadowsocks License: GPL-3.0+ ++++++ shadowsocks-libev-3.1.2.tar.gz -> shadowsocks-libev-3.1.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/Changes new/shadowsocks-libev-3.1.3/Changes --- old/shadowsocks-libev-3.1.2/Changes 2017-12-29 06:05:18.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/Changes 2018-01-16 02:20:51.000000000 +0100 @@ -1,3 +1,9 @@ +shadowsocks-libev (3.1.3-1) unstable; urgency=medium + + * Fix a bug in UDP relay. + + -- Max Lv <[email protected]> Mon, 15 Jan 2018 17:19:31 -0800 + shadowsocks-libev (3.1.2-1) unstable; urgency=medium * Fix a bug in DNS resolver. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/README.md new/shadowsocks-libev-3.1.3/README.md --- old/shadowsocks-libev-3.1.2/README.md 2017-12-29 06:04:28.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/README.md 2018-01-16 02:17:56.000000000 +0100 @@ -9,7 +9,7 @@ created by [@clowwindy](https://github.com/clowwindy), and maintained by [@madeye](https://github.com/madeye) and [@linusyang](https://github.com/linusyang). -Current version: 3.1.2 | [Changelog](debian/changelog) +Current version: 3.1.3 | [Changelog](debian/changelog) Travis CI: [](https://travis-ci.org/shadowsocks/shadowsocks-libev) @@ -491,7 +491,7 @@ ``` Copyright: 2013-2015, Clow Windy <[email protected]> - 2013-2017, Max Lv <[email protected]> + 2013-2018, Max Lv <[email protected]> 2014, Linus Yang <[email protected]> This program is free software: you can redistribute it and/or modify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/configure new/shadowsocks-libev-3.1.3/configure --- old/shadowsocks-libev-3.1.2/configure 2017-12-29 06:04:10.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/configure 2018-01-16 02:21:31.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for shadowsocks-libev 3.1.2. +# Generated by GNU Autoconf 2.69 for shadowsocks-libev 3.1.3. # # Report bugs to <[email protected]>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='shadowsocks-libev' PACKAGE_TARNAME='shadowsocks-libev' -PACKAGE_VERSION='3.1.2' -PACKAGE_STRING='shadowsocks-libev 3.1.2' +PACKAGE_VERSION='3.1.3' +PACKAGE_STRING='shadowsocks-libev 3.1.3' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1365,7 +1365,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures shadowsocks-libev 3.1.2 to adapt to many kinds of systems. +\`configure' configures shadowsocks-libev 3.1.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1437,7 +1437,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of shadowsocks-libev 3.1.2:";; + short | recursive ) echo "Configuration of shadowsocks-libev 3.1.3:";; esac cat <<\_ACEOF @@ -1572,7 +1572,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -shadowsocks-libev configure 3.1.2 +shadowsocks-libev configure 3.1.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2095,7 +2095,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by shadowsocks-libev $as_me 3.1.2, which was +It was created by shadowsocks-libev $as_me 3.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4334,7 +4334,7 @@ # Define the identity of the package. PACKAGE='shadowsocks-libev' - VERSION='3.1.2' + VERSION='3.1.3' cat >>confdefs.h <<_ACEOF @@ -16957,7 +16957,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by shadowsocks-libev $as_me 3.1.2, which was +This file was extended by shadowsocks-libev $as_me 3.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17023,7 +17023,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -shadowsocks-libev config.status 3.1.2 +shadowsocks-libev config.status 3.1.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/configure.ac new/shadowsocks-libev-3.1.3/configure.ac --- old/shadowsocks-libev-3.1.2/configure.ac 2017-12-29 05:54:37.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/configure.ac 2018-01-16 02:17:13.000000000 +0100 @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.67]) -AC_INIT([shadowsocks-libev], [3.1.2], [[email protected]]) +AC_INIT([shadowsocks-libev], [3.1.3], [[email protected]]) AC_CONFIG_SRCDIR([src/crypto.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR(auto) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/debian/changelog new/shadowsocks-libev-3.1.3/debian/changelog --- old/shadowsocks-libev-3.1.2/debian/changelog 2017-12-29 06:03:08.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/debian/changelog 2018-01-16 02:20:29.000000000 +0100 @@ -1,3 +1,9 @@ +shadowsocks-libev (3.1.3-1) unstable; urgency=medium + + * Fix a bug in UDP relay. + + -- Max Lv <[email protected]> Mon, 15 Jan 2018 17:19:31 -0800 + shadowsocks-libev (3.1.2-1) unstable; urgency=medium * Fix a bug in DNS resolver. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/docker/alpine/Dockerfile new/shadowsocks-libev-3.1.3/docker/alpine/Dockerfile --- old/shadowsocks-libev-3.1.2/docker/alpine/Dockerfile 2017-12-29 06:01:52.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/docker/alpine/Dockerfile 2018-01-16 02:20:47.000000000 +0100 @@ -5,7 +5,7 @@ FROM alpine MAINTAINER kev <[email protected]> -ARG SS_VER=3.1.2 +ARG SS_VER=3.1.3 ARG SS_URL=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$SS_VER/shadowsocks-libev-$SS_VER.tar.gz ENV SERVER_ADDR 0.0.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/libbloom/Makefile new/shadowsocks-libev-3.1.3/libbloom/Makefile --- old/shadowsocks-libev-3.1.2/libbloom/Makefile 2017-12-29 06:04:42.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/libbloom/Makefile 2018-01-16 02:21:41.000000000 +0100 @@ -239,10 +239,10 @@ PACKAGE = shadowsocks-libev PACKAGE_BUGREPORT = [email protected] PACKAGE_NAME = shadowsocks-libev -PACKAGE_STRING = shadowsocks-libev 3.1.2 +PACKAGE_STRING = shadowsocks-libev 3.1.3 PACKAGE_TARNAME = shadowsocks-libev PACKAGE_URL = -PACKAGE_VERSION = 3.1.2 +PACKAGE_VERSION = 3.1.3 PATH_SEPARATOR = : PCRE_CONFIG = pcre-config PTHREAD_CC = gcc @@ -253,7 +253,7 @@ SET_MAKE = SHELL = /bin/bash STRIP = strip -VERSION = 3.1.2 +VERSION = 3.1.3 XMLTO = /usr/bin/xmlto abs_builddir = /home/max/Develop/workspace/shadowsocks-libev/libbloom abs_srcdir = /home/max/Develop/workspace/shadowsocks-libev/libbloom diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/Makefile.am new/shadowsocks-libev-3.1.3/src/Makefile.am --- old/shadowsocks-libev-3.1.2/src/Makefile.am 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/Makefile.am 2018-01-16 02:18:57.000000000 +0100 @@ -22,8 +22,10 @@ bin_PROGRAMS = ss-local ss-tunnel ss-server ss-manager sni_src = http.c \ - tls.c \ - rule.c + tls.c + +acl_src = rule.c \ + acl.c crypto_src = crypto.c \ aead.c \ @@ -38,12 +40,12 @@ json.c \ udprelay.c \ cache.c \ - acl.c \ netutils.c \ local.c \ $(crypto_src) \ $(plugin_src) \ - $(sni_src) + $(sni_src) \ + $(acl_src) ss_tunnel_SOURCES = utils.c \ jconf.c \ @@ -61,12 +63,12 @@ json.c \ udprelay.c \ cache.c \ - acl.c \ resolv.c \ server.c \ $(crypto_src) \ $(plugin_src) \ - $(sni_src) + $(sni_src) \ + ${acl_src} ss_manager_SOURCES = utils.c \ jconf.c \ @@ -99,8 +101,7 @@ udprelay.c \ redir.c \ $(crypto_src) \ - $(plugin_src) \ - $(sni_src) + $(plugin_src) ss_redir_CFLAGS = $(AM_CFLAGS) -DMODULE_REDIR ss_redir_LDADD = $(SS_COMMON_LIBS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/Makefile.in new/shadowsocks-libev-3.1.3/src/Makefile.in --- old/shadowsocks-libev-3.1.2/src/Makefile.in 2017-12-29 06:04:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/Makefile.in 2018-01-16 02:21:32.000000000 +0100 @@ -162,17 +162,18 @@ libshadowsocks_libev_la-base64.lo am__objects_2 = libshadowsocks_libev_la-plugin.lo am__objects_3 = libshadowsocks_libev_la-http.lo \ - libshadowsocks_libev_la-tls.lo libshadowsocks_libev_la-rule.lo -am__objects_4 = libshadowsocks_libev_la-utils.lo \ + libshadowsocks_libev_la-tls.lo +am__objects_4 = libshadowsocks_libev_la-rule.lo \ + libshadowsocks_libev_la-acl.lo +am__objects_5 = libshadowsocks_libev_la-utils.lo \ libshadowsocks_libev_la-jconf.lo \ libshadowsocks_libev_la-json.lo \ libshadowsocks_libev_la-udprelay.lo \ libshadowsocks_libev_la-cache.lo \ - libshadowsocks_libev_la-acl.lo \ libshadowsocks_libev_la-netutils.lo \ libshadowsocks_libev_la-local.lo $(am__objects_1) \ - $(am__objects_2) $(am__objects_3) -am_libshadowsocks_libev_la_OBJECTS = $(am__objects_4) + $(am__objects_2) $(am__objects_3) $(am__objects_4) +am_libshadowsocks_libev_la_OBJECTS = $(am__objects_5) libshadowsocks_libev_la_OBJECTS = \ $(am_libshadowsocks_libev_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) @@ -185,18 +186,18 @@ $(libshadowsocks_libev_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_REDIRECTOR_TRUE@am__EXEEXT_1 = ss-redir$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) -am__objects_5 = ss_local-crypto.$(OBJEXT) ss_local-aead.$(OBJEXT) \ +am__objects_6 = ss_local-crypto.$(OBJEXT) ss_local-aead.$(OBJEXT) \ ss_local-stream.$(OBJEXT) ss_local-ppbloom.$(OBJEXT) \ ss_local-base64.$(OBJEXT) -am__objects_6 = ss_local-plugin.$(OBJEXT) -am__objects_7 = ss_local-http.$(OBJEXT) ss_local-tls.$(OBJEXT) \ - ss_local-rule.$(OBJEXT) +am__objects_7 = ss_local-plugin.$(OBJEXT) +am__objects_8 = ss_local-http.$(OBJEXT) ss_local-tls.$(OBJEXT) +am__objects_9 = ss_local-rule.$(OBJEXT) ss_local-acl.$(OBJEXT) am_ss_local_OBJECTS = ss_local-utils.$(OBJEXT) \ ss_local-jconf.$(OBJEXT) ss_local-json.$(OBJEXT) \ ss_local-udprelay.$(OBJEXT) ss_local-cache.$(OBJEXT) \ - ss_local-acl.$(OBJEXT) ss_local-netutils.$(OBJEXT) \ - ss_local-local.$(OBJEXT) $(am__objects_5) $(am__objects_6) \ - $(am__objects_7) + ss_local-netutils.$(OBJEXT) ss_local-local.$(OBJEXT) \ + $(am__objects_6) $(am__objects_7) $(am__objects_8) \ + $(am__objects_9) ss_local_OBJECTS = $(am_ss_local_OBJECTS) ss_local_DEPENDENCIES = $(am__DEPENDENCIES_2) ss_local_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @@ -212,13 +213,11 @@ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__ss_redir_SOURCES_DIST = utils.c jconf.c json.c netutils.c cache.c \ udprelay.c redir.c crypto.c aead.c stream.c ppbloom.c base64.c \ - plugin.c http.c tls.c rule.c -am__objects_8 = ss_redir-crypto.$(OBJEXT) ss_redir-aead.$(OBJEXT) \ + plugin.c +am__objects_10 = ss_redir-crypto.$(OBJEXT) ss_redir-aead.$(OBJEXT) \ ss_redir-stream.$(OBJEXT) ss_redir-ppbloom.$(OBJEXT) \ ss_redir-base64.$(OBJEXT) -am__objects_9 = ss_redir-plugin.$(OBJEXT) -am__objects_10 = ss_redir-http.$(OBJEXT) ss_redir-tls.$(OBJEXT) \ - ss_redir-rule.$(OBJEXT) +am__objects_11 = ss_redir-plugin.$(OBJEXT) @BUILD_REDIRECTOR_TRUE@am_ss_redir_OBJECTS = ss_redir-utils.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ ss_redir-jconf.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ ss_redir-json.$(OBJEXT) \ @@ -226,39 +225,38 @@ @BUILD_REDIRECTOR_TRUE@ ss_redir-cache.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ ss_redir-udprelay.$(OBJEXT) \ @BUILD_REDIRECTOR_TRUE@ ss_redir-redir.$(OBJEXT) \ -@BUILD_REDIRECTOR_TRUE@ $(am__objects_8) $(am__objects_9) \ -@BUILD_REDIRECTOR_TRUE@ $(am__objects_10) +@BUILD_REDIRECTOR_TRUE@ $(am__objects_10) $(am__objects_11) ss_redir_OBJECTS = $(am_ss_redir_OBJECTS) @BUILD_REDIRECTOR_TRUE@ss_redir_DEPENDENCIES = $(am__DEPENDENCIES_2) ss_redir_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ss_redir_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__objects_11 = ss_server-crypto.$(OBJEXT) ss_server-aead.$(OBJEXT) \ +am__objects_12 = ss_server-crypto.$(OBJEXT) ss_server-aead.$(OBJEXT) \ ss_server-stream.$(OBJEXT) ss_server-ppbloom.$(OBJEXT) \ ss_server-base64.$(OBJEXT) -am__objects_12 = ss_server-plugin.$(OBJEXT) -am__objects_13 = ss_server-http.$(OBJEXT) ss_server-tls.$(OBJEXT) \ - ss_server-rule.$(OBJEXT) +am__objects_13 = ss_server-plugin.$(OBJEXT) +am__objects_14 = ss_server-http.$(OBJEXT) ss_server-tls.$(OBJEXT) +am__objects_15 = ss_server-rule.$(OBJEXT) ss_server-acl.$(OBJEXT) am_ss_server_OBJECTS = ss_server-utils.$(OBJEXT) \ ss_server-netutils.$(OBJEXT) ss_server-jconf.$(OBJEXT) \ ss_server-json.$(OBJEXT) ss_server-udprelay.$(OBJEXT) \ - ss_server-cache.$(OBJEXT) ss_server-acl.$(OBJEXT) \ - ss_server-resolv.$(OBJEXT) ss_server-server.$(OBJEXT) \ - $(am__objects_11) $(am__objects_12) $(am__objects_13) + ss_server-cache.$(OBJEXT) ss_server-resolv.$(OBJEXT) \ + ss_server-server.$(OBJEXT) $(am__objects_12) $(am__objects_13) \ + $(am__objects_14) $(am__objects_15) ss_server_OBJECTS = $(am_ss_server_OBJECTS) ss_server_DEPENDENCIES = $(am__DEPENDENCIES_2) ss_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ss_server_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__objects_14 = ss_tunnel-crypto.$(OBJEXT) ss_tunnel-aead.$(OBJEXT) \ +am__objects_16 = ss_tunnel-crypto.$(OBJEXT) ss_tunnel-aead.$(OBJEXT) \ ss_tunnel-stream.$(OBJEXT) ss_tunnel-ppbloom.$(OBJEXT) \ ss_tunnel-base64.$(OBJEXT) -am__objects_15 = ss_tunnel-plugin.$(OBJEXT) +am__objects_17 = ss_tunnel-plugin.$(OBJEXT) am_ss_tunnel_OBJECTS = ss_tunnel-utils.$(OBJEXT) \ ss_tunnel-jconf.$(OBJEXT) ss_tunnel-json.$(OBJEXT) \ ss_tunnel-udprelay.$(OBJEXT) ss_tunnel-cache.$(OBJEXT) \ ss_tunnel-netutils.$(OBJEXT) ss_tunnel-tunnel.$(OBJEXT) \ - $(am__objects_14) $(am__objects_15) + $(am__objects_16) $(am__objects_17) ss_tunnel_OBJECTS = $(am_ss_tunnel_OBJECTS) ss_tunnel_DEPENDENCIES = $(am__DEPENDENCIES_2) ss_tunnel_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @@ -469,8 +467,10 @@ SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS) $(am__append_2) \ $(am__append_3) -lev -lsodium -lm sni_src = http.c \ - tls.c \ - rule.c + tls.c + +acl_src = rule.c \ + acl.c crypto_src = crypto.c \ aead.c \ @@ -484,12 +484,12 @@ json.c \ udprelay.c \ cache.c \ - acl.c \ netutils.c \ local.c \ $(crypto_src) \ $(plugin_src) \ - $(sni_src) + $(sni_src) \ + $(acl_src) ss_tunnel_SOURCES = utils.c \ jconf.c \ @@ -507,12 +507,12 @@ json.c \ udprelay.c \ cache.c \ - acl.c \ resolv.c \ server.c \ $(crypto_src) \ $(plugin_src) \ - $(sni_src) + $(sni_src) \ + ${acl_src} ss_manager_SOURCES = utils.c \ jconf.c \ @@ -537,8 +537,7 @@ @BUILD_REDIRECTOR_TRUE@ udprelay.c \ @BUILD_REDIRECTOR_TRUE@ redir.c \ @BUILD_REDIRECTOR_TRUE@ $(crypto_src) \ -@BUILD_REDIRECTOR_TRUE@ $(plugin_src) \ -@BUILD_REDIRECTOR_TRUE@ $(sni_src) +@BUILD_REDIRECTOR_TRUE@ $(plugin_src) @BUILD_REDIRECTOR_TRUE@ss_redir_CFLAGS = $(AM_CFLAGS) -DMODULE_REDIR @BUILD_REDIRECTOR_TRUE@ss_redir_LDADD = $(SS_COMMON_LIBS) -lcares @@ -778,16 +777,13 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-base64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-cache.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-crypto.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-http.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-jconf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-json.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-netutils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-plugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-ppbloom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-redir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-rule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-stream.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-tls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-udprelay.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_redir-utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_server-acl.Po@am__quote@ @@ -881,13 +877,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -c -o libshadowsocks_libev_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c -libshadowsocks_libev_la-acl.lo: acl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -MT libshadowsocks_libev_la-acl.lo -MD -MP -MF $(DEPDIR)/libshadowsocks_libev_la-acl.Tpo -c -o libshadowsocks_libev_la-acl.lo `test -f 'acl.c' || echo '$(srcdir)/'`acl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadowsocks_libev_la-acl.Tpo $(DEPDIR)/libshadowsocks_libev_la-acl.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='libshadowsocks_libev_la-acl.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -c -o libshadowsocks_libev_la-acl.lo `test -f 'acl.c' || echo '$(srcdir)/'`acl.c - libshadowsocks_libev_la-netutils.lo: netutils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -MT libshadowsocks_libev_la-netutils.lo -MD -MP -MF $(DEPDIR)/libshadowsocks_libev_la-netutils.Tpo -c -o libshadowsocks_libev_la-netutils.lo `test -f 'netutils.c' || echo '$(srcdir)/'`netutils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadowsocks_libev_la-netutils.Tpo $(DEPDIR)/libshadowsocks_libev_la-netutils.Plo @@ -965,6 +954,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -c -o libshadowsocks_libev_la-rule.lo `test -f 'rule.c' || echo '$(srcdir)/'`rule.c +libshadowsocks_libev_la-acl.lo: acl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -MT libshadowsocks_libev_la-acl.lo -MD -MP -MF $(DEPDIR)/libshadowsocks_libev_la-acl.Tpo -c -o libshadowsocks_libev_la-acl.lo `test -f 'acl.c' || echo '$(srcdir)/'`acl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadowsocks_libev_la-acl.Tpo $(DEPDIR)/libshadowsocks_libev_la-acl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='libshadowsocks_libev_la-acl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libshadowsocks_libev_la_CFLAGS) $(CFLAGS) -c -o libshadowsocks_libev_la-acl.lo `test -f 'acl.c' || echo '$(srcdir)/'`acl.c + ss_local-utils.o: utils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-utils.o -MD -MP -MF $(DEPDIR)/ss_local-utils.Tpo -c -o ss_local-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-utils.Tpo $(DEPDIR)/ss_local-utils.Po @@ -1035,20 +1031,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` -ss_local-acl.o: acl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-acl.o -MD -MP -MF $(DEPDIR)/ss_local-acl.Tpo -c -o ss_local-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-acl.Tpo $(DEPDIR)/ss_local-acl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_local-acl.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c - -ss_local-acl.obj: acl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-acl.obj -MD -MP -MF $(DEPDIR)/ss_local-acl.Tpo -c -o ss_local-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-acl.Tpo $(DEPDIR)/ss_local-acl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_local-acl.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` - ss_local-netutils.o: netutils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-netutils.o -MD -MP -MF $(DEPDIR)/ss_local-netutils.Tpo -c -o ss_local-netutils.o `test -f 'netutils.c' || echo '$(srcdir)/'`netutils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-netutils.Tpo $(DEPDIR)/ss_local-netutils.Po @@ -1203,6 +1185,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-rule.obj `if test -f 'rule.c'; then $(CYGPATH_W) 'rule.c'; else $(CYGPATH_W) '$(srcdir)/rule.c'; fi` +ss_local-acl.o: acl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-acl.o -MD -MP -MF $(DEPDIR)/ss_local-acl.Tpo -c -o ss_local-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-acl.Tpo $(DEPDIR)/ss_local-acl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_local-acl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c + +ss_local-acl.obj: acl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -MT ss_local-acl.obj -MD -MP -MF $(DEPDIR)/ss_local-acl.Tpo -c -o ss_local-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_local-acl.Tpo $(DEPDIR)/ss_local-acl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_local-acl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_local_CFLAGS) $(CFLAGS) -c -o ss_local-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` + ss_manager-utils.o: utils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_manager_CFLAGS) $(CFLAGS) -MT ss_manager-utils.o -MD -MP -MF $(DEPDIR)/ss_manager-utils.Tpo -c -o ss_manager-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_manager-utils.Tpo $(DEPDIR)/ss_manager-utils.Po @@ -1455,48 +1451,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-plugin.obj `if test -f 'plugin.c'; then $(CYGPATH_W) 'plugin.c'; else $(CYGPATH_W) '$(srcdir)/plugin.c'; fi` -ss_redir-http.o: http.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-http.o -MD -MP -MF $(DEPDIR)/ss_redir-http.Tpo -c -o ss_redir-http.o `test -f 'http.c' || echo '$(srcdir)/'`http.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-http.Tpo $(DEPDIR)/ss_redir-http.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='http.c' object='ss_redir-http.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-http.o `test -f 'http.c' || echo '$(srcdir)/'`http.c - -ss_redir-http.obj: http.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-http.obj -MD -MP -MF $(DEPDIR)/ss_redir-http.Tpo -c -o ss_redir-http.obj `if test -f 'http.c'; then $(CYGPATH_W) 'http.c'; else $(CYGPATH_W) '$(srcdir)/http.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-http.Tpo $(DEPDIR)/ss_redir-http.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='http.c' object='ss_redir-http.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-http.obj `if test -f 'http.c'; then $(CYGPATH_W) 'http.c'; else $(CYGPATH_W) '$(srcdir)/http.c'; fi` - -ss_redir-tls.o: tls.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-tls.o -MD -MP -MF $(DEPDIR)/ss_redir-tls.Tpo -c -o ss_redir-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-tls.Tpo $(DEPDIR)/ss_redir-tls.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='ss_redir-tls.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c - -ss_redir-tls.obj: tls.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-tls.obj -MD -MP -MF $(DEPDIR)/ss_redir-tls.Tpo -c -o ss_redir-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-tls.Tpo $(DEPDIR)/ss_redir-tls.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='ss_redir-tls.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` - -ss_redir-rule.o: rule.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-rule.o -MD -MP -MF $(DEPDIR)/ss_redir-rule.Tpo -c -o ss_redir-rule.o `test -f 'rule.c' || echo '$(srcdir)/'`rule.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-rule.Tpo $(DEPDIR)/ss_redir-rule.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rule.c' object='ss_redir-rule.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-rule.o `test -f 'rule.c' || echo '$(srcdir)/'`rule.c - -ss_redir-rule.obj: rule.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -MT ss_redir-rule.obj -MD -MP -MF $(DEPDIR)/ss_redir-rule.Tpo -c -o ss_redir-rule.obj `if test -f 'rule.c'; then $(CYGPATH_W) 'rule.c'; else $(CYGPATH_W) '$(srcdir)/rule.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_redir-rule.Tpo $(DEPDIR)/ss_redir-rule.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rule.c' object='ss_redir-rule.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_redir_CFLAGS) $(CFLAGS) -c -o ss_redir-rule.obj `if test -f 'rule.c'; then $(CYGPATH_W) 'rule.c'; else $(CYGPATH_W) '$(srcdir)/rule.c'; fi` - ss_server-utils.o: utils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-utils.o -MD -MP -MF $(DEPDIR)/ss_server-utils.Tpo -c -o ss_server-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-utils.Tpo $(DEPDIR)/ss_server-utils.Po @@ -1581,20 +1535,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi` -ss_server-acl.o: acl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-acl.o -MD -MP -MF $(DEPDIR)/ss_server-acl.Tpo -c -o ss_server-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-acl.Tpo $(DEPDIR)/ss_server-acl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_server-acl.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c - -ss_server-acl.obj: acl.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-acl.obj -MD -MP -MF $(DEPDIR)/ss_server-acl.Tpo -c -o ss_server-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-acl.Tpo $(DEPDIR)/ss_server-acl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_server-acl.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` - ss_server-resolv.o: resolv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-resolv.o -MD -MP -MF $(DEPDIR)/ss_server-resolv.Tpo -c -o ss_server-resolv.o `test -f 'resolv.c' || echo '$(srcdir)/'`resolv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-resolv.Tpo $(DEPDIR)/ss_server-resolv.Po @@ -1749,6 +1689,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-rule.obj `if test -f 'rule.c'; then $(CYGPATH_W) 'rule.c'; else $(CYGPATH_W) '$(srcdir)/rule.c'; fi` +ss_server-acl.o: acl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-acl.o -MD -MP -MF $(DEPDIR)/ss_server-acl.Tpo -c -o ss_server-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-acl.Tpo $(DEPDIR)/ss_server-acl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_server-acl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-acl.o `test -f 'acl.c' || echo '$(srcdir)/'`acl.c + +ss_server-acl.obj: acl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -MT ss_server-acl.obj -MD -MP -MF $(DEPDIR)/ss_server-acl.Tpo -c -o ss_server-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_server-acl.Tpo $(DEPDIR)/ss_server-acl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='acl.c' object='ss_server-acl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_server_CFLAGS) $(CFLAGS) -c -o ss_server-acl.obj `if test -f 'acl.c'; then $(CYGPATH_W) 'acl.c'; else $(CYGPATH_W) '$(srcdir)/acl.c'; fi` + ss_tunnel-utils.o: utils.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ss_tunnel_CFLAGS) $(CFLAGS) -MT ss_tunnel-utils.o -MD -MP -MF $(DEPDIR)/ss_tunnel-utils.Tpo -c -o ss_tunnel-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ss_tunnel-utils.Tpo $(DEPDIR)/ss_tunnel-utils.Po diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/acl.c new/shadowsocks-libev-3.1.3/src/acl.c --- old/shadowsocks-libev-3.1.2/src/acl.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/acl.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * acl.c - Manage the ACL (Access Control List) * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/acl.h new/shadowsocks-libev-3.1.3/src/acl.h --- old/shadowsocks-libev-3.1.2/src/acl.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/acl.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * acl.h - Define the ACL interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/aead.c new/shadowsocks-libev-3.1.3/src/aead.c --- old/shadowsocks-libev-3.1.2/src/aead.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/aead.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * aead.c - Manage AEAD ciphers * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/aead.h new/shadowsocks-libev-3.1.3/src/aead.h --- old/shadowsocks-libev-3.1.2/src/aead.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/aead.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * aead.h - Define the AEAD interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/cache.c new/shadowsocks-libev-3.1.3/src/cache.c --- old/shadowsocks-libev-3.1.2/src/cache.c 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/cache.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * cache.c - Manage the connection cache for UDPRELAY * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/cache.h new/shadowsocks-libev-3.1.3/src/cache.h --- old/shadowsocks-libev-3.1.2/src/cache.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/cache.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * cache.h - Define the cache manager interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/common.h new/shadowsocks-libev-3.1.3/src/common.h --- old/shadowsocks-libev-3.1.2/src/common.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/common.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * common.h - Provide global definitions * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * shadowsocks-libev is free software; you can redistribute it and/or modify @@ -53,10 +53,10 @@ #define STAGE_ERROR -1 /* Error detected */ #define STAGE_INIT 0 /* Initial stage */ #define STAGE_HANDSHAKE 1 /* Handshake with client */ -#define STAGE_PARSE 2 /* Parse the header */ +#define STAGE_PARSE 2 /* Parse the SOCKS5 header */ +#define STAGE_SNI 3 /* Parse HTTP/SNI header */ #define STAGE_RESOLVE 4 /* Resolve the hostname */ -#define STAGE_WAIT 5 /* Wait for more data */ -#define STAGE_STREAM 6 /* Stream between client and server */ +#define STAGE_STREAM 5 /* Stream between client and server */ /* Vals for long options */ enum { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/crypto.c new/shadowsocks-libev-3.1.3/src/crypto.c --- old/shadowsocks-libev-3.1.2/src/crypto.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/crypto.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * crypto.c - Manage the global crypto * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/crypto.h new/shadowsocks-libev-3.1.3/src/crypto.h --- old/shadowsocks-libev-3.1.2/src/crypto.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/crypto.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * crypto.h - Define the enryptor's interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/jconf.c new/shadowsocks-libev-3.1.3/src/jconf.c --- old/shadowsocks-libev-3.1.2/src/jconf.c 2017-12-27 02:24:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/jconf.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * jconf.c - Parse the JSON format config file * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * shadowsocks-libev is free software; you can redistribute it and/or modify @@ -262,10 +262,6 @@ check_json_value_type(value, json_boolean, "invalid config file: option 'reuse_port' must be a boolean"); conf.reuse_port = value->u.boolean; - } else if (strcmp(name, "disable_sni") == 0) { - check_json_value_type(value, json_boolean, - "invalid config file: option 'disable_sni' must be a boolean"); - conf.disable_sni = value->u.boolean; } else if (strcmp(name, "auth") == 0) { FATAL("One time auth has been deprecated. Try AEAD ciphers instead."); } else if (strcmp(name, "nofile") == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/jconf.h new/shadowsocks-libev-3.1.3/src/jconf.h --- old/shadowsocks-libev-3.1.2/src/jconf.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/jconf.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * jconf.h - Define the config data structure * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * shadowsocks-libev is free software; you can redistribute it and/or modify @@ -76,7 +76,6 @@ char *plugin_opts; int fast_open; int reuse_port; - int disable_sni; int nofile; char *nameserver; int dscp_num; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/local.c new/shadowsocks-libev-3.1.3/src/local.c --- old/shadowsocks-libev-3.1.2/src/local.c 2017-12-27 10:06:22.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/local.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * local.c - Setup a socks5 proxy through remote shadowsocks server * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * @@ -253,7 +253,6 @@ server_t *server = cork_container_of(watcher, server_t, delayed_connect_watcher); - server->stage = STAGE_WAIT; server_recv_cb(EV_A_ & server->recv_ctx->io, revents); } @@ -266,13 +265,15 @@ buffer_t *buf; ssize_t r; + ev_timer_stop(EV_A_ & server->delayed_connect_watcher); + if (remote == NULL) { buf = server->buf; } else { buf = remote->buf; } - if (server->stage != STAGE_WAIT) { + if (revents != EV_TIMER) { r = recv(server->fd, buf->data + buf->len, BUF_SIZE - buf->len, 0); if (r == 0) { @@ -294,8 +295,6 @@ } } buf->len += r; - } else { - server->stage = STAGE_STREAM; } while (1) { @@ -307,8 +306,6 @@ return; } - ev_timer_stop(EV_A_ & server->delayed_connect_watcher); - // insert shadowsocks header if (!remote->direct) { #ifdef __ANDROID__ @@ -498,7 +495,9 @@ buf->len = 0; return; - } else if (server->stage == STAGE_HANDSHAKE || server->stage == STAGE_PARSE) { + } else if (server->stage == STAGE_HANDSHAKE || + server->stage == STAGE_PARSE || + server->stage == STAGE_SNI) { struct socks5_request *request = (struct socks5_request *)buf->data; size_t request_len = sizeof(struct socks5_request); struct sockaddr_in sock_addr; @@ -568,9 +567,9 @@ // Wait until client closes the connection return; } - } - server->stage = STAGE_PARSE; + server->stage = STAGE_PARSE; + } char host[257], ip[INET6_ADDRSTRLEN], port[16]; @@ -650,7 +649,9 @@ else if (dst_port == tls_protocol->default_port) ret = tls_protocol->parse_packet(buf->data + 3 + abuf->len, buf->len - 3 - abuf->len, &hostname); - if (ret == -1 && buf->len < BUF_SIZE) { + if (ret == -1 && buf->len < BUF_SIZE && server->stage != STAGE_SNI) { + server->stage = STAGE_SNI; + ev_timer_start(EV_A_ & server->delayed_connect_watcher); return; } else if (ret > 0) { sni_detected = 1; @@ -658,6 +659,7 @@ memcpy(host, hostname, ret); host[ret] = '\0'; } + ss_free(hostname); } } @@ -682,13 +684,16 @@ && !(vpn && strcmp(port, "53") == 0) #endif ) { - int host_match = acl_match_host(host); int bypass = 0; int resolved = 0; struct sockaddr_storage storage; memset(&storage, 0, sizeof(struct sockaddr_storage)); int err; + int host_match = 0; + if (sni_detected || atyp == 3) + host_match = acl_match_host(host); + if (host_match > 0) bypass = 1; // bypass hostnames in black list else if (host_match < 0) @@ -758,22 +763,6 @@ // Not bypass if (remote == NULL) { remote = create_remote(server->listener, NULL); - - if (sni_detected) { -#ifndef __ANDROID__ - // Reconstruct address buffer - abuf->len = 0; - abuf->data[abuf->len++] = 3; - abuf->data[abuf->len++] = ret; - memcpy(abuf->data + abuf->len, hostname, ret); - abuf->len += ret; - dst_port = htons(dst_port); - memcpy(abuf->data + abuf->len, &dst_port, 2); - abuf->len += 2; -#endif - - ss_free(hostname); - } } if (remote == NULL) { @@ -800,7 +789,11 @@ server->remote = remote; remote->server = server; - ev_timer_start(EV_A_ & server->delayed_connect_watcher); + if (buf->len > 0 || sni_detected) { + continue; + } else { + ev_timer_start(EV_A_ & server->delayed_connect_watcher); + } return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/local.h new/shadowsocks-libev-3.1.3/src/local.h --- old/shadowsocks-libev-3.1.2/src/local.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/local.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * local.h - Define the client's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/manager.c new/shadowsocks-libev-3.1.3/src/manager.c --- old/shadowsocks-libev-3.1.2/src/manager.c 2017-12-27 02:24:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/manager.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * server.c - Provide shadowsocks service * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/manager.h new/shadowsocks-libev-3.1.3/src/manager.h --- old/shadowsocks-libev-3.1.2/src/manager.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/manager.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * server.h - Define shadowsocks server's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/netutils.c new/shadowsocks-libev-3.1.3/src/netutils.c --- old/shadowsocks-libev-3.1.2/src/netutils.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/netutils.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * netutils.c - Network utilities * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * @@ -207,9 +207,6 @@ return -1; if (p1_in->sin_family > p2_in->sin_family) return 1; - if (verbose) { - LOGI("sockaddr_cmp: sin_family equal? %d", p1_in->sin_family == p2_in->sin_family); - } /* compare ip4 */ if (p1_in->sin_family == AF_INET) { /* just order it, ntohs not required */ @@ -217,9 +214,6 @@ return -1; if (p1_in->sin_port > p2_in->sin_port) return 1; - if (verbose) { - LOGI("sockaddr_cmp: sin_port equal? %d", p1_in->sin_port == p2_in->sin_port); - } return memcmp(&p1_in->sin_addr, &p2_in->sin_addr, INET_SIZE); } else if (p1_in6->sin6_family == AF_INET6) { /* just order it, ntohs not required */ @@ -227,9 +221,6 @@ return -1; if (p1_in6->sin6_port > p2_in6->sin6_port) return 1; - if (verbose) { - LOGI("sockaddr_cmp: sin6_port equal? %d", p1_in6->sin6_port == p2_in6->sin6_port); - } return memcmp(&p1_in6->sin6_addr, &p2_in6->sin6_addr, INET6_SIZE); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/netutils.h new/shadowsocks-libev-3.1.3/src/netutils.h --- old/shadowsocks-libev-3.1.2/src/netutils.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/netutils.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * netutils.h - Network utilities * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/plugin.c new/shadowsocks-libev-3.1.3/src/plugin.c --- old/shadowsocks-libev-3.1.2/src/plugin.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/plugin.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * plugin.c - Manage plugins * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/plugin.h new/shadowsocks-libev-3.1.3/src/plugin.h --- old/shadowsocks-libev-3.1.2/src/plugin.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/plugin.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * acl.h - Define the ACL interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/ppbloom.c new/shadowsocks-libev-3.1.3/src/ppbloom.c --- old/shadowsocks-libev-3.1.2/src/ppbloom.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/ppbloom.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * ppbloom.c - Ping-Pong Bloom Filter for nonce reuse detection * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/ppbloom.h new/shadowsocks-libev-3.1.3/src/ppbloom.h --- old/shadowsocks-libev-3.1.2/src/ppbloom.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/ppbloom.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * ppbloom.h - Define the Ping-Pong Bloom Filter interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/redir.c new/shadowsocks-libev-3.1.3/src/redir.c --- old/shadowsocks-libev-3.1.2/src/redir.c 2017-12-27 02:24:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/redir.c 2018-01-16 02:18:57.000000000 +0100 @@ -2,7 +2,7 @@ * redir.c - Provide a transparent TCP proxy through remote shadowsocks * server * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * @@ -47,8 +47,6 @@ #include "config.h" #endif -#include "http.h" -#include "tls.h" #include "plugin.h" #include "netutils.h" #include "utils.h" @@ -88,7 +86,6 @@ int verbose = 0; int reuse_port = 0; int keep_resolving = 1; -int disable_sni = 0; static crypto_t *crypto; @@ -240,26 +237,6 @@ } if (!remote->send_ctx->connected) { - if (!disable_sni) { - // SNI - int ret = 0; - uint16_t port = 0; - if (AF_INET6 == server->destaddr.ss_family) { // IPv6 - port = ntohs(((struct sockaddr_in6 *)&(server->destaddr))->sin6_port); - } else { // IPv4 - port = ntohs(((struct sockaddr_in *)&(server->destaddr))->sin_port); - } - if (port == http_protocol->default_port) - ret = http_protocol->parse_packet(remote->buf->data, - remote->buf->len, &server->hostname); - else if (port == tls_protocol->default_port) - ret = tls_protocol->parse_packet(remote->buf->data, - remote->buf->len, &server->hostname); - if (ret > 0) { - server->hostname_len = ret; - } - } - ev_io_stop(EV_A_ & server_recv_ctx->io); ev_io_start(EV_A_ & remote->send_ctx->io); return; @@ -478,21 +455,7 @@ buffer_t *abuf = &ss_addr_to_send; balloc(abuf, BUF_SIZE); - if (server->hostname_len > 0 - && validate_hostname(server->hostname, server->hostname_len)) { // HTTP/SNI - uint16_t port; - if (AF_INET6 == server->destaddr.ss_family) { // IPv6 - port = (((struct sockaddr_in6 *)&(server->destaddr))->sin6_port); - } else { // IPv4 - port = (((struct sockaddr_in *)&(server->destaddr))->sin_port); - } - - abuf->data[abuf->len++] = 3; // Type 3 is hostname - abuf->data[abuf->len++] = server->hostname_len; - memcpy(abuf->data + abuf->len, server->hostname, server->hostname_len); - abuf->len += server->hostname_len; - memcpy(abuf->data + abuf->len, &port, 2); - } else if (AF_INET6 == server->destaddr.ss_family) { // IPv6 + if (AF_INET6 == server->destaddr.ss_family) { // IPv6 abuf->data[abuf->len++] = 4; // Type 4 is IPv6 address size_t in6_addr_len = sizeof(struct in6_addr); @@ -693,9 +656,6 @@ server->send_ctx->server = server; server->send_ctx->connected = 0; - server->hostname = NULL; - server->hostname_len = 0; - server->e_ctx = ss_align(sizeof(cipher_ctx_t)); server->d_ctx = ss_align(sizeof(cipher_ctx_t)); crypto->ctx_init(crypto->cipher, server->e_ctx, 1); @@ -713,9 +673,6 @@ static void free_server(server_t *server) { - if (server->hostname != NULL) { - ss_free(server->hostname); - } if (server->remote != NULL) { server->remote->server = NULL; } @@ -1088,9 +1045,6 @@ if (reuse_port == 0) { reuse_port = conf->reuse_port; } - if (disable_sni == 0) { - disable_sni = conf->disable_sni; - } if (fast_open == 0) { fast_open = conf->fast_open; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/redir.h new/shadowsocks-libev-3.1.3/src/redir.h --- old/shadowsocks-libev-3.1.2/src/redir.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/redir.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,6 +1,6 @@ /* * redir.h - Define the redirector's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * @@ -58,9 +58,6 @@ struct server_ctx *send_ctx; struct remote *remote; - char *hostname; - size_t hostname_len; - struct sockaddr_storage destaddr; ev_timer delayed_connect_watcher; } server_t; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/server.c new/shadowsocks-libev-3.1.3/src/server.c --- old/shadowsocks-libev-3.1.2/src/server.c 2017-12-28 07:15:42.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/server.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * server.c - Provide shadowsocks service * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/server.h new/shadowsocks-libev-3.1.3/src/server.h --- old/shadowsocks-libev-3.1.2/src/server.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/server.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * server.h - Define shadowsocks server's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/shadowsocks.h new/shadowsocks-libev-3.1.3/src/shadowsocks.h --- old/shadowsocks-libev-3.1.2/src/shadowsocks.h 2017-12-27 02:24:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/shadowsocks.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * shadowsocks.h - Header files of library interfaces * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * shadowsocks-libev is free software; you can redistribute it and/or modify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/stream.c new/shadowsocks-libev-3.1.3/src/stream.c --- old/shadowsocks-libev-3.1.2/src/stream.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/stream.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * stream.c - Manage stream ciphers * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/stream.h new/shadowsocks-libev-3.1.3/src/stream.h --- old/shadowsocks-libev-3.1.2/src/stream.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/stream.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * encrypt.h - Define the enryptor's interface * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/tunnel.c new/shadowsocks-libev-3.1.3/src/tunnel.c --- old/shadowsocks-libev-3.1.2/src/tunnel.c 2017-12-27 02:24:11.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/tunnel.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * tunnel.c - Setup a local port forwarding through remote shadowsocks server * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/tunnel.h new/shadowsocks-libev-3.1.3/src/tunnel.h --- old/shadowsocks-libev-3.1.2/src/tunnel.h 2017-06-27 08:33:10.000000000 +0200 +++ new/shadowsocks-libev-3.1.3/src/tunnel.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * tunnel.h - Define tunnel's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/udprelay.c new/shadowsocks-libev-3.1.3/src/udprelay.c --- old/shadowsocks-libev-3.1.2/src/udprelay.c 2017-12-28 07:18:22.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/udprelay.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * udprelay.c - Setup UDP relay for both client and server * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * @@ -192,7 +192,7 @@ return key; } -#if defined(MODULE_REDIR) +#if defined(MODULE_REDIR) || defined(MODULE_REMOTE) static int construct_udprelay_header(const struct sockaddr_storage *in_addr, char *addr_header) @@ -727,13 +727,11 @@ #endif if (len == 0) { - LOGI("[udp] error in parse header"); - // error in parse header + // error when parsing header + LOGE("[udp] error in parse header"); goto CLEAN_UP; } - // server may return using a different address type other than the type we - // have used during sending #if defined(MODULE_TUNNEL) || defined(MODULE_REDIR) // Construct packet buf->len -= len; @@ -756,8 +754,9 @@ rx += buf->len; - char *addr_header = remote_ctx->addr_header; - int addr_header_len = remote_ctx->addr_header_len; + // Reconstruct UDP response header + char addr_header[512]; + int addr_header_len = construct_udprelay_header(&src_addr, addr_header); // Construct packet brealloc(buf, buf->len + addr_header_len, buf_size); @@ -1159,8 +1158,6 @@ remote_ctx = new_remote(remotefd, server_ctx); remote_ctx->src_addr = src_addr; remote_ctx->af = remote_addr->sa_family; - remote_ctx->addr_header_len = addr_header_len; - memcpy(remote_ctx->addr_header, addr_header, addr_header_len); // Add to conn cache cache_insert(conn_cache, key, HASH_KEY_LEN, (void *)remote_ctx); @@ -1170,6 +1167,9 @@ ev_timer_start(EV_A_ & remote_ctx->watcher); } + remote_ctx->addr_header_len = addr_header_len; + memcpy(remote_ctx->addr_header, addr_header, addr_header_len); + if (offset > 0) { buf->len -= offset; memmove(buf->data, buf->data + offset, buf->len); @@ -1207,16 +1207,8 @@ if (remote_ctx != NULL) { cache_hit = 1; - // detect destination mismatch - if (remote_ctx->addr_header_len != addr_header_len - || memcmp(addr_header, remote_ctx->addr_header, addr_header_len) != 0) { - remote_ctx->addr_header_len = addr_header_len; - memcpy(remote_ctx->addr_header, addr_header, addr_header_len); - if (dst_addr.ss_family != AF_INET && dst_addr.ss_family != AF_INET6) { - need_query = 1; - } - } else { - memcpy(&dst_addr, &remote_ctx->dst_addr, sizeof(struct sockaddr_storage)); + if (dst_addr.ss_family != AF_INET && dst_addr.ss_family != AF_INET6) { + need_query = 1; } } else { if (dst_addr.ss_family == AF_INET || dst_addr.ss_family == AF_INET6) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/udprelay.h new/shadowsocks-libev-3.1.3/src/udprelay.h --- old/shadowsocks-libev-3.1.2/src/udprelay.h 2017-12-28 07:18:32.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/udprelay.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * udprelay.h - Define UDP relay's buffers and callbacks * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/utils.c new/shadowsocks-libev-3.1.3/src/utils.c --- old/shadowsocks-libev-3.1.2/src/utils.c 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/utils.c 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * utils.c - Misc utilities * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shadowsocks-libev-3.1.2/src/utils.h new/shadowsocks-libev-3.1.3/src/utils.h --- old/shadowsocks-libev-3.1.2/src/utils.h 2017-12-01 02:52:04.000000000 +0100 +++ new/shadowsocks-libev-3.1.3/src/utils.h 2018-01-16 02:18:57.000000000 +0100 @@ -1,7 +1,7 @@ /* * utils.h - Misc utilities * - * Copyright (C) 2013 - 2017, Max Lv <[email protected]> + * Copyright (C) 2013 - 2018, Max Lv <[email protected]> * * This file is part of the shadowsocks-libev. *
