|
@@ -568,17 +568,14 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
|
|
struct dccp_request_sock *dreq;
|
|
|
const __be32 service = dccp_hdr_request(skb)->dccph_req_service;
|
|
|
struct dccp_skb_cb *dcb = DCCP_SKB_CB(skb);
|
|
|
- __u8 reset_code = DCCP_RESET_CODE_TOO_BUSY;
|
|
|
|
|
|
/* Never answer to DCCP_PKT_REQUESTs send to broadcast or multicast */
|
|
|
if (((struct rtable *)skb->dst)->rt_flags &
|
|
|
- (RTCF_BROADCAST | RTCF_MULTICAST)) {
|
|
|
- reset_code = DCCP_RESET_CODE_NO_CONNECTION;
|
|
|
- goto drop;
|
|
|
- }
|
|
|
+ (RTCF_BROADCAST | RTCF_MULTICAST))
|
|
|
+ return 0; /* discard, don't send a reset here */
|
|
|
|
|
|
if (dccp_bad_service_code(sk, service)) {
|
|
|
- reset_code = DCCP_RESET_CODE_BAD_SERVICE_CODE;
|
|
|
+ dcb->dccpd_reset_code = DCCP_RESET_CODE_BAD_SERVICE_CODE;
|
|
|
goto drop;
|
|
|
}
|
|
|
/*
|
|
@@ -586,6 +583,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
|
|
* limitations, they conserve resources and peer is
|
|
|
* evidently real one.
|
|
|
*/
|
|
|
+ dcb->dccpd_reset_code = DCCP_RESET_CODE_TOO_BUSY;
|
|
|
if (inet_csk_reqsk_queue_is_full(sk))
|
|
|
goto drop;
|
|
|
|
|
@@ -638,7 +636,6 @@ drop_and_free:
|
|
|
reqsk_free(req);
|
|
|
drop:
|
|
|
DCCP_INC_STATS_BH(DCCP_MIB_ATTEMPTFAILS);
|
|
|
- dcb->dccpd_reset_code = reset_code;
|
|
|
return -1;
|
|
|
}
|
|
|
|