Mark Bergsma has submitted this change and it was merged.

Change subject: Purge buffered data when fflush() doesn't work
......................................................................


Purge buffered data when fflush() doesn't work

Change-Id: I49d7bbffaf43e50ab19a3c7be7df067b352cefce
---
M debian/patches/0010-varnishncsa-udplog.patch
1 file changed, 16 insertions(+), 12 deletions(-)

Approvals:
  Mark Bergsma: Verified; Looks good to me, approved



diff --git a/debian/patches/0010-varnishncsa-udplog.patch 
b/debian/patches/0010-varnishncsa-udplog.patch
index 107ebad..c3d4004 100644
--- a/debian/patches/0010-varnishncsa-udplog.patch
+++ b/debian/patches/0010-varnishncsa-udplog.patch
@@ -1,5 +1,5 @@
 diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
-index ff07ed5..10f5c8a 100644
+index ff07ed5..8991c36 100644
 --- a/bin/varnishncsa/varnishncsa.c
 +++ b/bin/varnishncsa/varnishncsa.c
 @@ -62,6 +62,7 @@
@@ -92,19 +92,23 @@
                        VSB_cat(os, tbuf);
                        break;
  
-@@ -793,8 +816,10 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
+@@ -793,8 +816,14 @@ h_ncsa(void *priv, enum VSL_tag_e tag, unsigned fd,
  
        /* flush the stream */
        VSB_finish(os);
 +      if (fo != stdout && __fpending(fo) + VSB_len(os) > opts->packet_len) {
-+              fflush(fo);
++              if (fflush(fo) != 0) {
++                      /* We can't flush now. Purge the buffered data to
++                       * avoid hogging memory. */
++                      __fpurge(fo);
++              }
 +      }
        fprintf(fo, "%s", VSB_data(os));
 -      fflush(fo);
  
        /* clean up */
        clean_logline(lp);
-@@ -813,15 +838,71 @@ sighup(int sig)
+@@ -813,15 +842,71 @@ sighup(int sig)
  }
  
  static FILE *
@@ -157,11 +161,11 @@
 +              perror("socket");
 +              exit(1);
 +      }
-+
-+      FILE *sf = fdopen(sockfd, "w");
  
 -      if ((of = fopen(ofn, append ? "a" : "w")) == NULL) {
 -              perror(ofn);
++      FILE *sf = fdopen(sockfd, "w");
++
 +      if (sf == NULL) {
 +              perror("fdopen");
                exit(1);
@@ -180,7 +184,7 @@
  }
  
  /*--------------------------------------------------------------------*/
-@@ -832,7 +913,7 @@ usage(void)
+@@ -832,7 +917,7 @@ usage(void)
  
        fprintf(stderr,
            "usage: varnishncsa %s [-aDV] [-n varnish_name] "
@@ -189,7 +193,7 @@
        exit(1);
  }
  
-@@ -843,14 +924,17 @@ main(int argc, char *argv[])
+@@ -843,14 +928,17 @@ main(int argc, char *argv[])
        int a_flag = 0, D_flag = 0, format_flag = 0;
        const char *P_arg = NULL;
        const char *w_arg = NULL;
@@ -210,7 +214,7 @@
                switch (c) {
                case 'a':
                        a_flag = 1;
-@@ -860,7 +944,7 @@ main(int argc, char *argv[])
+@@ -860,7 +948,7 @@ main(int argc, char *argv[])
                                fprintf(stderr, "-f and -F can not be 
combined\n");
                                exit(1);
                        }
@@ -219,7 +223,7 @@
                        format_flag = 1;
                        break;
                case 'F':
-@@ -883,6 +967,9 @@ main(int argc, char *argv[])
+@@ -883,6 +971,9 @@ main(int argc, char *argv[])
                case 'w':
                        w_arg = optarg;
                        break;
@@ -229,7 +233,7 @@
                case 'b':
                        fprintf(stderr, "-b is not valid for varnishncsa\n");
                        exit(1);
-@@ -907,6 +994,11 @@ main(int argc, char *argv[])
+@@ -907,6 +998,11 @@ main(int argc, char *argv[])
                }
        }
  
@@ -241,7 +245,7 @@
        VSL_Arg(vd, 'c', optarg);
  
        if (VSL_Open(vd, 1))
-@@ -927,22 +1019,34 @@ main(int argc, char *argv[])
+@@ -927,22 +1023,34 @@ main(int argc, char *argv[])
        if (pfh != NULL)
                VPF_Write(pfh);
  

-- 
To view, visit https://gerrit.wikimedia.org/r/54683
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I49d7bbffaf43e50ab19a3c7be7df067b352cefce
Gerrit-PatchSet: 2
Gerrit-Project: operations/debs/varnish
Gerrit-Branch: testing/3.0.3plus-rc1
Gerrit-Owner: Mark Bergsma <[email protected]>
Gerrit-Reviewer: Mark Bergsma <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to