577 if(sn->pos < sn->cursize) { |
577 if(sn->pos < sn->cursize) { |
578 log_ereport(LOG_WARN, "nsapi_finish_request: TODO: remaining bytes in buffer"); |
578 log_ereport(LOG_WARN, "nsapi_finish_request: TODO: remaining bytes in buffer"); |
579 // TODO: reuse buffer in next request |
579 // TODO: reuse buffer in next request |
580 rq->rq.rq_attr.keep_alive = 0; // workaround |
580 rq->rq.rq_attr.keep_alive = 0; // workaround |
581 } |
581 } |
582 if(!rq->rq.senthdrs) { |
582 |
|
583 if(rq->rq.senthdrs) { |
|
584 // flush buffer and add termination if chunked encoding |
|
585 // is enabled |
|
586 net_finish(sn->sn.csd); |
|
587 } else { |
583 // why was no response sent? |
588 // why was no response sent? |
584 // something must have gone wrong |
589 // something must have gone wrong |
585 // terminate the session |
590 // terminate the session |
586 char *clf_req = pblock_findkeyval(pb_key_clf_request, rq->rq.reqpb); |
591 char *clf_req = pblock_findkeyval(pb_key_clf_request, rq->rq.reqpb); |
587 log_ereport(LOG_WARN, "nsapi_finish_request: no response header: request: %s", clf_req); |
592 log_ereport(LOG_WARN, "nsapi_finish_request: no response header: request: %s", clf_req); |
896 // execute the saf |
901 // execute the saf |
897 ret = nsapi_exec(d, sn, rq); |
902 ret = nsapi_exec(d, sn, rq); |
898 } |
903 } |
899 |
904 |
900 if(ret != REQ_NOACTION) { |
905 if(ret != REQ_NOACTION) { |
901 if(ret == REQ_PROCEED) { |
906 if(ret == REQ_PROCEED && !rq->rq.senthdrs) { |
902 if(rq->rq.senthdrs) { |
907 // a service SAF must send a response |
903 // flush buffer and add termination if chunked encoding |
908 // senthdrs == 0 indicators something has gone |
904 // is enabled |
909 // wrong |
905 net_finish(sn->sn.csd); |
910 protocol_status(&sn->sn, &rq->rq, 500, NULL); |
906 } else { |
911 ret = REQ_ABORTED; |
907 // a service SAF must send a response |
|
908 // senthdrs == 0 indicators something has gone |
|
909 // wrong |
|
910 protocol_status(&sn->sn, &rq->rq, 500, NULL); |
|
911 ret = REQ_ABORTED; |
|
912 } |
|
913 } else if(ret == REQ_PROCESSING) { |
912 } else if(ret == REQ_PROCESSING) { |
914 // save nsapi context |
913 // save nsapi context |
915 rq->context.objset_index = i; |
914 rq->context.objset_index = i; |
916 |
915 |
917 // add +1 to start next round with next function |
916 // add +1 to start next round with next function |