@@ -57,10 +57,17 @@
57 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define P(x) cgi_parameter((x),0)
58 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PD(x,y) cgi_parameter((x),(y))
59 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QP(x) quotable_string(cgi_parameter((x),0))
60 60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QPD(x,y) quotable_string(cgi_parameter((x),(y)))
61 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Destinations for output text.
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define CGI_HEADER 0
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define CGI_BODY 1
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
62 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* INTERFACE */
63 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
64 71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
65 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Provide a reliable implementation of a caseless string comparison
66 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function.
@@ -67,40 +74,80 @@
67 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
68 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define stricmp sqlite3StrICmp
69 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
extern int sqlite3StrICmp(const char*, const char*);
70 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The body of the HTTP reply text is stored here.
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The HTTP reply is generated in two pieces: the header and the body.
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These pieces are generated separately because they are not necessary
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** produced in order. Parts of the header might be built after all or
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** part of the body. The header and body are accumulated in separate
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Blob structures then output sequentially once everything has been
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** built.
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The cgi_destination() interface switch between the buffers.
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static Blob *pContent;
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static Blob cgiContent[2] = { BLOB_INITIALIZER, BLOB_INITIALIZER };
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set the destination buffer into which to accumulate CGI content.
73 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static Blob cgiContent = BLOB_INITIALIZER;
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void cgi_destination(int dest){
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( dest ){
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case CGI_HEADER: {
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pContent = &cgiContent[0];
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case CGI_BODY: {
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pContent = &cgiContent[1];
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default: {
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_panic("bad destination");
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75 109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
77 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Append reply content to what already exists.
78 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
79 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_append_content(const char *zData, int nAmt){
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(&cgiContent, zData, nAmt);
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pContent, zData, nAmt);
81 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
82 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
83 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
84 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Reset the HTTP reply text to be an empty string.
85 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
86 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_reset_content(void){
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&cgiContent);
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cgiContent[0]);
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cgiContent[1]);
88 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
89 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
91 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a pointer to the CGI output blob.
92 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
93 128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *cgi_output_blob(void){
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return &cgiContent;
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pContent;
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Combine the header and body of the CGI into a single string.
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void cgi_combine_header_and_body(void){
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int size = blob_size(&cgiContent[1]);
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( size>0 ){
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(&cgiContent[0], blob_buffer(&cgiContent[1]), size);
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cgiContent[1]);
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
95 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96 142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
97 143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
98 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a pointer to the HTTP reply text.
99 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *cgi_extract_content(int *pnAmt){
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return blob_buffer(&cgiContent);
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_combine_header_and_body();
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return blob_buffer(&cgiContent[0]);
102 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
105 152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Additional information used to form the HTTP reply
106 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -119,12 +166,13 @@
119 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
120 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
121 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the reply content to the specified BLOB.
122 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
123 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_set_content(Blob *pNewContent){
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&cgiContent);
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgiContent = *pNewContent;
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_reset_content();
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_destination(CGI_HEADER);
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgiContent[0] = *pNewContent;
126 174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(pNewContent);
127 175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
128 176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
130 178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the reply status code
@@ -220,10 +268,11 @@
220 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
221 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
222 270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do a normal HTTP reply
223 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
224 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_reply(void){
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int total_size;
225 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iReplyStatus<=0 ){
226 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iReplyStatus = 200;
227 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zReplyStatus = "OK";
228 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
229 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -273,19 +322,27 @@
273 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf( "Content-Type: %s; charset=%s\r\n", zContentType, nl_langinfo(CODESET));
274 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
275 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf( "Content-Type: %s; charset=ISO-8859-1\r\n", zContentType);
276 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
277 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strcmp(zContentType,"application/x-fossil")==0 ){
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_compress(&cgiContent, &cgiContent);
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_combine_header_and_body();
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_compress(&cgiContent[0], &cgiContent[0]);
279 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
280 330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
281 331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iReplyStatus != 304 ) {
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- printf( "Content-Length: %d\r\n", blob_size(&cgiContent) );
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ total_size = blob_size(&cgiContent[0]) + blob_size(&cgiContent[1]);
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf( "Content-Length: %d\r\n", total_size);
283 334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
284 335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("\r\n");
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(&cgiContent)>0 && iReplyStatus != 304 ){
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fwrite(blob_buffer(&cgiContent), 1, blob_size(&cgiContent), stdout);
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( total_size>0 && iReplyStatus != 304 ){
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i, size;
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<2; i++){
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size = blob_size(&cgiContent[i]);
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( size>0 ){
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fwrite(blob_buffer(&cgiContent[i]), 1, size, stdout);
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
287 344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
288 345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CGIDEBUG(("DONE\n"));
289 346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
290 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
291 348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -611,10 +668,11 @@
611 668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
612 669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_init(void){
613 670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
614 671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zType;
615 672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int len;
673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_destination(CGI_BODY);
616 674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = (char*)P("QUERY_STRING");
617 675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z ){
618 676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = mprintf("%s",z);
619 677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
add_param_list(z, '&');
620 678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -939,20 +997,20 @@
939 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extra formatting capabilities such as %h and %t.
940 998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
941 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_printf(const char *zFormat, ...){
942 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
943 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_start(ap,zFormat);
944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- vxprintf(&cgiContent,zFormat,ap);
1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ vxprintf(pContent,zFormat,ap);
945 1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
946 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
947 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
948 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
949 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine works like "vprintf" except that it has the
950 1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** extra formatting capabilities such as %h and %t.
951 1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
952 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_vprintf(const char *zFormat, va_list ap){
953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- vxprintf(&cgiContent,zFormat,ap);
1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ vxprintf(pContent,zFormat,ap);
954 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
955 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
956 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
957 1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
958 1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Send a reply indicating that the HTTP request was malformed
@@ -976,11 +1034,11 @@
976 1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf(
977 1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<html><body><h1>Internal Server Error</h1>\n"
978 1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<plaintext>"
979 1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
980 1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_start(ap, zFormat);
981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- vxprintf(&cgiContent,zFormat,ap);
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ vxprintf(pContent,zFormat,ap);
982 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
983 1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_reply();
984 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exit(1);
985 1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
986 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
987 1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!