(I answered my initial question, but I have another below) ... Well, I obviously did SOMETHING dumb in the above code:
Dec 15 03:00:17 devvcache4x00 varnish_key[32132]: Child (32134) Panic message: Assert error in http_GetHdr(), cache_http.c line 266:#012 *Condition(l == strlen(hdr + 1)) not true.*#012thread = (cache-worker)#012ident = Linux,3.4.66-55.43.amzn1.x86_64,x86_64,-smalloc,-smalloc,-hcritbit,epoll#012Backtrace:#012 0x431095: /usr/sbin/varnishd() <blah blah blah> Found several of my problems (and hopefully will save others grief). If you're using VRT_GetHdr, the third parameter stars with \0<octal length of headername><your headername> so my: char *digestdate = VRT_GetHdr(sp, HDR_REQ, "\015x-digestdate:"); has to start with \015 since 'x-digestdate' is 13 characters, and 13 in octal is 15. Questions: 1) Do I need to free any of my temp variables here? Or does varnish clean them up for me? (in my case t, digestepoch, digestdate, and tm) 2) seriously: WTF with _XOpenSource needing to be set to use strptime?? --Jason On Sat, Dec 14, 2013 at 8:58 PM, Jason Price <[email protected]> wrote: > warning: implicit declaration of function ‘strptime’ > > I'm trying to do some basic Date parsing in Varnish. But I get this > warning on compile. > > Here's the relevant bits of VCL: > > C{ > #include <time.h> > #include <sys/time.h> > #include <stdio.h> > #include <stdlib.h> > }C > > sub date_skew { > C{ > time_t t = time(NULL); > time_t digestepoch; > struct tm tm; > char *digestdate = VRT_GetHdr(sp, HDR_REQ, > "\021x-digestdate:"); > if (!strptime(digestdate, "%a, %d %b %Y %H:%M:%S GMT", > &tm)) { > VRT_SetHdr(sp, HDR_REQ, "\010dateparsefail:", > "1\0", vrt_magic_string_end); > } else { > digestepoch = mktime(&tm); > if (abs(digestepoch - t) > 7200) { > VRT_SetHdr(sp, HDR_REQ, > "\010dateskewfail:", "1\0", vrt_magic_string_end); > } > } > }C > } > > Note: Later on, I'll call error if either of the two headers above are set. > > I've discovered that if I add: > > #define _XOPEN_SOURCE 500 > > to the first C{ }C block, it passes muster. Any clue why? (may not be > varnish related). > > Varnish related: will that impact anything else inside varnish? > > --Jason >
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
