From: Yunkai Zhang <[email protected]>

In client_tx_handler(), when the program goto again, ci->tx_req will be
re-initialized, so it's value would be always not NULL, and then
sys->blocking_conn_list could never be processed.

We sould not call init_tx_hdr(), when goto again.

BTW: adds some code to help us debuging.

Signed-off-by: Yunkai Zhang <[email protected]>
---
 sheep/sdnet.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/sheep/sdnet.c b/sheep/sdnet.c
index b75e52e..190d8de 100644
--- a/sheep/sdnet.c
+++ b/sheep/sdnet.c
@@ -546,8 +546,9 @@ static void client_tx_handler(struct client_info *ci)
        int ret, opt;
        struct sd_rsp *rsp = (struct sd_rsp *)&ci->conn.tx_hdr;
        struct connection *conn, *n;
-again:
+
        init_tx_hdr(ci);
+again:
        if (!ci->tx_req) {
                conn_tx_off(&ci->conn);
                conn_rx_on(&ci->conn);
@@ -598,6 +599,8 @@ again:
        if (ci->conn.c_tx_state == C_IO_END) {
                free_request(ci->tx_req);
                ci->tx_req = NULL;
+               dprintf("connection from: %s:%d\n", ci->conn.ipstr,
+                       ci->conn.port);
                goto again;
        }
 }
-- 
1.7.10.2

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to