diff options
-rw-r--r-- | include/libssh/misc.h | 12 | ||||
-rw-r--r-- | libssh/messages.c | 2 | ||||
-rw-r--r-- | libssh/misc.c | 9 | ||||
-rw-r--r-- | libssh/server.c | 4 | ||||
-rw-r--r-- | libssh/session.c | 2 |
5 files changed, 16 insertions, 13 deletions
diff --git a/include/libssh/misc.h b/include/libssh/misc.h index 21104c78..3c33d0e1 100644 --- a/include/libssh/misc.h +++ b/include/libssh/misc.h @@ -49,11 +49,7 @@ struct ssh_iterator *ssh_list_get_iterator(const struct ssh_list *list); int ssh_list_add(struct ssh_list *list, const void *data); void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator); -/** @brief fetch the head element of a list and remove it from list - * @param list the ssh_list to use - * @return the first element of the list - */ -const void *_ssh_list_get_head(struct ssh_list *list); +const void *_ssh_list_pop_head(struct ssh_list *list); #define ssh_iterator_value(type, iterator)\ ((type)((iterator)->data)) @@ -61,9 +57,9 @@ const void *_ssh_list_get_head(struct ssh_list *list); /** @brief fetch the head element of a list and remove it from list * @param type type of the element to return * @param list the ssh_list to use - * @return the first element of the list + * @return the first element of the list, or NULL if the list is empty */ -#define ssh_list_get_head(type, ssh_list)\ - ((type)_ssh_list_get_head(ssh_list)) +#define ssh_list_pop_head(type, ssh_list)\ + ((type)_ssh_list_pop_head(ssh_list)) #endif /* MISC_H_ */ diff --git a/libssh/messages.c b/libssh/messages.c index 0d3620c0..9b9900e5 100644 --- a/libssh/messages.c +++ b/libssh/messages.c @@ -710,7 +710,7 @@ ssh_message ssh_message_get(ssh_session session) { leave_function(); return NULL; } - msg=ssh_list_get_head(ssh_message, session->ssh_message_list); + msg=ssh_list_pop_head(ssh_message, session->ssh_message_list); } while(msg==NULL); msg=ssh_message_pop_head(session); leave_function(); diff --git a/libssh/misc.c b/libssh/misc.c index f64c395a..a86a163b 100644 --- a/libssh/misc.c +++ b/libssh/misc.c @@ -261,7 +261,14 @@ void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){ SAFE_FREE(iterator); } -const void *_ssh_list_get_head(struct ssh_list *list){ +/** @internal + * @brief Removes the top element of the list and returns the data value attached + * to it + * @param list the ssh_list + * @returns pointer to the element being stored in head, or + * NULL if the list is empty. + */ +const void *_ssh_list_pop_head(struct ssh_list *list){ struct ssh_iterator *iterator=list->root; const void *data; if(!list->root) diff --git a/libssh/server.c b/libssh/server.c index a1d234f3..8b36149c 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -912,7 +912,7 @@ int ssh_execute_message_callbacks(ssh_session session){ if(!session->ssh_message_list) return SSH_OK; if(session->ssh_message_callback){ - while(ssh_list_get_head(ssh_message , session->ssh_message_list) != NULL){ + while(ssh_list_pop_head(ssh_message , session->ssh_message_list) != NULL){ msg=ssh_message_pop_head(session); ret=session->ssh_message_callback(session,msg); if(ret==1){ @@ -925,7 +925,7 @@ int ssh_execute_message_callbacks(ssh_session session){ } } } else { - while(ssh_list_get_head(ssh_message , session->ssh_message_list) != NULL){ + while(ssh_list_pop_head(ssh_message , session->ssh_message_list) != NULL){ msg=ssh_message_pop_head(session); ret = ssh_message_reply_default(msg); ssh_message_free(msg); diff --git a/libssh/session.c b/libssh/session.c index 2e1ee2be..a39a68c5 100644 --- a/libssh/session.c +++ b/libssh/session.c @@ -166,7 +166,7 @@ void ssh_free(ssh_session session) { privatekey_free(session->rsa_key); if(session->ssh_message_list){ ssh_message msg; - while((msg=ssh_list_get_head(ssh_message ,session->ssh_message_list)) + while((msg=ssh_list_pop_head(ssh_message ,session->ssh_message_list)) != NULL){ ssh_message_free(msg); } |