DOS: Clients can freeze other clients smbd
Mattias.Gronlund at sa.erisoft.se
Sun Aug 29 18:03:30 GMT 1999
A client may freeze until the keepalive timer expires (hours)
by not sending the amount of data that smbd expects.
What then can happen is that another smbd is interested in
a oplocked-file that the first smbd had locked.
Now we got one smbd waiting on the client and an other smbd
waiting on the first smbd.
What then happens is that the client that requested the
oplock gets an timeout and reconnects. The client gets a new
smbd to talk to that surprise, surprise, tries to get hold
of that oplock...
This isn't a good thing, I think we should always use
read_socket_with_timeout() instead of read_socket so that we
never get stuck that long in the first place.
We have had quite much problem with "buggy clients" that have
trigged this and I have run with read_socket_with_timeout()
for some time now with no problems. I have just exited smbd
but I don't know if there is anything better to do?
If there is any interest for this I would like to reimplement
read_socket_with_timeout() with alarms instaed of select.
More information about the samba-technical