Skip to content

Conversation

@ning2510
Copy link

@ning2510 ning2510 commented Nov 20, 2022

1. 添加 CMakeLists.txt

添加 cmake,解决 #64 ,需把 main.c 改为 main.cpp

2. 修改逻辑问题

问题所在
这里减的是 m_iv[0].iov_len - bytes_have_send,应该是 m_write_idx - bytes_have_send,说一下原因:

  • 如果第一个 iovec 的头部信息数据长度需要多次使用 writev 才能发送完的话,那么 m_iv[0].iov_len 就会重复减去相同的值
  • 举个例子:假设第一个 iovec 的头部信息数据长度为 90,每次 writev 发送的长度为 30。第一次调用 writevm_iv[0].iov_len = m_iv[0].iov_len - 30 = 90 - 30 = 60,第二次后 m_iv[0].iov_len = m_iv[0].iov_len - 60 = 60 - 60 = 0,实际还有 30 没有发送

m_write_idx 第一个 iovec 的头部信息数据长度,而且 m_write_idx 在循环发送的过程中是不会改变的,同时也应该改上面的 if 语句的 m_iv[0].iov_len 也改为 m_write_idx

Modify the update logic of m_iv[0].iov_len
Add CMakeLists.txt
@ning2510 ning2510 changed the title http_conn::write中更新m_iv[0].iov_len的逻辑不对——raw_version分支 添加cmake,并发现 http_conn::write中更新m_iv[0].iov_len的逻辑不对——raw_version分支 Nov 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant