|
@@ -260,7 +260,7 @@ static int udp_rx ( struct pk_buff *pkb, struct sockaddr_tcpip *st_src,
|
260
|
260
|
struct udp_connection *conn;
|
261
|
261
|
size_t ulen;
|
262
|
262
|
uint16_t csum;
|
263
|
|
- int rc;
|
|
263
|
+ int rc = 0;
|
264
|
264
|
|
265
|
265
|
/* Sanity check packet */
|
266
|
266
|
if ( pkb_len ( pkb ) < sizeof ( *udphdr ) ) {
|
|
@@ -314,11 +314,16 @@ static int udp_rx ( struct pk_buff *pkb, struct sockaddr_tcpip *st_src,
|
314
|
314
|
}
|
315
|
315
|
|
316
|
316
|
/* Pass data to application */
|
317
|
|
- rc = conn->udp_op->newdata ( conn, pkb->data, pkb_len ( pkb ),
|
|
317
|
+ if ( conn->udp_op->newdata ) {
|
|
318
|
+ rc = conn->udp_op->newdata ( conn, pkb->data, pkb_len ( pkb ),
|
318
|
319
|
st_src, st_dest );
|
319
|
|
- if ( rc != 0 ) {
|
320
|
|
- DBGC ( conn, "UDP %p application rejected packet: %s\n",
|
321
|
|
- conn, strerror ( rc ) );
|
|
320
|
+ if ( rc != 0 ) {
|
|
321
|
+ DBGC ( conn, "UDP %p application rejected packet: %s\n",
|
|
322
|
+ conn, strerror ( rc ) );
|
|
323
|
+ }
|
|
324
|
+ } else {
|
|
325
|
+ DBGC ( conn, "UDP %p application has no newdata handler for " \
|
|
326
|
+ "incoming packet\n", conn );
|
322
|
327
|
}
|
323
|
328
|
|
324
|
329
|
done:
|