Browse Source

improve comments

master
clowwindy 10 years ago
parent
commit
ada97ab6d9
  1. 28
      shadowsocks/tcprelay.py

28
shadowsocks/tcprelay.py

@ -43,30 +43,22 @@ TIMEOUT_PRECISION = 4
MSG_FASTOPEN = 0x20000000 MSG_FASTOPEN = 0x20000000
# SOCKS CMD defination # SOCKS command definition
CMD_CONNECT = 1 CMD_CONNECT = 1
CMD_BIND = 2 CMD_BIND = 2
CMD_UDP_ASSOCIATE = 3 CMD_UDP_ASSOCIATE = 3
# TCP Relay can be either sslocal or ssserver
# for sslocal it is called is_local=True
# for each opening port, we have a TCP Relay # for each opening port, we have a TCP Relay
# for each connection, we have a TCP Relay Handler to handle the connection # for each connection, we have a TCP Relay Handler to handle the connection
# for each handler, we have 2 sockets: # for each handler, we have 2 sockets:
# local: connected to the client # local: connected to the client
# remote: connected to remote server # remote: connected to remote server
# for each handler, we have 2 streams:
# upstream: from client to server direction
# read local and write to remote
# downstream: from server to client direction
# read remote and write to local
# for each handler, it could be at one of several stages: # for each handler, it could be at one of several stages:
# sslocal: # as sslocal:
# stage 0 SOCKS hello received from local, send hello to local # stage 0 SOCKS hello received from local, send hello to local
# stage 1 addr received from local, query DNS for remote # stage 1 addr received from local, query DNS for remote
# stage 2 UDP assoc # stage 2 UDP assoc
@ -74,7 +66,7 @@ CMD_UDP_ASSOCIATE = 3
# stage 4 still connecting, more data from local received # stage 4 still connecting, more data from local received
# stage 5 remote connected, piping local and remote # stage 5 remote connected, piping local and remote
# ssserver: # as ssserver:
# stage 0 just jump to stage 1 # stage 0 just jump to stage 1
# stage 1 addr received from local, query DNS for remote # stage 1 addr received from local, query DNS for remote
# stage 3 DNS resolved, connect to remote # stage 3 DNS resolved, connect to remote
@ -89,11 +81,16 @@ STAGE_CONNECTING = 4
STAGE_STREAM = 5 STAGE_STREAM = 5
STAGE_DESTROYED = -1 STAGE_DESTROYED = -1
# stream direction # for each handler, we have 2 stream directions:
# upstream: from client to server direction
# read local and write to remote
# downstream: from server to client direction
# read remote and write to local
STREAM_UP = 0 STREAM_UP = 0
STREAM_DOWN = 1 STREAM_DOWN = 1
# stream wait status, indicating it's waiting for reading, etc # for each stream, it's waiting for reading, or writing, or both
WAIT_STATUS_INIT = 0 WAIT_STATUS_INIT = 0
WAIT_STATUS_READING = 1 WAIT_STATUS_READING = 1
WAIT_STATUS_WRITING = 2 WAIT_STATUS_WRITING = 2
@ -112,6 +109,9 @@ class TCPRelayHandler(object):
self._remote_sock = None self._remote_sock = None
self._config = config self._config = config
self._dns_resolver = dns_resolver self._dns_resolver = dns_resolver
# TCP Relay works as either sslocal or ssserver
# if is_local, this is sslocal
self._is_local = is_local self._is_local = is_local
self._stage = STAGE_INIT self._stage = STAGE_INIT
self._encryptor = encrypt.Encryptor(config['password'], self._encryptor = encrypt.Encryptor(config['password'],

Loading…
Cancel
Save