changeset 8284:2935a11c55b6 quic

Fixed QUIC stream insert and find.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 25 Mar 2020 14:05:40 +0300
parents dadbc66e9fca
children f85749b60e58
files src/event/ngx_event_quic.c
diffstat 1 files changed, 10 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -117,7 +117,7 @@ static ngx_int_t ngx_quic_send_packet(ng
 static void ngx_quic_rbtree_insert_stream(ngx_rbtree_node_t *temp,
     ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
 static ngx_quic_stream_t *ngx_quic_find_stream(ngx_rbtree_t *rbtree,
-    ngx_uint_t key);
+    uint64_t id);
 static ngx_quic_stream_t *ngx_quic_create_stream(ngx_connection_t *c,
     uint64_t id, size_t rcvbuf_size);
 static ssize_t ngx_quic_stream_recv(ngx_connection_t *c, u_char *buf,
@@ -1447,26 +1447,10 @@ ngx_quic_rbtree_insert_stream(ngx_rbtree
     ngx_quic_stream_t   *qn, *qnt;
 
     for ( ;; ) {
-
-        if (node->key < temp->key) {
-
-            p = &temp->left;
-
-        } else if (node->key > temp->key) {
-
-            p = &temp->right;
+        qn = (ngx_quic_stream_t *) node;
+        qnt = (ngx_quic_stream_t *) temp;
 
-        } else { /* node->key == temp->key */
-
-            qn = (ngx_quic_stream_t *) &node->color;
-            qnt = (ngx_quic_stream_t *) &temp->color;
-
-            if (qn->c < qnt->c) {
-                p = &temp->left;
-            } else {
-                p = &temp->right;
-            }
-        }
+        p = (qn->id < qnt->id) ? &temp->left : &temp->right;
 
         if (*p == sentinel) {
             break;
@@ -1484,20 +1468,22 @@ ngx_quic_rbtree_insert_stream(ngx_rbtree
 
 
 static ngx_quic_stream_t *
-ngx_quic_find_stream(ngx_rbtree_t *rbtree, ngx_uint_t key)
+ngx_quic_find_stream(ngx_rbtree_t *rbtree, uint64_t id)
 {
     ngx_rbtree_node_t  *node, *sentinel;
+    ngx_quic_stream_t  *qn;
 
     node = rbtree->root;
     sentinel = rbtree->sentinel;
 
     while (node != sentinel) {
+        qn = (ngx_quic_stream_t *) node;
 
-        if (key == node->key) {
-            return (ngx_quic_stream_t *) node;
+        if (id == qn->id) {
+            return qn;
         }
 
-        node = (key < node->key) ? node->left : node->right;
+        node = (id < qn->id) ? node->left : node->right;
     }
 
     return NULL;