@@ -4,8 +4,8 @@ ssh_session ssh_ptr_get(SEXP ptr){
44 ssh_session ssh = (ssh_session ) R_ExternalPtrAddr (ptr );
55 if (ssh == NULL )
66 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");
99 return ssh ;
1010}
1111
@@ -212,17 +212,18 @@ SEXP C_ssh_info(SEXP ptr){
212212 ssh_key key ;
213213 unsigned char * hash = NULL ;
214214 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+ }
217219
218220 SEXP out = PROTECT (Rf_allocVector (VECSXP , 6 ));
219221 SET_VECTOR_ELT (out , 0 , make_string (user ));
220222 SET_VECTOR_ELT (out , 1 , make_string (host ));
221223 SET_VECTOR_ELT (out , 2 , make_string (identity ));
222224 SET_VECTOR_ELT (out , 3 , Rf_ScalarInteger (port ));
223225 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 ));
226227 if (user ) ssh_string_free_char (user );
227228 if (host ) ssh_string_free_char (host );
228229 if (identity ) ssh_string_free_char (identity );
0 commit comments