@@ -118,25 +118,23 @@ IO_ERR Socket::read(char* buffer, size_t length, size_t& actualLength, bool msgP
118118 // RecordTime record("Socket.read");
119119 if (!enableSSL_) {
120120#ifdef _WIN32
121- actualLength = recv (handle_, buffer, static_cast < int >(length), msgPeek ? MSG_PEEK : 0 ) ;
122- RECORD_READ ( buffer, actualLength );
123- if (actualLength < 0 ) {
121+ actualLength = 0 ;
122+ int ret = recv (handle_, buffer, static_cast < int >(length), msgPeek ? MSG_PEEK : 0 );
123+ if (ret == SOCKET_ERROR ) {
124124 DLogger::Error (" socket read error" , actualLength);
125- }
126- if (actualLength == 0 )
127- return DISCONNECTED;
128- else if (actualLength != (size_t )SOCKET_ERROR)
129- return OK;
130- else {
131- actualLength = 0 ;
132125 int error = WSAGetLastError ();
133126 if (error == WSAENOTCONN || error == WSAESHUTDOWN || error == WSAENETRESET)
134127 return DISCONNECTED;
135- else if (error == WSAEWOULDBLOCK)
128+ if (error == WSAEWOULDBLOCK)
136129 return NODATA;
137- else
138- return OTHERERR;
130+ return OTHERERR;
139131 }
132+ if (ret == 0 ) {
133+ return DISCONNECTED;
134+ }
135+ actualLength = ret;
136+ RECORD_READ (buffer, ret);
137+ return OK;
140138#else // Linux
141139readdata:
142140 actualLength = recv (handle_, (void *)buffer, length, (blocking_ ? 0 : MSG_DONTWAIT) | (msgPeek ? MSG_PEEK : 0 ));
@@ -156,20 +154,20 @@ IO_ERR Socket::read(char* buffer, size_t length, size_t& actualLength, bool msgP
156154 } else {
157155#ifdef USE_OPENSSL
158156readdata2:
159- int ret = SSL_read (ssl_, buffer, static_cast <int >(length));
157+ int ret = SSL_read ((SSL*) ssl_, buffer, static_cast <int >(length));
160158 if (ret > 0 ) {
161159 actualLength = ret;
162160 RECORD_READ (buffer, ret);
163161 } else {
164162 DLogger::Error (" socket read error" , ret);
165- ret = SSL_get_error (ssl_, ret);
163+ ret = SSL_get_error ((SSL*) ssl_, ret);
166164 if (ret == SSL_ERROR_WANT_READ) goto readdata2;
167165 LOG_ERR (" Socket(SSL)::read err =" + std::to_string (ret));
168166 return OTHERERR;
169167 }
170168#endif
171- return OK;
172169 }
170+ return OK;
173171}
174172
175173IO_ERR Socket::write (const char * buffer, size_t length, size_t & actualLength){
@@ -218,12 +216,12 @@ IO_ERR Socket::write(const char* buffer, size_t length, size_t& actualLength){
218216 else {
219217#ifdef USE_OPENSSL
220218 senddata2:
221- int ret = SSL_write (ssl_, (const void *)buffer, static_cast <int >(length));
219+ int ret = SSL_write ((SSL*) ssl_, (const void *)buffer, static_cast <int >(length));
222220 if (ret > 0 ) {
223221 actualLength = ret;
224222 RECORD_WRITE (buffer, ret);
225223 } else {
226- int err = SSL_get_error (ssl_, ret);
224+ int err = SSL_get_error ((SSL*) ssl_, ret);
227225 if (err == SSL_ERROR_WANT_WRITE) goto senddata2;
228226 DLogger::Error (" socket write error" , err);
229227 LOG_ERR (" Socket(SSL)::write err =" + std::to_string (err));
@@ -387,10 +385,10 @@ IO_ERR Socket::close(){
387385#ifdef USE_OPENSSL
388386 if (ssl_ != nullptr ) {
389387 // shutdown until it done.
390- while (SSL_shutdown (ssl_) == 0 ) {
388+ while (SSL_shutdown ((SSL*) ssl_) == 0 ) {
391389 Util::sleep (10 );
392390 }
393- SSL_free (ssl_);
391+ SSL_free ((SSL*) ssl_);
394392 ssl_ = nullptr ;
395393 }
396394#endif
@@ -407,7 +405,7 @@ IO_ERR Socket::close(){
407405 }
408406#ifdef USE_OPENSSL
409407 if (ctx_ != nullptr ) {
410- SSL_CTX_free (ctx_);
408+ SSL_CTX_free ((SSL_CTX*) ctx_);
411409 ctx_ = nullptr ;
412410 }
413411#endif
@@ -552,7 +550,7 @@ int Socket::getErrorCode(){
552550}
553551
554552#ifdef USE_OPENSSL
555- SSL_CTX * Socket::initCTX (){
553+ void * Socket::initCTX (){
556554 const SSL_METHOD* method;
557555 SSL_CTX* ctx;
558556
@@ -576,11 +574,11 @@ bool Socket::sslInit() {
576574 if (ctx_ == nullptr ) {
577575 return false ;
578576 }
579- ssl_ = SSL_new (ctx_);
577+ ssl_ = SSL_new ((SSL_CTX*) ctx_);
580578 if (ssl_ == nullptr ) {
581579 return false ;
582580 }
583- SSL_set_fd (ssl_, static_cast <int >(handle_));
581+ SSL_set_fd ((SSL*) ssl_, static_cast <int >(handle_));
584582 return true ;
585583}
586584
@@ -589,7 +587,7 @@ IO_ERR Socket::sslConnect() {
589587 if (!sslInit ()) {
590588 return OTHERERR;
591589 }
592- if (SSL_connect (ssl_) == -1 ) {
590+ if (SSL_connect ((SSL*) ssl_) == -1 ) {
593591 if (!blocking_) {
594592 // TODO: solve error
595593 }
@@ -599,10 +597,10 @@ IO_ERR Socket::sslConnect() {
599597 return OK;
600598}
601599
602- void Socket::showCerts (SSL *ssl) {
600+ void Socket::showCerts (void *ssl) {
603601 X509 *cert;
604602 char *line;
605- cert = SSL_get_peer_certificate (ssl); /* get the server's certificate */
603+ cert = SSL_get_peer_certificate ((SSL*) ssl); /* get the server's certificate */
606604 if ( cert != NULL ){
607605 std::cout << " Server certificates:\n " ;
608606 line = X509_NAME_oneline (X509_get_subject_name (cert), 0 , 0 );
0 commit comments