• Home
  • Raw
  • Download

Lines Matching refs:cgi

80 	struct lws_cgi *cgi;  in lws_cgi()  local
87 wsi->http.cgi = lws_zalloc(sizeof(*wsi->http.cgi), "new cgi"); in lws_cgi()
88 if (!wsi->http.cgi) { in lws_cgi()
93 wsi->http.cgi->response_code = HTTP_STATUS_OK; in lws_cgi()
95 cgi = wsi->http.cgi; in lws_cgi()
96 cgi->wsi = wsi; /* set cgi's owning wsi */ in lws_cgi()
97 sum = cgi->summary; in lws_cgi()
98 sumend = sum + strlen(cgi->summary) - 1; in lws_cgi()
107 lwsl_debug("%s: adding cgi %p to list\n", __func__, wsi->http.cgi); in lws_cgi()
108 cgi->cgi_list = pt->http.cgi_list; in lws_cgi()
109 pt->http.cgi_list = cgi; in lws_cgi()
118 wsi->http.cgi->gzip_inflate = 1; in lws_cgi()
301 if (!wsi->http.cgi->gzip_inflate && in lws_cgi()
311 wsi->http.cgi->post_in_expected = in lws_cgi()
330 wsi->http.cgi->implied_chunked = 1; in lws_cgi()
331 wsi->http.cgi->explicitly_chunked = 1; in lws_cgi()
359 info.plsp = &wsi->http.cgi->lsp; in lws_cgi()
370 wsi->http.cgi->lsp = lws_spawn_piped(&info); in lws_cgi()
371 if (!wsi->http.cgi->lsp) { in lws_cgi()
383 wsi->user_space, NULL, cgi->lsp->child_pid); in lws_cgi()
389 lws_free_set_NULL(wsi->http.cgi); in lws_cgi()
422 if (!wsi->http.cgi) in lws_cgi_write_split_stdout_headers()
433 wsi->http.cgi->response_code); in lws_cgi_write_split_stdout_headers()
435 wsi->http.cgi->response_code, in lws_cgi_write_split_stdout_headers()
438 if (!wsi->http.cgi->explicitly_chunked && in lws_cgi_write_split_stdout_headers()
439 !wsi->http.cgi->content_length && in lws_cgi_write_split_stdout_headers()
465 p = wsi->http.cgi->headers_start; in lws_cgi_write_split_stdout_headers()
466 wsi->http.cgi->headers_start = in lws_cgi_write_split_stdout_headers()
467 wsi->http.cgi->headers_pos; in lws_cgi_write_split_stdout_headers()
468 wsi->http.cgi->headers_dumped = in lws_cgi_write_split_stdout_headers()
469 wsi->http.cgi->headers_start; in lws_cgi_write_split_stdout_headers()
473 while (p < wsi->http.cgi->headers_start) { in lws_cgi_write_split_stdout_headers()
515 p + 1 == wsi->http.cgi->headers_start) { in lws_cgi_write_split_stdout_headers()
525 (unsigned char **)&wsi->http.cgi->headers_pos, in lws_cgi_write_split_stdout_headers()
526 (unsigned char *)wsi->http.cgi->headers_end)) in lws_cgi_write_split_stdout_headers()
540 (unsigned char **)&wsi->http.cgi->headers_pos, in lws_cgi_write_split_stdout_headers()
541 (unsigned char *)wsi->http.cgi->headers_end)) { in lws_cgi_write_split_stdout_headers()
555 n = wsi->http.cgi->headers_pos - in lws_cgi_write_split_stdout_headers()
556 wsi->http.cgi->headers_dumped; in lws_cgi_write_split_stdout_headers()
563 if (wsi->http.cgi->headers_dumped + n != in lws_cgi_write_split_stdout_headers()
564 wsi->http.cgi->headers_pos) { in lws_cgi_write_split_stdout_headers()
570 (unsigned char *)wsi->http.cgi->headers_dumped, in lws_cgi_write_split_stdout_headers()
576 wsi->http.cgi->headers_dumped += n; in lws_cgi_write_split_stdout_headers()
577 if (wsi->http.cgi->headers_dumped == in lws_cgi_write_split_stdout_headers()
578 wsi->http.cgi->headers_pos) { in lws_cgi_write_split_stdout_headers()
580 lws_free_set_NULL(wsi->http.cgi->headers_buf); in lws_cgi_write_split_stdout_headers()
594 if (!wsi->http.cgi->headers_buf) { in lws_cgi_write_split_stdout_headers()
599 wsi->http.cgi->headers_buf = lws_malloc(n + LWS_PRE, in lws_cgi_write_split_stdout_headers()
601 if (!wsi->http.cgi->headers_buf) { in lws_cgi_write_split_stdout_headers()
607 wsi->http.cgi->headers_start = in lws_cgi_write_split_stdout_headers()
608 wsi->http.cgi->headers_buf + LWS_PRE; in lws_cgi_write_split_stdout_headers()
609 wsi->http.cgi->headers_pos = wsi->http.cgi->headers_start; in lws_cgi_write_split_stdout_headers()
610 wsi->http.cgi->headers_dumped = wsi->http.cgi->headers_pos; in lws_cgi_write_split_stdout_headers()
611 wsi->http.cgi->headers_end = in lws_cgi_write_split_stdout_headers()
612 wsi->http.cgi->headers_buf + n - 1; in lws_cgi_write_split_stdout_headers()
615 wsi->http.cgi->match[n] = 0; in lws_cgi_write_split_stdout_headers()
616 wsi->http.cgi->lp = 0; in lws_cgi_write_split_stdout_headers()
620 n = lws_get_socket_fd(wsi->http.cgi->lsp->stdwsi[LWS_STDOUT]); in lws_cgi_write_split_stdout_headers()
632 if (wsi->http.cgi->headers_pos >= in lws_cgi_write_split_stdout_headers()
633 wsi->http.cgi->headers_end - 4) { in lws_cgi_write_split_stdout_headers()
643 wsi->http.cgi->match[1], wsi->hdr_state); in lws_cgi_write_split_stdout_headers()
654 if (!significant_hdr[n][wsi->http.cgi->match[n]] && in lws_cgi_write_split_stdout_headers()
656 wsi->http.cgi->lp < (int)sizeof(wsi->http.cgi->l) - 1) { in lws_cgi_write_split_stdout_headers()
657 wsi->http.cgi->l[wsi->http.cgi->lp++] = c; in lws_cgi_write_split_stdout_headers()
658 wsi->http.cgi->l[wsi->http.cgi->lp] = '\0'; in lws_cgi_write_split_stdout_headers()
661 wsi->http.cgi->content_length = in lws_cgi_write_split_stdout_headers()
662 atoll(wsi->http.cgi->l); in lws_cgi_write_split_stdout_headers()
665 wsi->http.cgi->response_code = in lws_cgi_write_split_stdout_headers()
666 atol(wsi->http.cgi->l); in lws_cgi_write_split_stdout_headers()
668 wsi->http.cgi->response_code); in lws_cgi_write_split_stdout_headers()
675 if (significant_hdr[n][wsi->http.cgi->match[n]]) { in lws_cgi_write_split_stdout_headers()
677 significant_hdr[n][wsi->http.cgi->match[n]]) in lws_cgi_write_split_stdout_headers()
678 wsi->http.cgi->match[n]++; in lws_cgi_write_split_stdout_headers()
680 wsi->http.cgi->match[n] = 0; in lws_cgi_write_split_stdout_headers()
687 *wsi->http.cgi->headers_pos++ = '\x0d'; in lws_cgi_write_split_stdout_headers()
689 *wsi->http.cgi->headers_pos++ = c; in lws_cgi_write_split_stdout_headers()
695 [wsi->http.cgi->match[ in lws_cgi_write_split_stdout_headers()
698 wsi->http.cgi->explicitly_chunked = 1; in lws_cgi_write_split_stdout_headers()
704 wsi->http.cgi->match[SIGNIFICANT_HDR_LOCATION]]) { in lws_cgi_write_split_stdout_headers()
706 wsi->http.cgi->response_code = 302; in lws_cgi_write_split_stdout_headers()
710 *wsi->http.cgi->headers_pos++ = c; in lws_cgi_write_split_stdout_headers()
728 wsi->http.cgi->match[n] = 0; in lws_cgi_write_split_stdout_headers()
729 wsi->http.cgi->lp = 0; in lws_cgi_write_split_stdout_headers()
738 wsi->http.cgi->content_length); in lws_cgi_write_split_stdout_headers()
750 *wsi->http.cgi->headers_pos++ = c; in lws_cgi_write_split_stdout_headers()
753 wsi->http.cgi->match[n] = 0; in lws_cgi_write_split_stdout_headers()
754 wsi->http.cgi->lp = 0; in lws_cgi_write_split_stdout_headers()
768 m = !wsi->http.cgi->implied_chunked && !wsi->mux_substream && in lws_cgi_write_split_stdout_headers()
770 !wsi->http.cgi->content_length; in lws_cgi_write_split_stdout_headers()
771 n = lws_get_socket_fd(wsi->http.cgi->lsp->stdwsi[LWS_STDOUT]); in lws_cgi_write_split_stdout_headers()
808 if (wsi->http.cgi->content_length_seen + n == in lws_cgi_write_split_stdout_headers()
809 wsi->http.cgi->content_length) in lws_cgi_write_split_stdout_headers()
818 wsi->http.cgi->content_length_seen += n; in lws_cgi_write_split_stdout_headers()
831 wsi->http.cgi->cgi_transaction_over = 1; in lws_cgi_write_split_stdout_headers()
859 if (!wsi->http.cgi || !wsi->http.cgi->lsp) in lws_cgi_kill()
862 pid = wsi->http.cgi->lsp->child_pid; in lws_cgi_kill()
864 args.stdwsi = &wsi->http.cgi->lsp->stdwsi[0]; in lws_cgi_kill()
865 lws_spawn_piped_kill_child_process(wsi->http.cgi->lsp); in lws_cgi_kill()
869 m = wsi->http.cgi->being_closed; in lws_cgi_kill()
884 struct lws_cgi **pcgi, *cgi = NULL; in lws_cgi_kill_terminated() local
899 cgi = *pcgi; in lws_cgi_kill_terminated()
902 if (cgi->lsp->child_pid <= 0) in lws_cgi_kill_terminated()
906 if (cgi->headers_buf) in lws_cgi_kill_terminated()
910 if (cgi->content_length > cgi->content_length_seen) in lws_cgi_kill_terminated()
913 if (cgi->content_length) { in lws_cgi_kill_terminated()
916 cgi->wsi, in lws_cgi_kill_terminated()
917 (unsigned long long)cgi->content_length_seen); in lws_cgi_kill_terminated()
927 if (n == cgi->lsp->child_pid) { in lws_cgi_kill_terminated()
931 if (!cgi->content_length) { in lws_cgi_kill_terminated()
937 cgi->chunked_grace++; in lws_cgi_kill_terminated()
942 cgi->lsp->child_pid = 0; in lws_cgi_kill_terminated()
943 lws_cgi_kill(cgi->wsi); in lws_cgi_kill_terminated()
947 cgi = NULL; in lws_cgi_kill_terminated()
950 if (!cgi) { in lws_cgi_kill_terminated()
962 cgi = *pcgi; in lws_cgi_kill_terminated()
965 if (cgi->lsp->child_pid <= 0) in lws_cgi_kill_terminated()
969 if (cgi->chunked_grace) { in lws_cgi_kill_terminated()
970 cgi->chunked_grace++; in lws_cgi_kill_terminated()
971 if (cgi->chunked_grace < 2) in lws_cgi_kill_terminated()
977 if (cgi->headers_buf) in lws_cgi_kill_terminated()
981 if (cgi->content_length > cgi->content_length_seen) in lws_cgi_kill_terminated()
984 if (cgi->content_length) in lws_cgi_kill_terminated()
987 cgi->wsi, in lws_cgi_kill_terminated()
988 (unsigned long long)cgi->content_length_seen); in lws_cgi_kill_terminated()
991 if (waitpid(cgi->lsp->child_pid, &status, WNOHANG) > 0) { in lws_cgi_kill_terminated()
993 if (!cgi->content_length) { in lws_cgi_kill_terminated()
999 cgi->chunked_grace++; in lws_cgi_kill_terminated()
1004 __func__, cgi->lsp->child_pid); in lws_cgi_kill_terminated()
1007 cgi->lsp->child_pid = 0; in lws_cgi_kill_terminated()
1008 lws_cgi_kill(cgi->wsi); in lws_cgi_kill_terminated()
1020 if (!wsi->http.cgi) in lws_cgi_get_stdwsi()
1023 return wsi->http.cgi->lsp->stdwsi[ch]; in lws_cgi_get_stdwsi()
1033 lwsl_debug("%s: remove cgi %p from list\n", __func__, wsi->http.cgi); in lws_cgi_remove_and_kill()
1035 if (*pcgi == wsi->http.cgi) { in lws_cgi_remove_and_kill()
1042 if (wsi->http.cgi->headers_buf) { in lws_cgi_remove_and_kill()
1044 lws_free_set_NULL(wsi->http.cgi->headers_buf); in lws_cgi_remove_and_kill()
1047 wsi->http.cgi->being_closed = 1; in lws_cgi_remove_and_kill()