libhv icon indicating copy to clipboard operation
libhv copied to clipboard

🔥 比libevent/libuv/asio更易用的网络库。A c/c++ network library for developing TCP/UDP/SSL/HTTP/WebSocket/MQTT client/server.

Results 126 libhv issues
Sort by recently updated
recently updated
newest added

如何使用事件循环处理icmp包? 范例里的 icmp.c 看起来和 hloop 没什么关系 想写一个简单的网管软件,需要长时间ping多个地址

原子谓词也可能导致唤醒问题 参考: 1. https://www.modernescpp.com/index.php/c-core-guidelines-be-aware-of-the-traps-of-condition-variables/ 2. https://www.cnblogs.com/fenghualong/p/13855360.html

Users may want to control which loop is used in HttpClient to handle responses, so they can create fewer threads and write less code for managing concurrency.

多线程模拟多个客户端;内部实现参考的websocket的案例,增加的就是内部while循环发消息,一直保持通信;减掉的是事件循环,hv::WebSocketClient无参构造 构造的100个客户端 ![Image](https://github.com/user-attachments/assets/d924e7fb-0fff-496a-a8e1-ad75431906e6) 总会open->close->open;尽管最后状态是open,但是为什么会close? ![Image](https://github.com/user-attachments/assets/83193194-2630-4408-b095-46ef5998db8e) 连接的100个客户端,仅有几个客户端在发送消息? ![Image](https://github.com/user-attachments/assets/7b907ae7-b19d-4183-a4b3-b086bd507115)

vsnprintf用法貌似不对 ``` #include #include int vsnprintf(char *str, size_t size, const char *format, va_list ap); ``` 1. 如果输出的字符串长度小于 size,返回实际写入的字符数(不包括字符串结束符 '\0')。 2. 如果输出的字符串长度大于等于 size,返回如果有足够空间时本应写入的字符数(不包括字符串结束符 '\0')。这意味着返回值可能会大于 size - 1。 hlog.c下面这段代码没有考虑第二种长度超出size的情况,造成len+=..后len值错误 ``` case 's':...

能够在各个处理链线程安全的通过返回此值要求无视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 某些文件确实前面几个点符号造成被误判为相对父路径从而终止了请求。