| 741 | } |
| 742 | |
| 743 | void ap_mpm_pod_killpg(ap_pod_t *pod, int num) |
| 744 | { |
| 745 | int i; |
| 746 | apr_status_t rv = APR_SUCCESS; |
| 747 | |
| 748 | /* we don't write anything to the pod here... we assume |
| 749 | * that the would-be reader of the pod has another way to |
| 750 | * see that it is time to die once we wake it up |
| 751 | * |
| 752 | * writing lots of things to the pod at once is very |
| 753 | * problematic... we can fill the kernel pipe buffer and |
| 754 | * be blocked until somebody consumes some bytes or |
| 755 | * we hit a timeout... if we hit a timeout we can't just |
| 756 | * keep trying because maybe we'll never successfully |
| 757 | * write again... but then maybe we'll leave would-be |
| 758 | * readers stranded (a number of them could be tied up for |
| 759 | * a while serving time-consuming requests) |
| 760 | */ |
| 761 | /* Recall: we only worry about IDLE child processes here */ |
| 762 | for (i = 0; i < num && rv == APR_SUCCESS; i++) { |
| 763 | if (ap_scoreboard_image->servers[i][0].status != SERVER_READY || |
| 764 | ap_scoreboard_image->servers[i][0].pid == 0) { |
| 765 | continue; |
| 766 | } |
| 767 | rv = dummy_connection(pod); |
| 768 | } |
| 769 | } |
| 770 | |
| 771 | static const char *dash_k_arg = NULL; |
| 772 | static const char *dash_k_arg_noarg = "noarg"; |
no test coverage detected