src/server/safs/cgi.c

changeset 133
87b405d61f64
parent 126
631aaa01b2b5
child 144
4b546c4f25ed
equal deleted inserted replaced
132:e9afb5387007 133:87b405d61f64
111 ssize_t wr = 0; 111 ssize_t wr = 0;
112 int result = REQ_PROCEED; 112 int result = REQ_PROCEED;
113 while((r = read(cgip.out[0], buf, 4096)) > 0) { 113 while((r = read(cgip.out[0], buf, 4096)) > 0) {
114 if(cgiheader) { 114 if(cgiheader) {
115 size_t pos; 115 size_t pos;
116 int ret = cgi_parse_response(parser, buf, r, &pos); 116 ret = cgi_parse_response(parser, buf, r, &pos);
117 if(ret == -1) { 117 if(ret == -1) {
118 protocol_status(sn, rq, 500, NULL); 118 protocol_status(sn, rq, 500, NULL);
119 result = REQ_ABORTED; 119 result = REQ_ABORTED;
120 break; 120 break;
121 } else if(ret == 0) { 121 } else if(ret == 0) {
257 return -1; 257 return -1;
258 } 258 }
259 259
260 if(!sstrcmp(name, S("status"))) { 260 if(!sstrcmp(name, S("status"))) {
261 sstr_t codestr = value; 261 sstr_t codestr = value;
262 int i; 262 int j;
263 for(i=0;i<codestr.length;i++) { 263 for(j=0;j<codestr.length;j++) {
264 if(!isdigit(codestr.ptr[i])) { 264 if(!isdigit(codestr.ptr[j])) {
265 break; 265 break;
266 } 266 }
267 if(i > 2) { 267 if(j > 2) {
268 break; 268 break;
269 } 269 }
270 } 270 }
271 codestr.ptr[i] = '\0'; 271 codestr.ptr[j] = '\0';
272 272
273 int64_t s = 0; 273 int64_t s = 0;
274 util_strtoint(codestr.ptr, &s); 274 util_strtoint(codestr.ptr, &s);
275 parser->status = (int)s; 275 parser->status = (int)s;
276 276
277 sstr_t msg = sstrtrim(sstrsubs(value, i + 1)); 277 sstr_t msg = sstrtrim(sstrsubs(value, j + 1));
278 278
279 if(msg.length > 0) { 279 if(msg.length > 0) {
280 parser->msg = sstrdup_pool(parser->sn->pool, msg).ptr; 280 parser->msg = sstrdup_pool(parser->sn->pool, msg).ptr;
281 } 281 }
282 } else { 282 } else {

mercurial