src/server/daemon/httprequest.c

changeset 45
a24aa388f02f
parent 44
3da1f7b6847f
child 46
636e05eb48f6
equal deleted inserted replaced
44:3da1f7b6847f 45:a24aa388f02f
108 // set default virtual server 108 // set default virtual server
109 rq->vs = request->connection->listener->default_vs.vs; 109 rq->vs = request->connection->listener->default_vs.vs;
110 110
111 /* Pass request line as "clf-request" */ 111 /* Pass request line as "clf-request" */
112 /* TODO: with or without \r\n ? */ 112 /* TODO: with or without \r\n ? */
113 // hack to remove \r\n
114 sstr_t clfreq = request->request_line;
115 while(clfreq.ptr[clfreq.length - 1] < 33) {
116 clfreq.length--;
117 }
118 request->request_line = clfreq;
113 pblock_kvinsert( 119 pblock_kvinsert(
114 pb_key_clf_request, 120 pb_key_clf_request,
115 request->request_line.ptr, 121 request->request_line.ptr,
116 request->request_line.length, 122 request->request_line.length,
117 rq->rq.reqpb); 123 rq->rq.reqpb);
346 rq->phase++; 352 rq->phase++;
347 nsapi_context_next_stage(&rq->context); 353 nsapi_context_next_stage(&rq->context);
348 } 354 }
349 case NSAPIAddLog: { 355 case NSAPIAddLog: {
350 //printf(">>> AddLog\n"); 356 //printf(">>> AddLog\n");
357 r = nsapi_addlog(sn, rq);
358 if(r != REQ_PROCESSING && r != REQ_ABORTED) {
359 break;
360 }
351 rq->phase++; 361 rq->phase++;
352 nsapi_context_next_stage(&rq->context); 362 nsapi_context_next_stage(&rq->context);
353 } 363 }
354 case REQ_FINISH: { 364 case REQ_FINISH: {
355 //printf(">>> Finish\n"); 365 //printf(">>> Finish\n");
667 } 677 }
668 678
669 return ret; 679 return ret;
670 } 680 }
671 681
682 int nsapi_addlog(NSAPISession *sn, NSAPIRequest *rq) {
683 //printf("nsapi_addlog\n");
684 httpd_objset *objset = rq->rq.os;
685
686 if(NCX_OI(rq) == -1) {
687 NCX_OI(rq) = objset->pos - 1;
688 }
689
690 int ret = rq->context.last_req_code;
691 for(int i=NCX_OI(rq);i>=0;i--) {
692 httpd_object *obj = objset->obj[i];
693 dtable *dt = object_get_dtable(obj, NSAPIAddLog);
694
695 // execute directives
696 for(int j=NCX_DI(rq);j<dt->ndir;j++) {
697 if(ret == REQ_NOACTION) {
698 directive *d = dt->dirs[j];
699 ret = nsapi_exec(d, sn, rq);
700 }
701
702 if(ret != REQ_NOACTION) {
703 if(ret == REQ_PROCESSING) {
704 /* save nsapi context */
705 rq->context.objset_index = i;
706
707 /* add +1 to start next round with next function */
708 rq->context.dtable_index = j + 1;
709 }
710
711 return ret;
712 }
713 }
714 }
715
716 return REQ_PROCEED;
717 }
718
672 struct _tpd_data { 719 struct _tpd_data {
673 NSAPISession *sn; 720 NSAPISession *sn;
674 NSAPIRequest *rq; 721 NSAPIRequest *rq;
675 directive *directive; 722 directive *directive;
676 threadpool_t *threadpool; 723 threadpool_t *threadpool;

mercurial