@@ -705,15 +705,16 @@ static int prepare_await(const struct lwan *l,
705
705
return - errno ;
706
706
}
707
707
708
- #define FOR_EACH_FD (name_ ) \
709
- for (int name_ = va_arg(ap, int); name_ >= 0; name_ = va_arg(ap, int))
710
-
711
- static void clear_awaitv_flags (struct lwan_connection * conns , va_list ap )
708
+ static void clear_awaitv_flags (struct lwan_connection * conns , va_list ap_orig )
712
709
{
713
- FOR_EACH_FD (fd ) {
710
+ va_list ap ;
711
+
712
+ va_copy (ap , ap_orig );
713
+ for (int fd = va_arg (ap , int ); fd >= 0 ; fd = va_arg (ap , int )) {
714
714
conns [fd ].flags &= ~CONN_ASYNC_AWAITV ;
715
715
LWAN_NO_DISCARD (va_arg (ap , enum lwan_connection_coro_yield ));
716
716
}
717
+ va_end (ap );
717
718
}
718
719
719
720
struct awaitv_state {
@@ -733,14 +734,10 @@ static int prepare_awaitv(struct lwan_request *r,
733
734
.request_conn_yield = CONN_CORO_YIELD ,
734
735
};
735
736
736
- {
737
- va_list copy_to_clear ;
738
- va_copy (ap , copy_to_clear );
739
- clear_awaitv_flags (l -> conns , copy_to_clear );
740
- va_end (copy_to_clear );
741
- }
737
+ clear_awaitv_flags (l -> conns , ap );
742
738
743
- FOR_EACH_FD (await_fd ) {
739
+ for (int await_fd = va_arg (ap , int ); await_fd >= 0 ;
740
+ await_fd = va_arg (ap , int )) {
744
741
struct lwan_connection * conn = & l -> conns [await_fd ];
745
742
enum lwan_connection_coro_yield events =
746
743
va_arg (ap , enum lwan_connection_coro_yield );
@@ -774,8 +771,6 @@ static int prepare_awaitv(struct lwan_request *r,
774
771
return 0 ;
775
772
}
776
773
777
- #undef FOR_EACH_FD
778
-
779
774
int lwan_request_awaitv_any (struct lwan_request * r , ...)
780
775
{
781
776
struct lwan * l = r -> conn -> thread -> lwan ;
0 commit comments