1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-07-30 22:43:08 +03:00

Add net_recv_timeout()

This commit is contained in:
Manuel Pégourié-Gonnard
2014-09-18 11:22:45 +02:00
committed by Paul Bakker
parent 8fa6dfd560
commit 9d9b003a9a
4 changed files with 81 additions and 4 deletions

View File

@ -65,7 +65,7 @@
* DES 1 0x0032-0x0032
* CTR_DBRG 4 0x0034-0x003A
* ENTROPY 3 0x003C-0x0040
* NET 11 0x0042-0x0056
* NET 12 0x0042-0x0056 0x0011-0x0011
* ENTROPY 1 0x0058-0x0058
* ASN1 7 0x0060-0x006C
* MD2 1 0x0070-0x0070

View File

@ -27,9 +27,14 @@
#ifndef POLARSSL_NET_H
#define POLARSSL_NET_H
#if !defined(POLARSSL_CONFIG_FILE)
#include "config.h"
#else
#include POLARSSL_CONFIG_FILE
#endif
#include <string.h>
#define POLARSSL_ERR_NET_UNKNOWN_HOST -0x0056 /**< Failed to get an IP address for the given hostname. */
#define POLARSSL_ERR_NET_SOCKET_FAILED -0x0042 /**< Failed to open a socket. */
#define POLARSSL_ERR_NET_CONNECT_FAILED -0x0044 /**< The connection to the given server / port failed. */
#define POLARSSL_ERR_NET_BIND_FAILED -0x0046 /**< Binding of the socket failed. */
@ -40,6 +45,8 @@
#define POLARSSL_ERR_NET_CONN_RESET -0x0050 /**< Connection was reset by peer. */
#define POLARSSL_ERR_NET_WANT_READ -0x0052 /**< Connection requires a read call. */
#define POLARSSL_ERR_NET_WANT_WRITE -0x0054 /**< Connection requires a write call. */
#define POLARSSL_ERR_NET_UNKNOWN_HOST -0x0056 /**< Failed to get an IP address for the given hostname. */
#define POLARSSL_ERR_NET_TIMEOUT -0x0011 /**< The operation timed out. */
#define POLARSSL_NET_LISTEN_BACKLOG 10 /**< The backlog that listen() should use. */
@ -160,6 +167,31 @@ int net_recv( void *ctx, unsigned char *buf, size_t len );
*/
int net_send( void *ctx, const unsigned char *buf, size_t len );
#if defined(POLARSSL_HAVE_TIME)
/**
* \brief Read at most 'len' characters, blocking for at most
* 'timeout' seconds. If no error occurs, the actual amount
* read is returned.
*
* \param ctx Socket
* \param buf The buffer to write to
* \param len Maximum length of the buffer
* \param timeout Maximum number of seconds to wait for data
*
* \return This function returns the number of bytes received,
* or a non-zero error code:
* POLARSSL_ERR_NET_TIMEOUT if the operation timed out,
* POLARSSL_ERR_NET_WANT_READ if interrupted by a signal.
*
* \note This function will block (until data becomes available or
* timeout is reached) even if the socket is set to
* non-blocking. Handling timeouts with non-blocking reads
* requires a different strategy.
*/
int net_recv_timeout( void *ctx, unsigned char *buf, size_t len,
unsigned char timeout );
#endif /* POLARSSL_HAVE_TIME */
/**
* \brief Gracefully shutdown the connection
*