aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-10-13 18:16:03 +0200
committerMax <msuraev@sysmocom.de>2017-10-13 18:19:32 +0200
commita2b50809c766bfb1f94ac0fc7c76517e3e3a66ab (patch)
tree97132a44ca3982f4303c239de055329b640bfe7f
parent8440357d4cc88479921350344e435ee9c5e4e0f1 (diff)
cosmetic: relax UDP length check
Previously recv() returning 0 for UDP socket was considered as error although it's legitimate return value for empty UDP packets. Relax the error check to avoid confusing error messages. The function behavior is the same: * msg is not altered while receiving 0-length UDP packet * return value is 0 The only result of the relaxed error check is the absense of error log message for 0-length UDP packet. Change-Id: I32e5fcbf5ed92cc923660ac59e6a37fd3f0703a7 Fixes: OS#2219
-rw-r--r--src/datagram.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/datagram.c b/src/datagram.c
index c2c84e0..10204e2 100644
--- a/src/datagram.c
+++ b/src/datagram.c
@@ -236,14 +236,14 @@ struct osmo_dgram_rx {
/*! \brief Receive data via Osmocom datagram receiver
* \param[in] conn Datagram Receiver from which to receive
* \param msg pre-allocate message buffer to which received data is appended
- * \returns number of bytes read, negative on error. */
+ * \returns number of bytes read (might be 0 for empty UDP packet), negative on error. */
int osmo_dgram_rx_recv(struct osmo_dgram_rx *conn,
struct msgb *msg)
{
int ret;
ret = recv(conn->ofd.fd, msg->data, msg->data_len, 0);
- if (ret <= 0) {
+ if (ret < 0) {
LOGP(DLINP, LOGL_ERROR, "error receiving data from tx\n");
return ret;
}