宅の士

Results 10 issues of 宅の士

添加win32共享库版本资源是因为标准规范以及便于识别版本信息与某些杀软有文件资源特征要求 添加win32共享库lib前缀是因为hv.dll相比较libhv.dll辨识度更好也利于推广以及搜索引擎关键字匹配 添加unix/linux 环境共享库版本是因为SO-NAME标准化规范兼容性管理 更新nlohmann到23年发布的3.11.3 [问题类似这个issues,在群里也遇到其他人被这个问题给坑了](https://github.com/ithewei/libhv/issues/453) 去除unix/linux环境编译的静态库_static后缀是因为不便于标准编译参数自动.a与.so

能够在各个处理链线程安全的通过返回此值要求无视Http头keep-alive强制关闭连接,甚至可选搭配处理链的回调中将ctx->writer->state = hv::HttpResponseWriter::SEND_END; 实现取消hv内部默认响应http状态包变为自定义响应非http报文或不响应任何数据,让非法访问无法探测外网端口的具体服务性质。

在某些特殊条件下存在 上一次进程意外结束导致没有删除pid文件,并且系统重启下次使用时历史残留的pid文件恰好是其他运行中的进程从而导致误判运行中。 Windows我采用的利用被打开占用中的文件无法remove成功特性规避了此类现象。 Unix我采用的利用文件写锁进程互斥特性规避了此类现象。 同时修复了Windows单纯OpenProcess判断进程结束存在误判现象,变更为GetExitCodeProcess + STILL_ACTIVE解决。 另外支持了下 main_ctx_init 自定义设置 run_dir 因为不是所有程序制作的安装包默认所在运行路径都具备写入权限,Windows通常是SHGetKnownFolderPath获取用户AppData目录,Linux则是getpwuid_r获取的用户家目录,所以支持调用main_ctx_init前自定义设置run_dir很重要。

解决类似“/xxx/xxx.htm#xxx?xxxx”的顺序导致解析结果有错误。

### 添加 hv_normalize_path 函数到 hbase.h 实用的文件路径规范化修剪处理函数,解决路径相关缺陷的关键实现。 ### 支持 http 合法相对路径请求 ### 优化 http 服务器相对路径文件缓存映射键 因为内部文件缓存map的key是文件路径,而未经规范化处理的路径格式存在对相同的文件形成无数种字符变化,易造成原本个位数的真实有效文件被外网恶意请求分配出无数个文件缓存造成内存影响,同时也避免了Windows相比Linux的路径兼容性严格程度不同导致的末尾反斜杠不应该访问成功的请求却能够open成功。 ### 修复误报“/..file”正常文件路径 bug 某些文件确实前面几个点符号造成被误判为相对父路径从而终止了请求。

accept连接频繁的时候这个惊群现象性能影响挺明显的,有什么好的改善方案吗?

满足一些需要对HttpServer通讯层socket套接字hio做一些业务处理操作或计数器类需求。

evpp\Channel.h 中的 onread或onwrite 回调参数使用的 Buffer buf(data, readbytes) 方式传递到 UDP服务或其他服务的onMessage回调处理中时,如果使用参数 Buffer* buf 的 copy,resize 等方法会导致后续运行过程因 hv_realloc 引发冲突崩溃,建议补充相关 const约束 或 文档注意说明 防止误导可以调用从而产生潜在崩溃隐患。

遇到HttpServer loop_thread 中的日志 EventLoop started消息 和 EventLoop stopped消息 日志文件意外分离,经过排查发现原因如下 hlog_set_file或hlog_set_xxxx各种设置后,在httpserver多线程或自己的业务线程运行时,外部执行 -s stop 或 -s restart 触发 signal_handler 或其他形式的原因只要调用 exit 就会触发 atexit 的 hv_destroy_default_logger销毁,此时其他工作线程使用的logger被重置导致开头的hlog_set_各类设置失效。 我发现其他人也遇到过类似现象 https://github.com/ithewei/libhv/issues/171