|
Lines 381-388
again:
Link Here
|
| 381 |
} |
381 |
} |
| 382 |
break; |
382 |
break; |
| 383 |
case 'M': |
383 |
case 'M': |
| 384 |
options.control_master = |
384 |
if (options.control_master == SSHCTL_MASTER_YES) |
| 385 |
(options.control_master >= 1) ? 2 : 1; |
385 |
options.control_master = SSHCTL_MASTER_ASK; |
|
|
386 |
else |
| 387 |
options.control_master = SSHCTL_MASTER_YES; |
| 386 |
break; |
388 |
break; |
| 387 |
case 'p': |
389 |
case 'p': |
| 388 |
options.port = a2port(optarg); |
390 |
options.port = a2port(optarg); |
|
Lines 607-617
again:
Link Here
|
| 607 |
} |
609 |
} |
| 608 |
if (mux_command != 0 && options.control_path == NULL) |
610 |
if (mux_command != 0 && options.control_path == NULL) |
| 609 |
fatal("No ControlPath specified for \"-O\" command"); |
611 |
fatal("No ControlPath specified for \"-O\" command"); |
| 610 |
if (options.control_path != NULL && options.control_master == 0) { |
612 |
if (options.control_path != NULL) |
| 611 |
if (mux_command == 0) |
|
|
| 612 |
mux_command = SSHMUX_COMMAND_OPEN; |
| 613 |
control_client(options.control_path); |
613 |
control_client(options.control_path); |
| 614 |
} |
|
|
| 615 |
|
614 |
|
| 616 |
/* Open a connection to the remote host. */ |
615 |
/* Open a connection to the remote host. */ |
| 617 |
if (ssh_connect(host, &hostaddr, options.port, |
616 |
if (ssh_connect(host, &hostaddr, options.port, |
|
Lines 1070-1078
ssh_control_listener(void)
Link Here
|
| 1070 |
struct sockaddr_un addr; |
1069 |
struct sockaddr_un addr; |
| 1071 |
mode_t old_umask; |
1070 |
mode_t old_umask; |
| 1072 |
|
1071 |
|
| 1073 |
if (options.control_path == NULL || options.control_master <= 0) |
1072 |
if (options.control_path == NULL || |
|
|
1073 |
options.control_master == SSHCTL_MASTER_NO) |
| 1074 |
return; |
1074 |
return; |
| 1075 |
|
1075 |
|
|
|
1076 |
debug("setting up multiplex master socket"); |
| 1077 |
|
| 1076 |
memset(&addr, '\0', sizeof(addr)); |
1078 |
memset(&addr, '\0', sizeof(addr)); |
| 1077 |
addr.sun_family = AF_UNIX; |
1079 |
addr.sun_family = AF_UNIX; |
| 1078 |
addr.sun_len = offsetof(struct sockaddr_un, sun_path) + |
1080 |
addr.sun_len = offsetof(struct sockaddr_un, sun_path) + |
|
Lines 1282-1287
control_client(const char *path)
Link Here
|
| 1282 |
char *term; |
1284 |
char *term; |
| 1283 |
extern char **environ; |
1285 |
extern char **environ; |
| 1284 |
u_int flags; |
1286 |
u_int flags; |
|
|
1287 |
|
| 1288 |
if (mux_command == 0) |
| 1289 |
mux_command = SSHMUX_COMMAND_OPEN; |
| 1290 |
|
| 1291 |
switch (options.control_master) { |
| 1292 |
case SSHCTL_MASTER_AUTO: |
| 1293 |
case SSHCTL_MASTER_AUTO_ASK: |
| 1294 |
debug("auto-mux: Trying existing master"); |
| 1295 |
/* FALLTHROUGH */ |
| 1296 |
case SSHCTL_MASTER_NO: |
| 1297 |
break; |
| 1298 |
default: |
| 1299 |
return; |
| 1300 |
} |
| 1285 |
|
1301 |
|
| 1286 |
memset(&addr, '\0', sizeof(addr)); |
1302 |
memset(&addr, '\0', sizeof(addr)); |
| 1287 |
addr.sun_family = AF_UNIX; |
1303 |
addr.sun_family = AF_UNIX; |