]> andersk Git - openssh.git/commitdiff
- stevesk@cvs.openbsd.org 2002/09/11 18:27:26
authordjm <djm>
Wed, 11 Sep 2002 23:52:46 +0000 (23:52 +0000)
committerdjm <djm>
Wed, 11 Sep 2002 23:52:46 +0000 (23:52 +0000)
     [authfd.c authfd.h ssh.c]
     don't connect to agent to test for presence if we've previously
     connected; ok markus@

ChangeLog
authfd.c
authfd.h
ssh.c

index c5ab8180573e10c6ea0ddfd0066f26face8bf281..5310894e009c8a9f55c39e1608eb48dac53fbb34 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
    - stevesk@cvs.openbsd.org 2002/09/11 17:55:03
      [ssh.1]
      add agent and X11 forwarding warning text from ssh_config.5; ok markus@
+   - stevesk@cvs.openbsd.org 2002/09/11 18:27:26
+     [authfd.c authfd.h ssh.c]
+     don't connect to agent to test for presence if we've previously
+     connected; ok markus@
 
 20020911
  - (djm) Sync openbsd-compat with OpenBSD -current
index 4c4552d527f0deab67941c2b2a814ae2249a58e9..f04e0858b04806e2da4c53e59dbcb702bbf8ddf3 100644 (file)
--- a/authfd.c
+++ b/authfd.c
@@ -35,7 +35,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: authfd.c,v 1.56 2002/06/25 16:22:42 markus Exp $");
+RCSID("$OpenBSD: authfd.c,v 1.57 2002/09/11 18:27:26 stevesk Exp $");
 
 #include <openssl/evp.h>
 
@@ -53,6 +53,8 @@ RCSID("$OpenBSD: authfd.c,v 1.56 2002/06/25 16:22:42 markus Exp $");
 #include "log.h"
 #include "atomicio.h"
 
+static int agent_present = 0;
+
 /* helper */
 int    decode_reply(int type);
 
@@ -61,6 +63,21 @@ int  decode_reply(int type);
     ((x == SSH_AGENT_FAILURE) || (x == SSH_COM_AGENT2_FAILURE) || \
     (x == SSH2_AGENT_FAILURE))
 
+int
+ssh_agent_present(void)
+{
+       int authfd;
+
+       if (agent_present)
+               return 1;
+       if ((authfd = ssh_get_authentication_socket()) == -1)
+               return 0;
+       else {
+               ssh_close_authentication_socket(authfd);
+               return 1;
+       }
+}
+
 /* Returns the number of the authentication fd, or -1 if there is none. */
 
 int
@@ -90,6 +107,7 @@ ssh_get_authentication_socket(void)
                close(sock);
                return -1;
        }
+       agent_present = 1;
        return sock;
 }
 
index b2767e5c1e472113827344364bdf15293233f7c1..38ee49e88523fa67b688002de056b6200c24ef48 100644 (file)
--- a/authfd.h
+++ b/authfd.h
@@ -1,4 +1,4 @@
-/*     $OpenBSD: authfd.h,v 1.30 2002/06/19 00:27:55 deraadt Exp $     */
+/*     $OpenBSD: authfd.h,v 1.31 2002/09/11 18:27:25 stevesk Exp $     */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -66,6 +66,7 @@ typedef struct {
        int     howmany;
 }      AuthenticationConnection;
 
+int    ssh_agent_present(void);
 int    ssh_get_authentication_socket(void);
 void   ssh_close_authentication_socket(int);
 
diff --git a/ssh.c b/ssh.c
index dcbf68d999b814b561a4eb66ad4e830ec006a5f6..7cef5e5acb11cea954f8a852d5b370d2a0d11e9a 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -40,7 +40,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: ssh.c,v 1.184 2002/08/29 19:49:42 stevesk Exp $");
+RCSID("$OpenBSD: ssh.c,v 1.185 2002/09/11 18:27:26 stevesk Exp $");
 
 #include <openssl/evp.h>
 #include <openssl/err.h>
@@ -829,11 +829,8 @@ check_agent_present(void)
 {
        if (options.forward_agent) {
                /* Clear agent forwarding if we don\'t have an agent. */
-               int authfd = ssh_get_authentication_socket();
-               if (authfd < 0)
+               if (!ssh_agent_present())
                        options.forward_agent = 0;
-               else
-                       ssh_close_authentication_socket(authfd);
        }
 }
 
This page took 0.05916 seconds and 5 git commands to generate.