Explorar o código

Merge branch 'ssl-improvements' into next

* ssl-improvements:
  * Fix SSL_write() not being used in dequeue_sockets
  * Load errors when reading/writing SSL
Bryan Drewery %!s(int64=15) %!d(string=hai) anos
pai
achega
3e814eda80
Modificáronse 1 ficheiros con 10 adicións e 13 borrados
  1. 10 13
      src/net.c

+ 10 - 13
src/net.c

@@ -1063,14 +1063,13 @@ static int sockread(char *s, int *len)
               x = -1;
               x = -1;
               switch (err) {
               switch (err) {
                 case SSL_ERROR_WANT_READ:
                 case SSL_ERROR_WANT_READ:
-                  errno = EAGAIN;
-                  break;
                 case SSL_ERROR_WANT_WRITE:
                 case SSL_ERROR_WANT_WRITE:
-                  errno = EAGAIN;
-                  break;
                 case SSL_ERROR_WANT_X509_LOOKUP:
                 case SSL_ERROR_WANT_X509_LOOKUP:
                   errno = EAGAIN;
                   errno = EAGAIN;
                   break;
                   break;
+                case SSL_ERROR_SSL:
+                  putlog(LOG_DEBUG, "*", "SSL_read() = %d, %s", err, (char *)ERR_error_string(ERR_get_error(), NULL));
+                  break;
               }
               }
             }
             }
 #endif
 #endif
@@ -1369,14 +1368,13 @@ void tputs(register int z, const char *s, size_t len)
         x = -1;
         x = -1;
         switch (err) {
         switch (err) {
           case SSL_ERROR_WANT_READ:
           case SSL_ERROR_WANT_READ:
-            errno = EAGAIN;
-            break;
           case SSL_ERROR_WANT_WRITE:
           case SSL_ERROR_WANT_WRITE:
-            errno = EAGAIN;
-            break;
           case SSL_ERROR_WANT_X509_LOOKUP:
           case SSL_ERROR_WANT_X509_LOOKUP:
             errno = EAGAIN;
             errno = EAGAIN;
             break;
             break;
+          case SSL_ERROR_SSL:
+            putlog(LOG_DEBUG, "*", "SSL_write() = %d, %s", err, (char *)ERR_error_string(ERR_get_error(), NULL));
+            break;
         }
         }
       }
       }
     } else
     } else
@@ -1473,20 +1471,19 @@ void dequeue_sockets()
       errno = 0;
       errno = 0;
 #ifdef EGG_SSL_EXT
 #ifdef EGG_SSL_EXT
       if (socklist[i].ssl) {
       if (socklist[i].ssl) {
-           x = write(socklist[i].sock, socklist[i].outbuf->data(), socklist[i].outbuf->length());
+           x = SSL_write(socklist[i].ssl, socklist[i].outbuf->data(), socklist[i].outbuf->length());
            if (x < 0) {
            if (x < 0) {
              int err = SSL_get_error(socklist[i].ssl, x);
              int err = SSL_get_error(socklist[i].ssl, x);
              x = -1;
              x = -1;
              switch (err) {
              switch (err) {
                case SSL_ERROR_WANT_READ:
                case SSL_ERROR_WANT_READ:
-                 errno = EAGAIN;
-                 break;
                case SSL_ERROR_WANT_WRITE:
                case SSL_ERROR_WANT_WRITE:
-                 errno = EAGAIN;
-                 break;
                case SSL_ERROR_WANT_X509_LOOKUP:
                case SSL_ERROR_WANT_X509_LOOKUP:
                  errno = EAGAIN;
                  errno = EAGAIN;
                  break;
                  break;
+               case SSL_ERROR_SSL:
+                 putlog(LOG_DEBUG, "*", "SSL_write()/dequeue_sockets() = %d, %s", err, (char *)ERR_error_string(ERR_get_error(), NULL));
+                 break;
              }
              }
            }
            }
       } else
       } else