Fix bug with xmpp chat not connecting
The facebook suddenly stopped connecting on my dev machine. I still cannot explain what caused this change in behaviour, but I was finally able to diagnose and fix the problem. Chat was not connecting due to an error in tls_start. The windows function InitializeSecurityContext was returning a SEC_E_INCOMPLETE_MESSAGE status which was being treated as an error. However, the documentation states that this is not an error. This status simply indicates that more data needs to be read. This commit does precisely that -- when SEC_E_INCOMPLETE_MESSAGE we read more data from the socket and call InitializeSecurityContext again.
This commit is contained in:
committed by
Dmitry Podgorny
parent
4f915d7515
commit
886f45584c
@@ -255,10 +255,18 @@ int tls_start(tls_t *tls)
|
||||
NULL, 0, &(tls->hctxt), &sbdout,
|
||||
&ctxtattr, NULL);
|
||||
|
||||
unsigned char *p = sbin[0].pvBuffer;
|
||||
int len = 0;
|
||||
|
||||
while (ret == SEC_I_CONTINUE_NEEDED
|
||||
|| ret == SEC_I_INCOMPLETE_CREDENTIALS) {
|
||||
unsigned char *p = sbin[0].pvBuffer;
|
||||
int len = 0, inbytes = 0;
|
||||
|| ret == SEC_I_INCOMPLETE_CREDENTIALS
|
||||
|| ret == SEC_E_INCOMPLETE_MESSAGE) {
|
||||
int inbytes = 0;
|
||||
|
||||
if (ret != SEC_E_INCOMPLETE_MESSAGE) {
|
||||
len = 0;
|
||||
p = sbin[0].pvBuffer;
|
||||
}
|
||||
|
||||
if (sbdout.pBuffers[0].cbBuffer) {
|
||||
unsigned char *writebuff = sbdout.pBuffers[0].pvBuffer;
|
||||
|
||||
Reference in New Issue
Block a user