summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/packed.c29
-rw-r--r--src/common/packed.h3
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);