From 38ae94f8ce7d54368de2cd80730e79ce985b127b Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 6 Dec 2006 19:53:56 +0000 Subject: [PATCH] A cleaner method of handling login redirection; just use the existing reconnection mechanism. This avoids the problems of trying to reuse the TCP connection structure before the old connection has cleanly exited. --- src/net/tcp/iscsi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c index 424bbcf4..665b9765 100644 --- a/src/net/tcp/iscsi.c +++ b/src/net/tcp/iscsi.c @@ -735,8 +735,11 @@ static void iscsi_rx_login_response ( struct iscsi_session *iscsi, void *data, /* Check for login redirection */ if ( response->status_class == ISCSI_STATUS_REDIRECT ) { DBG ( "iSCSI %p redirecting to new server\n", iscsi ); - iscsi_close ( iscsi, -EINPROGRESS ); - tcp_connect ( &iscsi->tcp ); + /* Close the TCP connection; our TCP closed() method + * will take care of the reconnection once this + * connection has been cleanly terminated. + */ + tcp_close ( &iscsi->tcp ); return; }