summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pttbbs/mbbsd/talk.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/pttbbs/mbbsd/talk.c b/pttbbs/mbbsd/talk.c
index 46ca6331..49f20e82 100644
--- a/pttbbs/mbbsd/talk.c
+++ b/pttbbs/mbbsd/talk.c
@@ -1150,6 +1150,11 @@ int make_connection_to_somebody(userinfo_t *uin, int timeout){
currutmp->sockactive = YEA;
currutmp->sockaddr = server.sin_port;
currutmp->destuid = uin->uid;
+ // WORKAROUND setutmpmode() checks currstat as cache of currutmp->mode.
+ // however if you invoke page -> rejected -> do something -> page again,
+ // the currstat=PAGE but currutmp->mode!=PAGE, and then the paging will fail.
+ // so, let's temporary break currstat here.
+ currstat = IDLE;
setutmpmode(PAGE);
uin->destuip = currutmp - &SHM->uinfo[0];
pid = uin->pid;