mirror of https://github.com/openssl/openssl.git
				
				
				
			QUIC QSM: Clean up SEND_STREAM/RECV_STREAM handling
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20765)
This commit is contained in:
		
							parent
							
								
									723cbe8a73
								
							
						
					
					
						commit
						e8b9f63235
					
				|  | @ -107,18 +107,6 @@ struct quic_stream_st { | |||
|     unsigned int    deleted                 : 1; | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * Marks a stream for STOP_SENDING. aec is the application error code (AEC). | ||||
|  * This can only fail if it has already been called. | ||||
|  */ | ||||
| int ossl_quic_stream_stop_sending(QUIC_STREAM *s, uint64_t aec); | ||||
| 
 | ||||
| /*
 | ||||
|  * Marks a stream for reset. aec is the application error code (AEC). | ||||
|  * This can only fail if it has already been called. | ||||
|  */ | ||||
| int ossl_quic_stream_reset(QUIC_STREAM *s, uint64_t aec); | ||||
| 
 | ||||
| /* 
 | ||||
|  * QUIC Stream Map | ||||
|  * =============== | ||||
|  | @ -239,10 +227,24 @@ void ossl_quic_stream_map_set_rr_stepping(QUIC_STREAM_MAP *qsm, size_t stepping) | |||
| 
 | ||||
| /*
 | ||||
|  * Resets the sending part of a stream. | ||||
|  * | ||||
|  * Returns 1 if the sending part of a stream was not already reset. | ||||
|  * Returns 0 otherwise, which need not be considered an error. | ||||
|  */ | ||||
| void ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                  QUIC_STREAM *qs, | ||||
|                                                  uint64_t aec); | ||||
| int ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                 QUIC_STREAM *qs, | ||||
|                                                 uint64_t aec); | ||||
| 
 | ||||
| /*
 | ||||
|  * Marks the receiving part of a stream for STOP_SENDING. | ||||
|  * | ||||
|  * Returns  1 if the receiving part of a stream was not already marked for | ||||
|  * STOP_SENDING. | ||||
|  * Returns 0 otherwise, which need not be considered an error. | ||||
|  */ | ||||
| int ossl_quic_stream_map_stop_sending_recv_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                 QUIC_STREAM *qs, | ||||
|                                                 uint64_t aec); | ||||
| 
 | ||||
| /*
 | ||||
|  * Adds a stream to the accept queue. | ||||
|  |  | |||
|  | @ -2380,9 +2380,11 @@ void ossl_quic_channel_set_incoming_stream_auto_reject(QUIC_CHANNEL *ch, | |||
| 
 | ||||
| void ossl_quic_channel_reject_stream(QUIC_CHANNEL *ch, QUIC_STREAM *qs) | ||||
| { | ||||
|     ossl_quic_stream_stop_sending(qs, ch->incoming_stream_auto_reject_aec); | ||||
|     ossl_quic_stream_reset(qs, ch->incoming_stream_auto_reject_aec); | ||||
|     ossl_quic_stream_map_stop_sending_recv_part(&ch->qsm, qs, | ||||
|                                                 ch->incoming_stream_auto_reject_aec); | ||||
| 
 | ||||
|     ossl_quic_stream_map_reset_stream_send_part(&ch->qsm, qs, | ||||
|                                                 ch->incoming_stream_auto_reject_aec); | ||||
|     qs->deleted = 1; | ||||
| 
 | ||||
|     ossl_quic_stream_map_update_state(&ch->qsm, qs); | ||||
|  |  | |||
|  | @ -10,32 +10,6 @@ | |||
| #include "internal/quic_stream_map.h" | ||||
| #include "internal/nelem.h" | ||||
| 
 | ||||
| /* QUIC Stream
 | ||||
|  * =========== | ||||
|  */ | ||||
| 
 | ||||
| int ossl_quic_stream_stop_sending(QUIC_STREAM *s, uint64_t aec) | ||||
| { | ||||
|     if (s->stop_sending) | ||||
|         return 0; | ||||
| 
 | ||||
|     s->stop_sending_aec     = aec; | ||||
|     s->stop_sending         = 1; | ||||
|     s->want_stop_sending    = 1; | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| int ossl_quic_stream_reset(QUIC_STREAM *s, uint64_t aec) | ||||
| { | ||||
|     if (s->reset_stream) | ||||
|         return 0; | ||||
| 
 | ||||
|     s->reset_stream_aec     = aec; | ||||
|     s->reset_stream         = 1; | ||||
|     s->want_reset_stream    = 1; | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * QUIC Stream Map | ||||
|  * =============== | ||||
|  | @ -284,18 +258,34 @@ void ossl_quic_stream_map_update_state(QUIC_STREAM_MAP *qsm, QUIC_STREAM *s) | |||
|         stream_map_mark_inactive(qsm, s); | ||||
| } | ||||
| 
 | ||||
| void ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                  QUIC_STREAM *qs, | ||||
|                                                  uint64_t aec) | ||||
| int ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                 QUIC_STREAM *qs, | ||||
|                                                 uint64_t aec) | ||||
| { | ||||
|     if (qs->reset_stream) | ||||
|         return; | ||||
|         return 0; | ||||
| 
 | ||||
|     qs->reset_stream        = 1; | ||||
|     qs->reset_stream_aec    = aec; | ||||
|     qs->want_reset_stream   = 1; | ||||
| 
 | ||||
|     ossl_quic_stream_map_update_state(qsm, qs); | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| int ossl_quic_stream_map_stop_sending_recv_part(QUIC_STREAM_MAP *qsm, | ||||
|                                                 QUIC_STREAM *qs, | ||||
|                                                 uint64_t aec) | ||||
| { | ||||
|     if (qs->stop_sending) | ||||
|         return 0; | ||||
| 
 | ||||
|     qs->stop_sending        = 1; | ||||
|     qs->stop_sending_aec    = aec; | ||||
|     qs->want_stop_sending   = 1; | ||||
| 
 | ||||
|     ossl_quic_stream_map_update_state(qsm, qs); | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| QUIC_STREAM *ossl_quic_stream_map_peek_accept_queue(QUIC_STREAM_MAP *qsm) | ||||
|  |  | |||
|  | @ -1470,7 +1470,8 @@ static int run_script(const struct script_op *script) | |||
|                                                                  op->arg0))) | ||||
|                     goto err; | ||||
| 
 | ||||
|                 if (!TEST_true(ossl_quic_stream_stop_sending(s, op->arg1))) | ||||
|                 if (!TEST_true(ossl_quic_stream_map_stop_sending_recv_part(h.args.qsm, | ||||
|                                                                            s, op->arg1))) | ||||
|                     goto err; | ||||
| 
 | ||||
|                 ossl_quic_stream_map_update_state(h.args.qsm, s); | ||||
|  | @ -1487,7 +1488,8 @@ static int run_script(const struct script_op *script) | |||
|                                                                  op->arg0))) | ||||
|                     goto err; | ||||
| 
 | ||||
|                 if (!TEST_true(ossl_quic_stream_reset(s, op->arg1))) | ||||
|                 if (!TEST_true(ossl_quic_stream_map_reset_stream_send_part(h.args.qsm, | ||||
|                                                                            s, op->arg1))) | ||||
|                     goto err; | ||||
| 
 | ||||
|                 ossl_quic_stream_map_update_state(h.args.qsm, s); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue