diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/packed.c | 29 | ||||
-rw-r--r-- | src/common/packed.h | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/common/packed.c b/src/common/packed.c index e06e4bb..163ed3b 100644 --- a/src/common/packed.c +++ b/src/common/packed.c @@ -30,6 +30,9 @@ #include <string.h> +#include "../core/logs.h" + + /* Taille d'allocation en cas de besoin */ #define PACKET_BLOCK_SIZE 1000 @@ -124,6 +127,29 @@ size_t get_packed_buffer_payload_length(const packed_buffer *pbuf) /****************************************************************************** * * +* Paramètres : pbuf = paquet de données à consulter. * +* * +* Description : Détermine si des données sont disponibles en lecture. * +* * +* Retour : true si des données peuvent être dépilées, false sinon. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool has_more_data_in_packed_buffer(const packed_buffer *pbuf) +{ + bool result; /* Bilan à retourner */ + + result = (pbuf->pos < pbuf->used); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : pbuf = paquet de données à compléter. * * buf = nouvelles données à ajouter. * * len = quantité de ces données. * @@ -430,6 +456,7 @@ bool ssl_recv_packed_buffer(packed_buffer *pbuf, SSL *fd) int got; /* Quantité de données traitées*/ got = SSL_read(fd, &used, sizeof(uint32_t)); + if (got <= 0) LOG_ERROR_OPENSSL; result = (got == sizeof(uint32_t)); @@ -446,6 +473,7 @@ bool ssl_recv_packed_buffer(packed_buffer *pbuf, SSL *fd) pbuf->used = used; got = SSL_read(fd, pbuf->data + pbuf->pos, used); + if (got <= 0) LOG_ERROR_OPENSSL; result = (got == used); @@ -480,6 +508,7 @@ bool ssl_send_packed_buffer(packed_buffer *pbuf, SSL *fd) quantity = sizeof(uint32_t) + pbuf->used; sent = SSL_write(fd, pbuf->data, quantity); + if (sent <= 0) LOG_ERROR_OPENSSL; result = (quantity == sent); diff --git a/src/common/packed.h b/src/common/packed.h index 5c724e0..4403ad0 100644 --- a/src/common/packed.h +++ b/src/common/packed.h @@ -59,6 +59,9 @@ void exit_packed_buffer(packed_buffer *); /* Indique le nombre d'octets de la charge utile d'un paquet. */ size_t get_packed_buffer_payload_length(const packed_buffer *); +/* Détermine si des données sont disponibles en lecture. */ +bool has_more_data_in_packed_buffer(const packed_buffer *); + /* Ajoute des données à un paquet en amont à un envoi. */ bool extend_packed_buffer(packed_buffer *, const void *, size_t, bool); |