Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fixed memleaks of date-related header strings. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
88948d582aef0ade4c6b0f6c87b161ca |
User & Date: | stephan 2008-02-16 18:49:39.000 |
Context
2008-02-20
| ||
17:13 | made hyperlinks in the footer div less ugly. ... (check-in: 89a2d5e8 user: stephan tags: trunk) | |
2008-02-16
| ||
18:49 | Fixed memleaks of date-related header strings. ... (check-in: 88948d58 user: stephan tags: trunk) | |
2008-02-13
| ||
21:33 | Corrected tagxref.srcid/rid confusion in the queries. Links now go where i want them to. ... (check-in: 0ff4e918 user: stephan tags: trunk) | |
Changes
Changes to src/cgi.c.
︙ | ︙ | |||
200 201 202 203 204 205 206 | const char *zPath, /* Path cookie applies to. NULL means "/" */ int lifetime /* Expiration of the cookie in seconds from now */ ){ if( zPath==0 ) zPath = g.zTop; if( lifetime>0 ){ lifetime += (int)time(0); blob_appendf(&extraHeader, | | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | const char *zPath, /* Path cookie applies to. NULL means "/" */ int lifetime /* Expiration of the cookie in seconds from now */ ){ if( zPath==0 ) zPath = g.zTop; if( lifetime>0 ){ lifetime += (int)time(0); blob_appendf(&extraHeader, "Set-Cookie: %s=%t; Path=%s; expires=%z; Version=1\r\n", zName, zValue, zPath, cgi_rfc822_datestamp(lifetime)); }else{ blob_appendf(&extraHeader, "Set-Cookie: %s=%t; Path=%s; Version=1\r\n", zName, zValue, zPath); } } |
︙ | ︙ | |||
285 286 287 288 289 290 291 | iReplyStatus = 304; zReplyStatus = "Not Modified"; } #endif if( fullHttpReply ){ printf("HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus); | > | > > | > | 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | iReplyStatus = 304; zReplyStatus = "Not Modified"; } #endif if( fullHttpReply ){ printf("HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus); char * zDate = cgi_rfc822_datestamp(time(0)); printf("Date: %s\r\n", zDate ); if( zDate[0] ) free( zDate ); printf("Connection: close\r\n"); }else{ printf("Status: %d %s\r\n", iReplyStatus, zReplyStatus); } if( blob_size(&extraHeader)>0 ){ printf("%s", blob_buffer(&extraHeader)); } if( g.isConst ){ /* constant means that the input URL will _never_ generate anything ** else. In the case of attachments, the contents won't change because ** an attempt to change them generates a new attachment number. In the ** case of most /getfile calls for specific versions, the only way the ** content changes is if someone breaks the SCM. And if that happens, a ** stale cache is the least of the problem. So we provide an Expires ** header set to a reasonable period (default: one week). */ /*time_t expires = time(0) + atoi(db_config("constant_expires","604800"));*/ time_t expires = time(0) + 604800; char * zDate = cgi_rfc822_datestamp(expires); printf( "Expires: %s\r\n", zDate ); if( zDate[0] ) free( zDate ); } /* Content intended for logged in users should only be cached in ** the browser, not some shared location. */ printf("Cache-control: private\r\n"); |
︙ | ︙ | |||
1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 | "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 0}; /* ** Returns an RFC822-formatted time string suitable for HTTP headers, among ** other things. ** Returned timezone is always GMT as required by HTTP/1.1 specification. ** ** See http://www.faqs.org/rfcs/rfc822.html, section 5 ** and http://www.faqs.org/rfcs/rfc2616.html, section 3.3. */ char *cgi_rfc822_datestamp(time_t now){ struct tm *pTm; pTm = gmtime(&now); | > > | 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 | "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 0}; /* ** Returns an RFC822-formatted time string suitable for HTTP headers, among ** other things. ** Returned timezone is always GMT as required by HTTP/1.1 specification. ** The returned string is allocated with malloc() and must be freed ** with free(). ** ** See http://www.faqs.org/rfcs/rfc822.html, section 5 ** and http://www.faqs.org/rfcs/rfc2616.html, section 3.3. */ char *cgi_rfc822_datestamp(time_t now){ struct tm *pTm; pTm = gmtime(&now); |
︙ | ︙ |