1 Star 0 Fork 0

dragonfly/online

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
PROBLEMS 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
Michael Meeks 提交于 2019-02-13 18:33 . Tweak problemms.
- The URL of the document to view and/or edit is specified both in the
HTTP GET and in the 'load' message. This is redundant, and adds
completely unnecessary, hard to define, and hard to test, states
that the server and clients can be in. For instance:
- Is it an error to send a different URL in the 'load' message than
the one in the GET? (Of course it is. Do we check that? Do we have
a unit test to make sure it stays an error?)
- What messages are accepted by the server before the 'load'? What
messages are sent to the client? Do they make sense, if it is only
the 'load' that actually fully completes the association of a
session with a document? Do we have unit tests for this?
- What if one client connects, and then before it has sent the
'load' message, another client connects specifying the same
document in the GET, and also sends a 'load' message. Which client
gets the edit lock? Is that arbitrary or specified? Do we have a
unit test for it?
- Etc
- There is way too much of busy waiting for fairly arbitrarily chosen
timeout periods in the code.
With "busy wait" here I of course don't mean *real* busy wait that
would actually mindlessly spin the CPU.
I mean calling poll() with some short timeout (order of seconds),
and each time a timeout happens (which surely is the large majority
of times), check a condition, which in the large majority of times
will not be true, and then repeat.
Instead the code could use for instance eventfds to enable the
poll() calls to be without timeout. Or something similar, depending
on case.
- Recursive mutexes are evil. The last remaining instances should be
removed from the Kit/ChildSession.cppp as/when we move to a single
threaded Kit process.
- Occasionally Control-C (SIGINT) doesn't shut down loolwsd. One has
to kill it with SIGKILL. Which of course leaves all the chroot jails
around.
- There are lots of places where a std::string variable is defined,
initialised with a value, that is never changed. (In many cases it
is const, so could of course not be changed.) Then the variable is
used just once or twice, passed as a parameter to a function, or
used in a comparison expression. This is fairly pointless and just
makes the code harder to read. Use string literals instead.
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/njdragonfly/online.git
git@gitee.com:njdragonfly/online.git
njdragonfly
online
online
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385