mirror of
https://github.com/sogou/workflow.git
synced 2026-10-21 06:36:56 +08:00
Merge pull request #464 from Barenboim/windows
fix SSLWrapper feedback (windows)
This commit is contained in:
+33
-28
@@ -235,29 +235,6 @@ int SSLWrapper::append(const void *buf, size_t *size)
|
||||
return this->append_message();
|
||||
}
|
||||
|
||||
int ServiceSSLWrapper::append(const void *buf, size_t *size)
|
||||
{
|
||||
char *ptr;
|
||||
long len;
|
||||
long n;
|
||||
|
||||
if (__ssl_handshake(buf, size, this->ssl, &ptr, &len) < 0)
|
||||
return -1;
|
||||
|
||||
if (len > 0)
|
||||
n = this->feedback(ptr, len);
|
||||
else
|
||||
n = 0;
|
||||
|
||||
if (n == len)
|
||||
return this->append_message();
|
||||
|
||||
if (n >= 0)
|
||||
errno = EAGAIN;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int SSLWrapper::feedback(const void *buf, size_t size)
|
||||
{
|
||||
BIO *wbio = SSL_get_wbio(this->ssl);
|
||||
@@ -282,12 +259,40 @@ int SSLWrapper::feedback(const void *buf, size_t size)
|
||||
}
|
||||
|
||||
len = BIO_get_mem_data(wbio, &ptr);
|
||||
if (len > 0)
|
||||
return this->ProtocolWrapper::feedback(ptr, len);
|
||||
else if (len == 0)
|
||||
return 0;
|
||||
else
|
||||
if (len >= 0)
|
||||
{
|
||||
ret = this->ProtocolWrapper::feedback(ptr, len);
|
||||
if (ret == len)
|
||||
return size;
|
||||
|
||||
if (ret > 0)
|
||||
errno = ENOBUFS;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ServiceSSLWrapper::append(const void *buf, size_t *size)
|
||||
{
|
||||
char *ptr;
|
||||
long len;
|
||||
long n;
|
||||
|
||||
if (__ssl_handshake(buf, size, this->ssl, &ptr, &len) < 0)
|
||||
return -1;
|
||||
|
||||
if (len > 0)
|
||||
n = this->feedback(ptr, len);
|
||||
else
|
||||
n = 0;
|
||||
|
||||
if (n == len)
|
||||
return this->append_message();
|
||||
|
||||
if (n >= 0)
|
||||
errno = EAGAIN;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user