| 861 | } |
| 862 | |
| 863 | int h2_beam_is_complete(h2_bucket_beam *beam) |
| 864 | { |
| 865 | int rv = 0; |
| 866 | |
| 867 | apr_thread_mutex_lock(beam->lock); |
| 868 | if (beam->closed) |
| 869 | rv = 1; |
| 870 | else { |
| 871 | apr_bucket *b; |
| 872 | for (b = H2_BLIST_FIRST(&beam->buckets_to_send); |
| 873 | b != H2_BLIST_SENTINEL(&beam->buckets_to_send); |
| 874 | b = APR_BUCKET_NEXT(b)) { |
| 875 | if (APR_BUCKET_IS_EOS(b)) { |
| 876 | rv = 1; |
| 877 | break; |
| 878 | } |
| 879 | } |
| 880 | } |
| 881 | apr_thread_mutex_unlock(beam->lock); |
| 882 | return rv; |
| 883 | } |