]> git.kaiwu.me - nginx.git/commitdiff
nginx-0.0.7-2004-07-25-22:34:14 import
authorIgor Sysoev <igor@sysoev.ru>
Sun, 25 Jul 2004 18:34:14 +0000 (18:34 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Sun, 25 Jul 2004 18:34:14 +0000 (18:34 +0000)
auto/lib/conf
auto/lib/make
auto/lib/openssl/conf [new file with mode: 0644]
auto/lib/openssl/make [new file with mode: 0644]
auto/modules
auto/options
auto/summary
src/core/ngx_buf.h
src/core/ngx_connection.h
src/event/ngx_event_openssl.c
src/http/ngx_http_write_filter.c

index 163193fb18d59fa3af3eb6aa4a8acdcef1a684ba..af2e9d7f8e8868c038abc6d82cb6db50aefaaf0d 100644 (file)
@@ -7,6 +7,10 @@ if [ $USE_MD5 = YES ]; then
     . auto/lib/md5/conf
 fi
 
+if [ $USE_OPENSSL = YES ]; then
+    . auto/lib/openssl/conf
+fi
+
 if [ $USE_ZLIB = YES ]; then
     . auto/lib/zlib/conf
 fi
index 2c2d23286bc764488f89a93052690b7a79cd1956..377fc7aa736c690b6ef153eedc93e8e7d4eb512e 100644 (file)
@@ -7,6 +7,10 @@ if [ $MD5 != NONE -a $MD5 != NO -a $MD5 != YES ]; then
     . auto/lib/md5/make
 fi
 
+if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then
+    . auto/lib/openssl/make
+fi
+
 if [ $ZLIB != NONE -a $ZLIB != NO -a $ZLIB != YES ]; then
     . auto/lib/zlib/make
 fi
diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf
new file mode 100644 (file)
index 0000000..28dbf66
--- /dev/null
@@ -0,0 +1,40 @@
+
+if [ $OPENSSL != NONE ]; then
+    CORE_INCS="$CORE_INCS $OPENSSL/include"
+    CORE_DEPS="$CORE_DEPS $OPENSSL_DEPS"
+    CORE_SRCS="$CORE_SRCS $OPENSSL_SRCS"
+
+    case "$CC" in
+        *)
+            have=NGX_OPENSSL . auto/have
+            LINK_DEPS="$LINK_DEPS $OPENSSL/libssl.a $OPENSSL/libcrypto.a"
+            CORE_LIBS="$CORE_LIBS $OPENSSL/libssl.a $OPENSSL/libcrypto.a"
+        ;;
+
+    esac
+
+else
+
+    if [ $PLATFORM != win32 ]; then
+            OPENSSL=NO
+            ngx_lib_cflags=
+
+            ngx_lib_inc="#include <openssl/ssl.h>"
+            ngx_lib="OpenSSL library"
+            ngx_lib_test="SSL_library_init()"
+            ngx_libs="-lssl -lcrypto"
+            . auto/lib/test
+
+
+        if [ $ngx_found = yes ]; then
+            have=NGX_OPENSSL . auto/have
+            CORE_DEPS="$CORE_DEPS $OPENSSL_DEPS"
+            CORE_SRCS="$CORE_SRCS $OPENSSL_SRCS"
+            CORE_LIBS="$CORE_LIBS $ngx_libs"
+            OPENSSL=YES
+            ngx_found=no
+        fi
+
+    fi
+
+fi
diff --git a/auto/lib/openssl/make b/auto/lib/openssl/make
new file mode 100644 (file)
index 0000000..8631ff3
--- /dev/null
@@ -0,0 +1,13 @@
+
+case $PLATFORM in
+    *)
+        echo "$OPENSSL/libssl.a:"                                 >> $MAKEFILE
+        echo " cd $OPENSSL \\"                                   >> $MAKEFILE
+        echo " && CC=\"\$(CC)\" \\"                              >> $MAKEFILE
+        echo " ./config threads no-shared \\"                    >> $MAKEFILE
+        echo " && \$(MAKE)"                                      >> $MAKEFILE
+    ;;
+
+esac
+
+echo                                                              >> $MAKEFILE
index 6a5becd10b681ebb1203f0a5b82639ba65444a9d..4dc9e1e664f89a7d6db060db8a805c50b8e6608e 100644 (file)
@@ -101,16 +101,17 @@ if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
 fi
 
 if [ $HTTP_SSL = YES ]; then
+    USE_OPENSSL=YES
+    have=NGX_HTTP_SSL . auto/have
     HTTP_MODULES="$HTTP_MODULES $HTTP_SSL_MODULE"
     HTTP_DEPS="$HTTP_DEPS $HTTP_SSL_DEPS"
     HTTP_SRCS="$HTTP_SRCS $HTTP_SSL_SRCS"
 
     # STUB: move to auto/libs/ssl after md5
-    have=NGX_HTTP_SSL . auto/have
-    have=NGX_OPENSSL . auto/have
-    CORE_DEPS="$CORE_DEPS $OPENSSL_DEPS"
-    CORE_SRCS="$CORE_SRCS $OPENSSL_SRCS"
-    CORE_LIBS="$CORE_LIBS -lssl -lcrypto"
+    #have=NGX_OPENSSL . auto/have
+    #CORE_DEPS="$CORE_DEPS $OPENSSL_DEPS"
+    #CORE_SRCS="$CORE_SRCS $OPENSSL_SRCS"
+    #CORE_LIBS="$CORE_LIBS -lssl -lcrypto"
 fi
 
 if [ $HTTP_PROXY = YES ]; then
index c506062de32f07e001e9265e7d754daaf3273dce..5aea141d69f67e958a079aa028de6ba6e8a65f28 100644 (file)
@@ -42,6 +42,9 @@ USE_PCRE=NO
 PCRE=NONE
 PCRE_OPT=
 
+USE_OPENSSL=NO
+OPENSSL=NONE
+
 USE_MD5=NO
 MD5=NONE
 MD5_OPT=
@@ -103,6 +106,8 @@ do
         --with-pcre=*)                   PCRE="$value"              ;;
         --with-pcre-opt=*)               PCRE_OPT="$value"          ;;
 
+        --with-openssl=*)                OPENSSL="$value"           ;;
+
         --with-md5=*)                    MD5="$value"               ;;
         --with-md5-opt=*)                MD5_OPT="$value"           ;;
         --with-md5-asm)                  MD5_ASM=YES                ;;
index 9769180b06bcc3b291a9328b09d539076a44d775..482f792fe8a9b08f73ee4c9cff6ad60216a11caa 100644 (file)
@@ -22,6 +22,13 @@ case $MD5 in
     *)     echo " + using md5 library: $MD5" ;;
 esac
 
+case $OPENSSL in
+    YES)   echo " + using system OpenSSL library" ;;
+    NONE)  echo " + OpenSSL library is not used" ;;
+    NO)    echo " + OpenSSL library is not found" ;;
+    *)     echo " + using OpenSSL library: $OPENSSL" ;;
+esac
+
 case $ZLIB in
     YES)   echo " + using system zlib library" ;;
     NONE)  echo " + zlib library is not used" ;;
index feaad4c961bfee9a306cf8e706703b15b4200ad0..1927ed4157489084153b4df0c08f707976bf7120 100644 (file)
@@ -132,7 +132,6 @@ typedef struct {
 
 
 #define NGX_CHAIN_ERROR     (ngx_chain_t *) NGX_ERROR
-#define NGX_CHAIN_AGAIN     (ngx_chain_t *) NGX_AGAIN
 
 
 #define ngx_buf_in_memory(b)        (b->temporary || b->memory || b->mmap)
index bc30b13eafa9164543f276cc166495f258afaed2..c2bdcea4b64d061542c75f6927c50b6e9ce2fb47 100644 (file)
@@ -108,6 +108,7 @@ struct ngx_connection_s {
 
     unsigned            log_error:2;  /* ngx_connection_log_error_e */
 
+    unsigned            buffered:1;
     unsigned            single_connection:1;
     unsigned            pipeline:1;
     unsigned            unexpected_eof:1;
index 9e8dd0b1f025ae204d6b7aefad4abb5660bc001f..0116787a28680f601ae778e0f22b347fe2cf87f3 100644 (file)
@@ -118,13 +118,13 @@ ngx_chain_t *ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in,
                                 off_t limit)
 {
     int          n;
-    ngx_uint_t   flush, last;
+    ngx_uint_t   flush;
     ssize_t      send, size;
     ngx_buf_t   *buf;
 
     buf = c->ssl->buf;
 
-    if (in && in->next == NULL && buf->pos == buf->last && !c->ssl->buffer) {
+    if (in && in->next == NULL && !c->buffered && !c->ssl->buffer) {
 
         /*
          * we avoid a buffer copy if the incoming buf is a single,
@@ -148,14 +148,12 @@ ngx_chain_t *ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in,
 
     send = 0;
     flush = (in == NULL) ? 1 : 0;
-    last = (in == NULL) ? 1 : 0;
 
     for ( ;; ) {
 
         while (in && buf->last < buf->end) {
             if (in->buf->last_buf) {
                 flush = 1;
-                last = 1;
             }
 
             if (ngx_buf_special(in->buf)) {
@@ -226,15 +224,9 @@ ngx_chain_t *ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in,
         }
     }
 
-    if (in) {
-        return in;
-    }
-
-    if (buf->pos == buf->last || !last) {
-        return NULL;
-    }
+    c->buffered = (buf->pos < buf->last) ? 1 : 0;
 
-    return NGX_CHAIN_AGAIN;
+    return in;
 }
 
 
index 412d4f9bca5e80268988a7d0b8a790453fd5db9e..2c0989d0a4ef7e9f079290cf43af60c4e1c392d7 100644 (file)
@@ -7,9 +7,6 @@
 
 typedef struct {
     ngx_chain_t  *out;
-
- /* unsigned      flush:1; */
-    ngx_uint_t    flush;
 } ngx_http_write_filter_ctx_t;
 
 
@@ -119,7 +116,7 @@ ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
         return NGX_AGAIN;
     }
 
-    if (size == 0 && !ctx->flush) {
+    if (size == 0 && !c->buffered) {
         if (!last) {
             ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
                           "the http output chain is empty");
@@ -146,19 +143,13 @@ ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
         return NGX_ERROR;
     }
 
-    if (chain == NGX_CHAIN_AGAIN) {
-        ctx->out = NULL;
-        ctx->flush = 1;
-        return NGX_AGAIN;
-    }
-
     ctx->out = chain;
 
-    if (chain == NULL) {
-        return NGX_OK;
+    if (chain || c->buffered) {
+        return NGX_AGAIN;
     }
 
-    return NGX_AGAIN;
+    return NGX_OK;
 }