summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/net/udp.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/net/udp.c b/src/net/udp.c
index 34acc53f8..1f74d65bc 100644
--- a/src/net/udp.c
+++ b/src/net/udp.c
@@ -260,7 +260,7 @@ static int udp_rx ( struct pk_buff *pkb, struct sockaddr_tcpip *st_src,
struct udp_connection *conn;
size_t ulen;
uint16_t csum;
- int rc;
+ int rc = 0;
/* Sanity check packet */
if ( pkb_len ( pkb ) < sizeof ( *udphdr ) ) {
@@ -314,11 +314,16 @@ static int udp_rx ( struct pk_buff *pkb, struct sockaddr_tcpip *st_src,
}
/* Pass data to application */
- rc = conn->udp_op->newdata ( conn, pkb->data, pkb_len ( pkb ),
+ if ( conn->udp_op->newdata ) {
+ rc = conn->udp_op->newdata ( conn, pkb->data, pkb_len ( pkb ),
st_src, st_dest );
- if ( rc != 0 ) {
- DBGC ( conn, "UDP %p application rejected packet: %s\n",
- conn, strerror ( rc ) );
+ if ( rc != 0 ) {
+ DBGC ( conn, "UDP %p application rejected packet: %s\n",
+ conn, strerror ( rc ) );
+ }
+ } else {
+ DBGC ( conn, "UDP %p application has no newdata handler for " \
+ "incoming packet\n", conn );
}
done: