[DCCP]: Fix logfile overflow
This patch fixes data being spewed into the logs continually. As the code stood if there was a large queue and long delays timeo would go down to zero and never get reset. This fixes it by resetting timeo. Put constant into header as well. Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
This commit is contained in:
		
					parent
					
						
							
								fec5b80e49
							
						
					
				
			
			
				commit
				
					
						f45b3ec481
					
				
			
		
					 2 changed files with 7 additions and 3 deletions
				
			
		| 
						 | 
					@ -62,6 +62,8 @@ extern void dccp_time_wait(struct sock *sk, int state, int timeo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DCCP_RTO_MAX ((unsigned)(120 * HZ)) /* FIXME: using TCP value */
 | 
					#define DCCP_RTO_MAX ((unsigned)(120 * HZ)) /* FIXME: using TCP value */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DCCP_XMIT_TIMEO 30000 /* Time/msecs for blocking transmit per packet */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* is seq1 < seq2 ? */
 | 
					/* is seq1 < seq2 ? */
 | 
				
			||||||
static inline int before48(const u64 seq1, const u64 seq2)
 | 
					static inline int before48(const u64 seq1, const u64 seq2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -249,8 +249,8 @@ void dccp_write_xmit(struct sock *sk, int block)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct dccp_sock *dp = dccp_sk(sk);
 | 
						struct dccp_sock *dp = dccp_sk(sk);
 | 
				
			||||||
	struct sk_buff *skb;
 | 
						struct sk_buff *skb;
 | 
				
			||||||
	long timeo = 30000; 	/* If a packet is taking longer than 2 secs
 | 
						long timeo = DCCP_XMIT_TIMEO; 	/* If a packet is taking longer than
 | 
				
			||||||
				   we have other issues */
 | 
										   this we have other issues */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while ((skb = skb_peek(&sk->sk_write_queue))) {
 | 
						while ((skb = skb_peek(&sk->sk_write_queue))) {
 | 
				
			||||||
		int err = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk, skb,
 | 
							int err = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk, skb,
 | 
				
			||||||
| 
						 | 
					@ -261,8 +261,10 @@ void dccp_write_xmit(struct sock *sk, int block)
 | 
				
			||||||
				sk_reset_timer(sk, &dp->dccps_xmit_timer,
 | 
									sk_reset_timer(sk, &dp->dccps_xmit_timer,
 | 
				
			||||||
						msecs_to_jiffies(err)+jiffies);
 | 
											msecs_to_jiffies(err)+jiffies);
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			} else
 | 
								} else {
 | 
				
			||||||
				err = dccp_wait_for_ccid(sk, skb, &timeo);
 | 
									err = dccp_wait_for_ccid(sk, skb, &timeo);
 | 
				
			||||||
 | 
									timeo = DCCP_XMIT_TIMEO;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (err) {
 | 
								if (err) {
 | 
				
			||||||
				printk(KERN_CRIT "%s:err at dccp_wait_for_ccid"
 | 
									printk(KERN_CRIT "%s:err at dccp_wait_for_ccid"
 | 
				
			||||||
						 " %d\n", __FUNCTION__, err);
 | 
											 " %d\n", __FUNCTION__, err);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue