{"record":{"id":"50c1c2cd755dd104","repo":"lionsoul2014/ip2region","slug":"ip2region-search-failed-for-ipv4-mapped-ipv6-addre","errorCode":null,"errorMessage":"ip2region search failed for IPv4-mapped IPv6 address","messagePattern":"ip2region search failed for IPv4-mapped IPv6 address","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"binding/nginx/src/ngx_http_ip2region_module.c","lineNumber":438,"sourceCode":"                    addr += p[13] << 16;\n                    addr += p[14] << 8;\n                    addr += p[15];\n                    // 按照xdb_parse_v4_ip中的格式重新组织字节\n                    {\n                        bytes_ip_t ip_bytes[4];\n                        ip_bytes[0] = (addr >> 24) & 0xFF;\n                        ip_bytes[1] = (addr >> 16) & 0xFF;\n                        ip_bytes[2] = (addr >> 8) & 0xFF;\n                        ip_bytes[3] = addr & 0xFF;\n                        err = xdb_search(searcher_ptr, ip_bytes, 4, &region);\n                    }\n                    if (err == 0) {\n                        v->data = (unsigned char *)region.value;\n                        v->len = strlen(region.value);\n                        xdb_region_buffer_free(&region);\n                        return NGX_OK;\n                    } else {\n                        ngx_log_error(NGX_LOG_WARN, r->connection->log, 0,\n                                      \"ip2region search failed for IPv4-mapped IPv6 address\");\n                    }\n                }\n            } else {\n                // 处理纯IPv6地址\n                if (ip2region_conf->v6_searcher != NULL) {\n                    searcher_ptr = &ip2region_conf->v6_searcher->searcher;\n                    bytes_ip_t ip6_bytes[16];\n                    if (p != NULL) {\n                        memcpy(ip6_bytes, p, 16);\n                        err = xdb_search(searcher_ptr, ip6_bytes, 16, &region);\n                        if (err == 0) {\n                            v->data = (unsigned char *)region.value;\n                            v->len = strlen(region.value);\n                            xdb_region_buffer_free(&region);\n                            return NGX_OK;\n                        } else {\n                            ngx_log_error(NGX_LOG_WARN, r->connection->log, 0,","sourceCodeStart":420,"sourceCodeEnd":456,"githubUrl":"https://github.com/lionsoul2014/ip2region/blob/c1a1fc7d5941760db3f8431dc05c48cf7f0e30a1/binding/nginx/src/ngx_http_ip2region_module.c#L420-L456","documentation":"nginx runtime warning: xdb_search returned non-zero for an IPv4-mapped IPv6 address (::ffff:a.b.c.d) after the module re-packed the low 32 bits into a v4 byte array — the v4 lookup itself failed (typically a corrupted index or a v4 searcher in a bad state); the variable is left unset and the request continues.","triggerScenarios":"Thrown at binding/nginx/src/ngx_http_ip2region_module.c:438 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the v4 searcher and xdb file integrity (verify the db)","Ensure the v4 db covers the mapped address range or accept empty results","Monitor the warn log rate to detect a systematically broken searcher"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c1a1fc7d5941760db3f8431dc05c48cf7f0e30a1","analyzedAt":"2026-09-02T16:58:39.988Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T21:17:11.164Z"}