if (!session->sess)
{
- ServerInstance->Log(DEBUG,"No session");
CloseSession(session);
return 1;
}
if (session->status == ISSL_HANDSHAKING_WRITE)
{
// The handshake isn't finished, try to finish it.
- ServerInstance->Log(DEBUG,"Finishing handshake");
Handshake(session);
errno = EAGAIN;
return -1;
if (session->status == ISSL_HANDSHAKEN)
{
- ServerInstance->Log(DEBUG,"Send record");
ret = gnutls_record_send(session->sess, sendbuffer, count);
- ServerInstance->Log(DEBUG,"Return: %d", ret);
if (ret == 0)
{
{
if(ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED)
{
- ServerInstance->Log(DEBUG,"Not egain or interrupt, close session");
CloseSession(session);
}
else
{
- ServerInstance->Log(DEBUG,"Again please");
errno = EAGAIN;
}
}
else
{
- ServerInstance->Log(DEBUG,"Trim buffer");
session->outbuf = session->outbuf.substr(ret);
}
}
EventHandler* eh = ServerInstance->FindDescriptor(session->fd);
if (eh)
ServerInstance->SE->WantWrite(eh);
- ServerInstance->Log(DEBUG, "Want write set");
}
virtual void OnBufferFlushed(userrec* user)
{
if (user->GetExt("ssl"))
{
- ServerInstance->Log(DEBUG,"OnBufferFlushed for ssl user");
issl_session* session = &sessions[user->GetFd()];
if (session && session->outbuf.size())
OnRawSocketWrite(user->GetFd(), NULL, 0);
}
else if (strcmp("IS_HSDONE", request->GetId()) == 0)
{
- ServerInstance->Log(DEBUG,"Module checking if handshake is done");
if (ISR->Sock->GetFd() < 0)
return (char*)"OK";
{
if (user->GetExt("ssl"))
{
- ServerInstance->Log(DEBUG,"OnBufferFlushed for ssl user");
issl_session* session = &sessions[user->GetFd()];
if (session && session->outbuf.size())
OnRawSocketWrite(user->GetFd(), NULL, 0);