aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2010-04-04 14:02:09 +0200
committerAndreas Schneider <mail@cynapses.org>2010-04-04 14:02:09 +0200
commit5021ed30745fbdeabe35e7d52cad0d65c127d147 (patch)
tree87830c1fb7031b46448489668e7c2c37a28be72f
parent3773366a25978a57fe990c7d2951e88d38dcb067 (diff)
downloadlibssh-5021ed30745fbdeabe35e7d52cad0d65c127d147.tar.gz
libssh-5021ed30745fbdeabe35e7d52cad0d65c127d147.tar.xz
libssh-5021ed30745fbdeabe35e7d52cad0d65c127d147.zip
Fixed config parsing wich has overwritten user specified values.
-rw-r--r--libssh/config.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libssh/config.c b/libssh/config.c
index 264dcd2b..e3a00ca6 100644
--- a/libssh/config.c
+++ b/libssh/config.c
@@ -197,21 +197,25 @@ static int ssh_config_parse_line(ssh_session session, const char *line,
}
break;
case SOC_PORT:
- p = ssh_config_get_str(&s, NULL);
- if (p && *parsing) {
- ssh_options_set(session, SSH_OPTIONS_PORT_STR, p);
+ if (session->port == 22) {
+ p = ssh_config_get_str(&s, NULL);
+ if (p && *parsing) {
+ ssh_options_set(session, SSH_OPTIONS_PORT_STR, p);
+ }
}
break;
case SOC_USERNAME:
- p = ssh_config_get_str(&s, NULL);
- if (p && *parsing) {
- ssh_options_set(session, SSH_OPTIONS_USER, p);
+ if (session->username == NULL) {
+ p = ssh_config_get_str(&s, NULL);
+ if (p && *parsing) {
+ ssh_options_set(session, SSH_OPTIONS_USER, p);
+ }
}
break;
case SOC_IDENTITY:
p = ssh_config_get_str(&s, NULL);
if (p && *parsing) {
- ssh_options_set(session, SSH_OPTIONS_IDENTITY, p);
+ ssh_options_set(session, SSH_OPTIONS_ADD_IDENTITY, p);
}
break;
case SOC_CIPHERS: