Revision 7eb27319 vncauthproxy/proxy.py
b/vncauthproxy/proxy.py | ||
---|---|---|
24 | 24 |
DEFAULT_LOG_FILE = "/var/log/vncauthproxy/vncauthproxy.log" |
25 | 25 |
DEFAULT_PID_FILE = "/var/run/vncauthproxy/vncauthproxy.pid" |
26 | 26 |
DEFAULT_CONNECT_TIMEOUT = 30 |
27 |
DEFAULT_CONNECT_RETRIES = 3 |
|
28 |
DEFAULT_RETRY_WAIT = 0.1 |
|
27 | 29 |
# Default values per http://www.iana.org/assignments/port-numbers |
28 | 30 |
DEFAULT_MIN_PORT = 49152 |
29 | 31 |
DEFAULT_MAX_PORT = 65535 |
... | ... | |
315 | 317 |
|
316 | 318 |
return sockets |
317 | 319 |
|
318 |
def perform_server_handshake(daddr, dport): |
|
320 |
def perform_server_handshake(daddr, dport, tries, retry_wait):
|
|
319 | 321 |
""" |
320 | 322 |
Initiate a connection with the backend server and perform basic |
321 | 323 |
RFB 3.8 handshake with it. |
... | ... | |
324 | 326 |
|
325 | 327 |
""" |
326 | 328 |
server = None |
327 |
# Try to connect to the server |
|
328 |
tries = 50 |
|
329 | 329 |
|
330 | 330 |
while tries: |
331 | 331 |
tries -= 1 |
... | ... | |
354 | 354 |
break |
355 | 355 |
|
356 | 356 |
# Wait and retry |
357 |
sleep(0.2)
|
|
357 |
sleep(retry_wait)
|
|
358 | 358 |
|
359 | 359 |
if server is None: |
360 | 360 |
raise Exception("Failed to connect to server") |
... | ... | |
411 | 411 |
parser.add_option("-t", "--connect-timeout", dest="connect_timeout", |
412 | 412 |
default=DEFAULT_CONNECT_TIMEOUT, type="int", metavar="SECONDS", |
413 | 413 |
help="How long to listen for clients to forward") |
414 |
parser.add_option("-r", "--connect-retries", dest="connect_retries", |
|
415 |
default=DEFAULT_CONNECT_RETRIES, type="int", |
|
416 |
metavar="RETRIES", |
|
417 |
help="How many times to try to connect to the server") |
|
418 |
parser.add_option("-w", "--retry-wait", dest="retry_wait", |
|
419 |
default=DEFAULT_RETRY_WAIT, type="float", metavar="SECONDS", |
|
420 |
help="How long to wait between retrying to connect to the server") |
|
414 | 421 |
parser.add_option("-p", "--min-port", dest="min_port", |
415 | 422 |
default=DEFAULT_MIN_PORT, type="int", metavar="MIN_PORT", |
416 | 423 |
help="The minimum port to use for automatically-allocated ephemeral ports") |
... | ... | |
546 | 553 |
pool = None |
547 | 554 |
|
548 | 555 |
listeners = get_listening_sockets(sport) |
549 |
server = perform_server_handshake(daddr, dport) |
|
556 |
server = perform_server_handshake(daddr, dport, |
|
557 |
opts.connect_retries, opts.retry_wait) |
|
550 | 558 |
|
551 | 559 |
VncAuthProxy.spawn(logger, listeners, pool, daddr, dport, |
552 | 560 |
server, password, opts.connect_timeout) |
Also available in: Unified diff