Hi Fujita,

Thanks for fixing the issue.

The fix is working fine, I have verified it in my setup.
Receiving a FIN/ACK in response to FIN sent from Openflow Client.

Regards,
Guru Chaitanya Perakam

-----Original Message-----
From: FUJITA Tomonori [mailto:[email protected]] 
Sent: Tuesday, July 28, 2015 7:34 PM
To: Guru Chaitanya Perakam
Cc: [email protected]
Subject: Re: [Ryu-devel] Ryu manager doesn't send FIN/ACK in response to FIN

On Mon, 27 Jul 2015 07:15:37 +0000
Guru Chaitanya Perakam <[email protected]> wrote:

> Hi,
> 
> Issue:
> =====
> When an Openflow client closes the connection with Ryu Manager by sending a 
> FIN, only ACK is sent in response.
> 
> FIN/ACK is not received by Openflow client. The TCP connection on Ryu Manager 
> is moved to CLOSE-WAIT state.
>  
> This causes our switch (Openflow client) to wait in FIN-WAIT-2 state and then 
> sends a Reset to Ryu Manager after some timeout.
> Again when the switch uses the same source port for reconnection, the 
> connection fails.
> 
> PFA packet dissections text file "ryn-find-issue.txt" with this mail.

Thanks for the detailed report!

The following patch fixes the issue?

diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py index 
225c21f..577c6da 100644
--- a/ryu/controller/controller.py
+++ b/ryu/controller/controller.py
@@ -165,6 +165,7 @@ class Datapath(ofproto_protocol.ProtocolDesc):
             ret = self.socket.recv(required_len)
             if len(ret) == 0:
                 self.is_active = False
+                self.socket.close()
                 break
             buf += ret
             while len(buf) >= required_len:

------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to