projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2f04389
)
Handle WANT_READ more correctly (thanks to Bodo).
author
Ben Laurie
<ben@openssl.org>
Tue, 5 Sep 2000 18:47:57 +0000
(18:47 +0000)
committer
Ben Laurie
<ben@openssl.org>
Tue, 5 Sep 2000 18:47:57 +0000
(18:47 +0000)
demos/state_machine/state_machine.c
patch
|
blob
|
history
diff --git
a/demos/state_machine/state_machine.c
b/demos/state_machine/state_machine.c
index 0eb8e92c0cea55f6bcf1b88e570e8fefb2bdb78f..0140fbca704602d2d38a58dc40ee980f18a4d841 100644
(file)
--- a/
demos/state_machine/state_machine.c
+++ b/
demos/state_machine/state_machine.c
@@
-132,8
+132,6
@@
SSLStateMachine *SSLStateMachine_new(const char *szCertificateFile,
die_unless(pMachine->pSSL);
pMachine->pbioRead=BIO_new(BIO_s_mem());
die_unless(pMachine->pSSL);
pMachine->pbioRead=BIO_new(BIO_s_mem());
- /* Set EOF to return 0 (-1 is the default) */
- BIO_ctrl(pMachine->pbioRead,BIO_C_SET_BUF_MEM_EOF_RETURN,0,NULL);
pMachine->pbioWrite=BIO_new(BIO_s_mem());
pMachine->pbioWrite=BIO_new(BIO_s_mem());
@@
-165,15
+163,36
@@
int SSLStateMachine_read_extract(SSLStateMachine *pMachine,
{
fprintf(stderr,"Doing SSL_accept\n");
n=SSL_accept(pMachine->pSSL);
{
fprintf(stderr,"Doing SSL_accept\n");
n=SSL_accept(pMachine->pSSL);
- if(n < 0)
- SSLStateMachine_print_error(pMachine,"SSL_accept failed");
if(n == 0)
fprintf(stderr,"SSL_accept returned zero\n");
if(n == 0)
fprintf(stderr,"SSL_accept returned zero\n");
- assert(n >= 0);
+ if(n < 0)
+ {
+ int err;
+
+ if((err=SSL_get_error(pMachine->pSSL,n)) == SSL_ERROR_WANT_READ)
+ {
+ fprintf(stderr,"SSL_accept wants more data\n");
+ return 0;
+ }
+
+ SSLStateMachine_print_error(pMachine,"SSL_accept error");
+ exit(7);
+ }
return 0;
}
n=SSL_read(pMachine->pSSL,aucBuf,nBuf);
return 0;
}
n=SSL_read(pMachine->pSSL,aucBuf,nBuf);
+ if(n < 0)
+ {
+ int err=SSL_get_error(pMachine->pSSL,n);
+
+ if(err == SSL_ERROR_WANT_READ)
+ {
+ fprintf(stderr,"SSL_read wants more data\n");
+ return 0;
+ }
+ }
+
fprintf(stderr,"%d bytes of decrypted data read from state machine\n",n);
return n;
}
fprintf(stderr,"%d bytes of decrypted data read from state machine\n",n);
return n;
}