Browse Source

Feature #TASK_QT-18250 提交代码,解决bug

rock.wu 7 months ago
parent
commit
4caa1f2288
1 changed files with 34 additions and 34 deletions
  1. 34 34
      ebpftracer/ebpf/utrace/go/net/grpc.server.probe.bpf.c

+ 34 - 34
ebpftracer/ebpf/utrace/go/net/grpc.server.probe.bpf.c

@@ -449,42 +449,42 @@ int uprobe_http2Server_operateHeader(struct pt_regs *ctx) {
     bpf_probe_read(&header_fields, sizeof(header_fields), (void *)(frame_ptr + frame_fields_pos));
     char key[W3C_KEY_LENGTH] = "traceparent";
     
-    for (s32 i = 0; i < MAX_HEADERS; i++) {
-        if (i >= header_fields.len) {
-            break;
-        }
-        struct hpack_header_field hf = {};
-        long res =
-            bpf_probe_read(&hf, sizeof(hf), (void *)(header_fields.ptr + (i * sizeof(hf))));
-        if (hf.name.len == W3C_KEY_LENGTH && hf.value.len == W3C_VAL_LENGTH) {
-            char current_key[W3C_KEY_LENGTH];
-            bpf_probe_read(current_key, sizeof(current_key), hf.name.str);
-            if (bpf_memcmp(key, current_key, sizeof(key))) {
-                char val[W3C_VAL_LENGTH];
-                bpf_probe_read(val, W3C_VAL_LENGTH, hf.value.str);
-
-                // Get stream id
-                void *headers_frame = NULL;
-                bpf_probe_read(&headers_frame, sizeof(headers_frame), frame_ptr);
-                u32 stream_id = 0;
-                bpf_probe_read(
-                    &stream_id, sizeof(stream_id), (void *)(headers_frame + frame_stream_id_pod));
+    // for (s32 i = 0; i < MAX_HEADERS; i++) {
+    //     if (i >= header_fields.len) {
+    //         break;
+    //     }
+    //     struct hpack_header_field hf = {};
+    //     long res =
+    //         bpf_probe_read(&hf, sizeof(hf), (void *)(header_fields.ptr + (i * sizeof(hf))));
+    //     if (hf.name.len == W3C_KEY_LENGTH && hf.value.len == W3C_VAL_LENGTH) {
+    //         char current_key[W3C_KEY_LENGTH];
+    //         bpf_probe_read(current_key, sizeof(current_key), hf.name.str);
+    //         if (bpf_memcmp(key, current_key, sizeof(key))) {
+    //             char val[W3C_VAL_LENGTH];
+    //             bpf_probe_read(val, W3C_VAL_LENGTH, hf.value.str);
+
+    //             // Get stream id
+    //             void *headers_frame = NULL;
+    //             bpf_probe_read(&headers_frame, sizeof(headers_frame), frame_ptr);
+    //             u32 stream_id = 0;
+    //             bpf_probe_read(
+    //                 &stream_id, sizeof(stream_id), (void *)(headers_frame + frame_stream_id_pod));
                 
-                // 使用 per-cpu array map 存储大变量,避免栈空间超限
-                u32 zero = 0;
-                struct grpc_request_t *grpcReq = bpf_map_lookup_elem(&operate_header_storage, &zero);
-                if (grpcReq == NULL) {
-                    bpf_printk("grpc:server:operateHeader: failed to get storage");
-                    return -1;
-                }
+    //             // 使用 per-cpu array map 存储大变量,避免栈空间超限
+    //             u32 zero = 0;
+    //             struct grpc_request_t *grpcReq = bpf_map_lookup_elem(&operate_header_storage, &zero);
+    //             if (grpcReq == NULL) {
+    //                 bpf_printk("grpc:server:operateHeader: failed to get storage");
+    //                 return -1;
+    //             }
                 
-                // 清零并初始化
-                __builtin_memset(grpcReq, 0, sizeof(struct grpc_request_t));
-                // w3c_string_to_span_context(val, &grpcReq->psc);
-                bpf_map_update_elem(&streamid_to_grpc_events, &stream_id, grpcReq, 0);
-            }
-        }
-    }
+    //             // 清零并初始化
+    //             __builtin_memset(grpcReq, 0, sizeof(struct grpc_request_t));
+    //             // w3c_string_to_span_context(val, &grpcReq->psc);
+    //             bpf_map_update_elem(&streamid_to_grpc_events, &stream_id, grpcReq, 0);
+    //         }
+    //     }
+    // }
 
     return 0;
 }