]> git.kaiwu.me - nginx.git/commitdiff
Introduced macros for building length-value transport parameters.
authorSergey Kandaurov <pluknet@nginx.com>
Fri, 29 May 2020 10:05:57 +0000 (13:05 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Fri, 29 May 2020 10:05:57 +0000 (13:05 +0300)
src/event/ngx_event_quic_transport.c

index ef9068432b57353a6c6b018d0c89359e2e626c1c..2beb5d0fea0e66fa20578e68a14b03370c238667 100644 (file)
@@ -1613,6 +1613,18 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp)
         ngx_quic_build_int(&p, value);                                        \
     } while (0)
 
+#define ngx_quic_tp_strlen(id, value)                                         \
+    ngx_quic_varint_len(id)                                                   \
+    + ngx_quic_varint_len(value.len)                                          \
+    + value.len
+
+#define ngx_quic_tp_str(id, value)                                            \
+    do {                                                                      \
+        ngx_quic_build_int(&p, id);                                           \
+        ngx_quic_build_int(&p, value.len);                                    \
+        p = ngx_cpymem(p, value.data, value.len);                             \
+    } while (0)
+
     p = pos;
 
     len = ngx_quic_tp_len(NGX_QUIC_TP_ACTIVE_CONNECTION_ID_LIMIT,
@@ -1639,9 +1651,8 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp)
                            tp->max_idle_timeout);
 
     if (tp->retry) {
-        len += ngx_quic_varint_len(NGX_QUIC_TP_ORIGINAL_CONNECTION_ID);
-        len += ngx_quic_varint_len(tp->original_connection_id.len);
-        len += tp->original_connection_id.len;
+        len += ngx_quic_tp_strlen(NGX_QUIC_TP_ORIGINAL_CONNECTION_ID,
+                                  tp->original_connection_id);
     }
 
     if (pos == NULL) {
@@ -1673,10 +1684,8 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp)
                      tp->max_idle_timeout);
 
     if (tp->retry) {
-        ngx_quic_build_int(&p, NGX_QUIC_TP_ORIGINAL_CONNECTION_ID);
-        ngx_quic_build_int(&p, tp->original_connection_id.len);
-        p = ngx_cpymem(p, tp->original_connection_id.data,
-                       tp->original_connection_id.len);
+        ngx_quic_tp_str(NGX_QUIC_TP_ORIGINAL_CONNECTION_ID,
+                        tp->original_connection_id);
     }
 
     return p - pos;