@@ -4,8 +4,8 @@ ssh_session ssh_ptr_get(SEXP ptr){
4
4
ssh_session ssh = (ssh_session ) R_ExternalPtrAddr (ptr );
5
5
if (ssh == NULL )
6
6
Rf_error ("SSH session pointer is dead" );
7
- if (!ssh_is_connected (ssh ))
8
- Rf_error ("ssh session has been disconnected" );
7
+ // if(!ssh_is_connected(ssh))
8
+ // Rf_error("ssh session has been disconnected");
9
9
return ssh ;
10
10
}
11
11
@@ -212,17 +212,18 @@ SEXP C_ssh_info(SEXP ptr){
212
212
ssh_key key ;
213
213
unsigned char * hash = NULL ;
214
214
size_t hlen = 0 ;
215
- assert_or_disconnect (myssh_get_publickey (ssh , & key ), "ssh_get_publickey" , ssh );
216
- assert_or_disconnect (ssh_get_publickey_hash (key , SSH_PUBLICKEY_HASH_SHA1 , & hash , & hlen ), "ssh_get_publickey_hash" , ssh );
215
+ if (connected ) {
216
+ assert_or_disconnect (myssh_get_publickey (ssh , & key ), "ssh_get_publickey" , ssh );
217
+ assert_or_disconnect (ssh_get_publickey_hash (key , SSH_PUBLICKEY_HASH_SHA1 , & hash , & hlen ), "ssh_get_publickey_hash" , ssh );
218
+ }
217
219
218
220
SEXP out = PROTECT (Rf_allocVector (VECSXP , 6 ));
219
221
SET_VECTOR_ELT (out , 0 , make_string (user ));
220
222
SET_VECTOR_ELT (out , 1 , make_string (host ));
221
223
SET_VECTOR_ELT (out , 2 , make_string (identity ));
222
224
SET_VECTOR_ELT (out , 3 , Rf_ScalarInteger (port ));
223
225
SET_VECTOR_ELT (out , 4 , Rf_ScalarLogical (connected ));
224
- SET_VECTOR_ELT (out , 5 , make_string (ssh_get_hexa (hash , hlen )));
225
-
226
+ SET_VECTOR_ELT (out , 5 , connected ? make_string (ssh_get_hexa (hash , hlen )) : Rf_ScalarString (NA_STRING ));
226
227
if (user ) ssh_string_free_char (user );
227
228
if (host ) ssh_string_free_char (host );
228
229
if (identity ) ssh_string_free_char (identity );
0 commit comments