summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h2
-rw-r--r--libssh/options.c28
2 files changed, 20 insertions, 10 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h
index ad81ee96..33c72c94 100644
--- a/include/libssh/libssh.h
+++ b/include/libssh/libssh.h
@@ -312,7 +312,7 @@ int ssh_options_set_username(SSH_OPTIONS *opt, const char *username);
int ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port);
int ssh_options_getopt(SSH_OPTIONS *options, int *argcptr, char **argv);
int ssh_options_set_host(SSH_OPTIONS *opt, const char *host);
-void ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd);
+int ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd);
void ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port);
void ssh_options_set_identity(SSH_OPTIONS *opt, const char *identity);
void ssh_options_set_status_callback(SSH_OPTIONS *opt, void (*callback)
diff --git a/libssh/options.c b/libssh/options.c
index af20d886..74a4d319 100644
--- a/libssh/options.c
+++ b/libssh/options.c
@@ -304,16 +304,26 @@ int ssh_options_set_username(SSH_OPTIONS *opt, const char *username) {
return 0;
}
-/** If you wish to open the socket yourself for a reason
- * or another, set the file descriptor.\n
- * don't forget to use ssh_option_set_hostname() as the hostname
- * is used as a key in the known_host mechanism
- * \brief set a file descriptor for connection
- * \param opt options structure
- * \param fd an opened file descriptor to use
+/**
+ * @brief Set a file descriptor for connection.
+ *
+ * If you wish to open the socket yourself for a reason or another, set the
+ * file descriptor. Don't forget to use ssh_option_set_hostname() as the
+ * hostname is used as a key in the known_host mechanism.
+ *
+ * @param opt The options structure to use.
+ *
+ * @param fd An opened file descriptor to use.
+ *
+ * @return 0 on success, < 0 on error.
*/
-void ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd){
- opt->fd=fd;
+int ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd) {
+ if (opt == NULL) {
+ return -1;
+ }
+ opt->fd = fd;
+
+ return 0;
}
/** In case your client has multiple IP adresses, select the local address