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