Bläddra i källkod

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 15 år sedan
förälder
incheckning
3e814eda80
1 ändrade filer med 10 tillägg och 13 borttagningar
  1. 10 13
      src/net.c

+ 10 - 13
src/net.c

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