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) { |
|
583 // why was no response sent? |
|
584 // something must have gone wrong |
|
585 // terminate the session |
|
586 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); |
|
588 rq->rq.rq_attr.keep_alive = 0; |
|
589 } |
582 |
590 |
583 if(rq->rq.rq_attr.keep_alive) { |
591 if(rq->rq.rq_attr.keep_alive) { |
584 SessionHandler *sh = sn->connection->session_handler; |
592 SessionHandler *sh = sn->connection->session_handler; |
585 sh->keep_alive(sh, sn->connection); |
593 sh->keep_alive(sh, sn->connection); |
586 /* |
594 /* |
889 ret = nsapi_exec(d, sn, rq); |
897 ret = nsapi_exec(d, sn, rq); |
890 } |
898 } |
891 |
899 |
892 if(ret != REQ_NOACTION) { |
900 if(ret != REQ_NOACTION) { |
893 if(ret == REQ_PROCEED) { |
901 if(ret == REQ_PROCEED) { |
894 // flush buffer and add termination if chunked encoding |
902 if(rq->rq.senthdrs) { |
895 // is enabled |
903 // flush buffer and add termination if chunked encoding |
896 net_finish(sn->sn.csd); |
904 // is enabled |
|
905 net_finish(sn->sn.csd); |
|
906 } else { |
|
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 } |
897 } else if(ret == REQ_PROCESSING) { |
913 } else if(ret == REQ_PROCESSING) { |
898 // save nsapi context |
914 // save nsapi context |
899 rq->context.objset_index = i; |
915 rq->context.objset_index = i; |
900 |
916 |
901 // add +1 to start next round with next function |
917 // add +1 to start next round with next function |