- int error;
- rc = SSL_read(srv->ssl, inbuffer, bsiz - 1);
- if (rc <= 0)
- switch (error = SSL_get_error(srv->ssl, rc))
- {
- case SSL_ERROR_ZERO_RETURN:
- break;
- case SSL_ERROR_SYSCALL:
- printf("%s\n", ERR_error_string(ERR_get_error(), NULL));
- rc = -1;
- break;
- case SSL_ERROR_SSL:
- printf("%s\nTLS terminated\n", ERR_error_string(ERR_get_error(), NULL));
- SSL_shutdown(srv->ssl);
- SSL_free(srv->ssl);
- srv->tls_active = FALSE;
- { /* OpenSSL leaves it in restartsys mode */
- struct sigaction act = {.sa_handler = sigalrm_handler_flag, .sa_flags = 0};
- sigalrm_seen = 1;
- sigaction(SIGALRM, &act, NULL);
+ int error;
+ DEBUG { printf("call SSL_read\n"); fflush(stdout); }
+ rc = SSL_read(srv->ssl, inbufferp, bsiz - (inbufferp - inbuffer) - 1);
+ DEBUG { printf("SSL_read: %d\n", rc); fflush(stdout); }
+ if (rc <= 0)
+ switch (error = SSL_get_error(srv->ssl, rc))
+ {
+ case SSL_ERROR_ZERO_RETURN:
+ break;
+ case SSL_ERROR_SYSCALL:
+ printf("%s\n", ERR_error_string(ERR_get_error(), NULL));
+ rc = -1;
+ break;
+ case SSL_ERROR_SSL:
+ printf("%s\nTLS terminated\n", ERR_error_string(ERR_get_error(), NULL));
+ SSL_shutdown(srv->ssl);
+ SSL_free(srv->ssl);
+ srv->tls_active = FALSE;
+ { /* OpenSSL leaves it in restartsys mode */
+ struct sigaction act = {.sa_handler = sigalrm_handler_flag, .sa_flags = 0};
+ sigalrm_seen = 1;
+ sigaction(SIGALRM, &act, NULL);
+ }
+ *inptr = 0;
+ DEBUG { printf("go round\n"); fflush(stdout); }
+ goto nextinput;
+ default:
+ printf("SSL error code %d\n", error);