[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[screen-devel] [bug #25291] Screen crashes after passing through a zmode
From: |
Alexander Naumov |
Subject: |
[screen-devel] [bug #25291] Screen crashes after passing through a zmodem transfer |
Date: |
Wed, 10 Jul 2024 07:39:46 -0400 (EDT) |
Follow-up Comment #8, bug #25291 (group screen):
Ok, we have a patch:
% cat ~/gnu/zmodem.patch
diff --git a/src/process.c b/src/process.c
index 129e2dc..cbd33f2 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1190,7 +1190,7 @@ static void DoCommandZmodem(struct action *act)
int i;
for (i = 0; i < 4; i++)
if (!strcmp(zmodes[i], *args))
- return;
+ break;
if (i == 4 && !strcmp(*args, "on"))
i = 1;
if (i == 4) {
diff --git a/src/window.c b/src/window.c
index 9f5e2d4..042d152 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1812,7 +1812,6 @@ static void zmodem_found(Window *p, int send, char *bp,
size_t len)
void zmodem_abort(Window *p, Display *d)
{
- Display *olddisplay = display;
Layer *oldflayer = flayer;
if (p) {
if (p->w_savelayer && p->w_savelayer->l_next) {
@@ -1831,7 +1830,6 @@ void zmodem_abort(Window *p, Display *d)
D_readev.condpos = D_readev.condneg = NULL;
Activate(D_fore ? D_fore->w_norefresh : 0);
}
- display = olddisplay;
flayer = oldflayer;
}
Let's test it... git master branch, Kubuntu:
% cat /etc/issue
Ubuntu 22.04.4 LTS
% dpkg -s konsole | grep '^Version:'
Version: 4:21.12.3-0ubuntu1
% git branch
* master
% git pull
Enter passphrase for key '/home/alex/.ssh/id_rsa.screen':
Already up to date.
% git rev-parse HEAD
fcfa6d2da0735d27d322ff22147534ecfb4d7302
% git apply ~/gnu/zmodem.patch
% echo $?
0
% ./configure
% make
% sudo make install
% screen -v
Screen version 4.99.0 (build on 2024-07-10 13:07:15)
I have 3 tabs in Konsole. First one I'm going to use for the first screen
session 'source', second for the second one 'zmodem' and last one for the
"screen -ls", i.e. for some outside checks (there is no screen session
there).
Start first screen session:
[3] % screen -ls
No Sockets found in /home/alex/.screen.
[1] % screen -S source
[3] % screen -ls
There is a screen on:
13271.source (Attached)
1 Socket in /home/alex/.screen.
Start second screen session and enable zmodem mode there.
Check file name (example test name... let's say "passwd")
[2] % screen -S zmodem
[2] C-a :zmodem pass
# I get message 'zmodem mode is pass'
[3] % screen -ls
There are screens on:
13344.source (Attached)
13393.zmodem (Attached)
2 Sockets in /home/alex/.screen.
[2] % ls -la passwd
ls: cannot access 'passwd': No such file or directory
Send some test file from the first screen session 'source' to the second one
'zmodem' by usging 'sz' command:
[1] C-a : !!! sz /etc/passwd
Sending: passwd
Bytes Sent: 2717 BPS:511578
Transfer complete
% echo $?
0
Second session. Check the file again.
Third tab: Check the state of both screen sessions:
[2] % ls -la passwd
-rw-r--r-- 1 alex alex 2717 Sep 28 2023 passwd
[3] % screen -ls
There are screens on:
14102.source (Attached)
14118.zmodem (Attached)
2 Sockets in /home/alex/.screen.
Both screens are alive. No dead sessions. No crashes. File is there...
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?25291>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
Message not available
Message not available
- Message not available
- Message not available
- Message not available
- [screen-devel] [bug #25291] Screen crashes after passing through a zmodem transfer,
Alexander Naumov <=
Message not available
Message not available