You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I use ssl_read in loop, when there is no data left on the server it hangs for few min or infinitely and then returns -1
I am new to socket programming, and know I am missing something very basic, but I have tried a whole day for solution and found nothing similar.
Consider in the following code which will make the issue clear:
// Initialize SSL and create SSL context
SSL_library_init();
SSL_CTX *ctx = SSL_CTX_new(TLS_method());
// Create SSL connection
SSL *ssl = SSL_new(ctx);
// Set socket file descriptor
SSL_set_fd(ssl, sockfd);
// sending message to server
ssize_t sent_size = SSL_write(ssl, request, strlen(request));
// error checking code
// Perform SSL_read operations
while (1)
{
char buffer[BUFFER_SIZE];
int bytes_read = SSL_read(ssl, buffer, BUFFER_SIZE - 1);
if (bytes_read > 0)
{
// no problem until we are here
// Process received data
}
else if (bytes_read == 0)
{
// Here I got stuck, at some point I will always reach here, so does this really mean a connection closed or
// there is no data left to read, and if there is no data left and I will continue to read it will return -1
// which mean SSL error while I was just trying to complete my loop
// SSL connection closed by peer
break;
}
else
{
// Handle SSL read error
}
}
While there is data available there is no issue everything is going fine but as soon as data is complete, it goes hanging on SSL_read() operation it just waiting for few min to hour and then return -1. While I expect it will return 0 and I will simply break out of while loop.
I used timeout and thought of using non-blocking socket but that will just be hiding the original problem.
Please tell what might be wrong regarding my SSL code. I have not set any specific option while creating SSL connection, just used default behavior.
The text was updated successfully, but these errors were encountered:
When I use ssl_read in loop, when there is no data left on the server it hangs for few min or infinitely and then returns -1
I am new to socket programming, and know I am missing something very basic, but I have tried a whole day for solution and found nothing similar.
Consider in the following code which will make the issue clear:
While there is data available there is no issue everything is going fine but as soon as data is complete, it goes hanging on SSL_read() operation it just waiting for few min to hour and then return -1. While I expect it will return 0 and I will simply break out of while loop.
I used timeout and thought of using non-blocking socket but that will just be hiding the original problem.
Please tell what might be wrong regarding my SSL code. I have not set any specific option while creating SSL connection, just used default behavior.
The text was updated successfully, but these errors were encountered: