You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by so...@apache.org on 2005/09/09 16:58:39 UTC

svn commit: r279790 - /httpd/mod_smtpd/trunk/smtp_protocol.c

Author: soc-rian
Date: Fri Sep  9 07:58:37 2005
New Revision: 279790

URL: http://svn.apache.org/viewcvs?rev=279790&view=rev
Log:
If a brigade has a EOS bucket, now write to file everything before EOS

Modified:
    httpd/mod_smtpd/trunk/smtp_protocol.c

Modified: httpd/mod_smtpd/trunk/smtp_protocol.c
URL: http://svn.apache.org/viewcvs/httpd/mod_smtpd/trunk/smtp_protocol.c?rev=279790&r1=279789&r2=279790&view=diff
==============================================================================
--- httpd/mod_smtpd/trunk/smtp_protocol.c (original)
+++ httpd/mod_smtpd/trunk/smtp_protocol.c Fri Sep  9 07:58:37 2005
@@ -465,7 +465,7 @@
       ap_get_module_config(scr->s->module_config,
                            &smtpd_module);
     smtpd_header_filter_ctx header_ctx = {0, scr};
-    int rv, retval = 0;
+    int rv, retval = 0, saw_eos = 0;
     char *tempfile;
     char our_buffer[BUFFER_STR_LEN];
     const char *string;
@@ -546,7 +546,8 @@
     bb = apr_brigade_create(str->p, scr->c->bucket_alloc);
     /* wait until there is no more data
        or until we have too much data */
-    while (total_data < pConfig->max_data) {
+    while ((total_data < pConfig->max_data) &&
+           (!saw_eos)) {
         apr_size_t line_size;
 
         ap_get_brigade(scr->transaction->input_filters, bb, AP_MODE_GETLINE,
@@ -556,8 +557,10 @@
              e != APR_BRIGADE_SENTINEL(bb);
              e = APR_BUCKET_NEXT(e)) {
 
-            if (APR_BUCKET_IS_EOS(e))
-                goto data_done;
+            if (APR_BUCKET_IS_EOS(e)) {
+                saw_eos = 1;
+                break;
+            }
 
             rv = apr_bucket_read(e, &string, &len, APR_BLOCK_READ);
             if (rv != APR_SUCCESS) {
@@ -572,8 +575,6 @@
 
         apr_file_write(tfp, our_buffer, &line_size);
     }
-
- data_done:
     
     str->tfp = tfp;