src/server/safs/cgi.c

changeset 145
1c93281ca4bf
parent 144
4b546c4f25ed
child 149
aa016efb9ad7
equal deleted inserted replaced
144:4b546c4f25ed 145:1c93281ca4bf
81 env = cgi_specific_vars(sn, rq, args, env, 1); 81 env = cgi_specific_vars(sn, rq, args, env, 1);
82 82
83 CGIProcess cgip; 83 CGIProcess cgip;
84 int ret = cgi_start(&cgip, path, argv, env); 84 int ret = cgi_start(&cgip, path, argv, env);
85 if(ret != REQ_PROCEED) { 85 if(ret != REQ_PROCEED) {
86 util_env_free(env);
87 cgi_free_argv(argv);
86 return ret; 88 return ret;
87 } 89 }
88 90
89 util_env_free(env); 91 util_env_free(env);
92 cgi_free_argv(argv);
90 93
91 char buf[4096]; // I/O buffer 94 char buf[4096]; // I/O buffer
92 ssize_t r; 95 ssize_t r;
93 96
94 if(content_length > 0) { 97 if(content_length > 0) {
244 * 1: successfully parsed lines 247 * 1: successfully parsed lines
245 * 2: cgi response header complete (empty line) 248 * 2: cgi response header complete (empty line)
246 * -1: error 249 * -1: error
247 */ 250 */
248 static int parse_lines(CGIResponseParser *parser, char *buf, size_t len, int *pos) { 251 static int parse_lines(CGIResponseParser *parser, char *buf, size_t len, int *pos) {
252 UcxAllocator a = util_pool_allocator(parser->sn->pool);
249 sstr_t name; 253 sstr_t name;
250 sstr_t value; 254 sstr_t value;
251 WSBool space = TRUE; 255 WSBool space = TRUE;
252 int i; 256 int i;
253 257
268 return -1; 272 return -1;
269 } 273 }
270 } 274 }
271 value = sstrn(buf + value_begin, i - value_begin); 275 value = sstrn(buf + value_begin, i - value_begin);
272 276
273 name = sstrlower(sstrtrim(name)); 277 name = sstrlower_a(&a, sstrtrim(name));
274 value = sstrtrim(value); 278 value = sstrtrim(value);
275 279
276 if(name.length == 0 || value.length == 0) { 280 if(name.length == 0 || value.length == 0) {
277 return -1; 281 return -1;
278 } 282 }

mercurial