]> err.no Git - linux-2.6/blobdiff - net/dccp/output.c
[DCCP]: Fix logfile overflow
[linux-2.6] / net / dccp / output.c
index 7102e3aed4ca2885928e990cf8b934e87d6fe2e4..51654975e8eafbbc80894bf58d2a30ae54420bd7 100644 (file)
@@ -88,11 +88,9 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                        return -EPROTO;
                }
                
-               skb->h.raw = skb_push(skb, dccp_header_size);
-               dh = dccp_hdr(skb);
 
                /* Build DCCP header and checksum it. */
-               memset(dh, 0, dccp_header_size);
+               dh = dccp_zeroed_hdr(skb, dccp_header_size);
                dh->dccph_type  = dcb->dccpd_type;
                dh->dccph_sport = inet->sport;
                dh->dccph_dport = inet->dport;
@@ -125,7 +123,7 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
                DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
 
                memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
-               err = icsk->icsk_af_ops->queue_xmit(skb, 0);
+               err = icsk->icsk_af_ops->queue_xmit(skb, sk, 0);
                if (err <= 0)
                        return err;
 
@@ -251,8 +249,8 @@ void dccp_write_xmit(struct sock *sk, int block)
 {
        struct dccp_sock *dp = dccp_sk(sk);
        struct sk_buff *skb;
-       long timeo = 30000;     /* If a packet is taking longer than 2 secs
-                                  we have other issues */
+       long timeo = DCCP_XMIT_TIMEO;   /* If a packet is taking longer than
+                                          this we have other issues */
 
        while ((skb = skb_peek(&sk->sk_write_queue))) {
                int err = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk, skb,
@@ -263,8 +261,10 @@ void dccp_write_xmit(struct sock *sk, int block)
                                sk_reset_timer(sk, &dp->dccps_xmit_timer,
                                                msecs_to_jiffies(err)+jiffies);
                                break;
-                       } else
+                       } else {
                                err = dccp_wait_for_ccid(sk, skb, &timeo);
+                               timeo = DCCP_XMIT_TIMEO;
+                       }
                        if (err) {
                                printk(KERN_CRIT "%s:err at dccp_wait_for_ccid"
                                                 " %d\n", __FUNCTION__, err);
@@ -340,10 +340,7 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,
                return NULL;
        }
 
-       skb->h.raw = skb_push(skb, dccp_header_size);
-
-       dh = dccp_hdr(skb);
-       memset(dh, 0, dccp_header_size);
+       dh = dccp_zeroed_hdr(skb, dccp_header_size);
 
        dh->dccph_sport = inet_sk(sk)->sport;
        dh->dccph_dport = inet_rsk(req)->rmt_port;
@@ -392,10 +389,7 @@ static struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
                return NULL;
        }
 
-       skb->h.raw = skb_push(skb, dccp_header_size);
-
-       dh = dccp_hdr(skb);
-       memset(dh, 0, dccp_header_size);
+       dh = dccp_zeroed_hdr(skb, dccp_header_size);
 
        dh->dccph_sport = inet_sk(sk)->sport;
        dh->dccph_dport = inet_sk(sk)->dport;
@@ -426,7 +420,7 @@ int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code)
                                                      code);
                if (skb != NULL) {
                        memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
-                       err = inet_csk(sk)->icsk_af_ops->queue_xmit(skb, 0);
+                       err = inet_csk(sk)->icsk_af_ops->queue_xmit(skb, sk, 0);
                        if (err == NET_XMIT_CN)
                                err = 0;
                }