21 lines
936 B
Diff
21 lines
936 B
Diff
--- slpd/slpd_incoming.c.orig 2006-11-16 12:19:04.000000000 +0100
|
|
+++ slpd/slpd_incoming.c 2006-11-16 12:22:00.000000000 +0100
|
|
@@ -251,10 +251,16 @@
|
|
sock->state = SOCKET_CLOSE;
|
|
break;
|
|
default:
|
|
+ if (!sock->sendbuf || sock->sendbuf->end == sock->sendbuf->start)
|
|
+ {
|
|
+ /* no answer available, just close socket */
|
|
+ sock->state = SOCKET_CLOSE;
|
|
+ break;
|
|
+ }
|
|
/* some clients cannot cope with the OVERFLOW
|
|
* bit set on a TCP stream, so always clear it
|
|
*/
|
|
- if (sock->sendbuf && sock->sendbuf->end - sock->sendbuf->start > 5)
|
|
+ if (sock->sendbuf->end - sock->sendbuf->start > 5)
|
|
{
|
|
if (sock->sendbuf->start[0] == 1)
|
|
sock->sendbuf->start[4] &= ~SLPv1_FLAG_OVERFLOW;
|