Hi 
I need your help on SSL_shutdown(). . The Client send "close notify" to
server  first to initiates the close connection. This first call return
0 , which it is correctly. Then The Client call SSL_shutdown again to
wait for "close notify" form Server. The second SSL_shutdown call RETURN
0 , INSTEAD OF 1. I DO KNOW WHY??. PLEASE HELP.

The following Close() function to handle SSL_shutdown(). The  client
send out 5 messages, then call Close() function. The Server 's SSL_read
return  SSL_ERROR_ZERO_RETURN, then call Close(). The Server behaves
correctly.


AT Client side:
     . Call 1 to set socket to blocking.
     . Call 2, return err == 0 which it is right. ( send close notify).
     . Call 3
     . Call 4 (waiting for close notify from Server) with RETURN 0
INSTEAD OF 1. why ???

At Server side:
     . Call 1 to set socket to blocking.
     . Call 2, return err== 1, complete shutdown
     . Jump to 8 which it is supposed to be.
     . 
     

Close()
{
   1.setSocketToBlocking()
 
   2. int err = SSL_shutdown()

  3. If  (err == 0) // not complete yet
  4. {    err = SSL_shutdown()
  5.      if (err == 1)  // complete shutdown
  6.      {  
             --close all..;
           }
           else
           {
             cout << "Error" << endl;
           }
 7.  }
 8.   else if (err== 1)
 9.  {          
             --close all..;
      }
      else if ( err < 0)
      {
           cout << "ERROR.." << endl;
      }    
}
            
}

Thank You.
TD

Reply via email to