mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-21 04:55:02 -05:00
Don't treat plug_closing() and plug_receive() as returning backlog.
plug_receive() and plug_closing() return 0 or 1 depending on whether they think the main connection has closed. It is not appropriate, as handle_gotdata and handle_socket_unfreeze did, to treat them as returning a backlog. In fact, plugs are unusual in PuTTY in not reporting a backlog, but just calling into the socket to freeze and unfreeze it as required.
This commit is contained in:
parent
a2fb1d96ef
commit
0d9c7d82e8
@ -54,10 +54,11 @@ static int handle_gotdata(struct handle *h, void *data, int len)
|
|||||||
Handle_Socket ps = (Handle_Socket) handle_get_privdata(h);
|
Handle_Socket ps = (Handle_Socket) handle_get_privdata(h);
|
||||||
|
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
return plug_closing(ps->plug, "Read error from handle",
|
plug_closing(ps->plug, "Read error from handle", 0, 0);
|
||||||
0, 0);
|
return 0;
|
||||||
} else if (len == 0) {
|
} else if (len == 0) {
|
||||||
return plug_closing(ps->plug, NULL, 0, 0);
|
plug_closing(ps->plug, NULL, 0, 0);
|
||||||
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
assert(ps->frozen != FROZEN && ps->frozen != THAWING);
|
assert(ps->frozen != FROZEN && ps->frozen != THAWING);
|
||||||
if (ps->frozen == FREEZING) {
|
if (ps->frozen == FREEZING) {
|
||||||
@ -76,7 +77,8 @@ static int handle_gotdata(struct handle *h, void *data, int len)
|
|||||||
*/
|
*/
|
||||||
return INT_MAX;
|
return INT_MAX;
|
||||||
} else {
|
} else {
|
||||||
return plug_receive(ps->plug, 0, data, len);
|
plug_receive(ps->plug, 0, data, len);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,7 +170,7 @@ static void handle_socket_unfreeze(void *psv)
|
|||||||
{
|
{
|
||||||
Handle_Socket ps = (Handle_Socket) psv;
|
Handle_Socket ps = (Handle_Socket) psv;
|
||||||
void *data;
|
void *data;
|
||||||
int len, new_backlog;
|
int len;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we've been put into a state other than THAWING since the
|
* If we've been put into a state other than THAWING since the
|
||||||
@ -188,7 +190,7 @@ static void handle_socket_unfreeze(void *psv)
|
|||||||
* have the effect of trying to close this socket.
|
* have the effect of trying to close this socket.
|
||||||
*/
|
*/
|
||||||
ps->defer_close = TRUE;
|
ps->defer_close = TRUE;
|
||||||
new_backlog = plug_receive(ps->plug, 0, data, len);
|
plug_receive(ps->plug, 0, data, len);
|
||||||
bufchain_consume(&ps->inputdata, len);
|
bufchain_consume(&ps->inputdata, len);
|
||||||
ps->defer_close = FALSE;
|
ps->defer_close = FALSE;
|
||||||
if (ps->deferred_close) {
|
if (ps->deferred_close) {
|
||||||
@ -207,7 +209,7 @@ static void handle_socket_unfreeze(void *psv)
|
|||||||
* Otherwise, we've successfully thawed!
|
* Otherwise, we've successfully thawed!
|
||||||
*/
|
*/
|
||||||
ps->frozen = UNFROZEN;
|
ps->frozen = UNFROZEN;
|
||||||
handle_unthrottle(ps->recv_h, new_backlog);
|
handle_unthrottle(ps->recv_h, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user