• ZMODEM with QICO

    From alterego@VERT/ALTERANT to All on Mon Apr 13 10:28:43 2020
    Howdy, hoping somebody could help clarify something for me. Does anybody use qico (or did)?

    I've been playwith qico (another ifcico ftn mailer), mainly because ifcico from the debian repositories coredumps when you change some config settings like debugging. It also looks like I can call a tossing action after received mail, which I havent figured out how to do with ifcico (unless I used cron). I'm using it to send mail to my 1995 BBS that is Portal of Power 0.62.

    I noticed that ZedZap transfers wouldnt start, I started debugging the code, and noticed that a <CR> <LF> where not sent from POP with a HEX header (after the CRC) - only an XON.

    I was curious as to why ifcico was working, and from it's code it looks like it doesnt check for <CR><LF> either - in fact it looks like it discards anything received after the CRC (if the CRC matches) (up to the size of the header).

    So I made the a similar change for qico (I exit if I get the XON), and it works, just wondering if this the right course of action and if there are any side affects?
    ...deon


    ... California is a fine place to live -- if you happen to be an orange.

    ---
    þ Synchronet þ Alterant | an SBBS in Docker on Pi!
  • From Digital Man@VERT to alterego on Sun Apr 12 17:53:50 2020
    Re: ZMODEM with QICO
    By: alterego to All on Mon Apr 13 2020 10:28 am

    Howdy, hoping somebody could help clarify something for me. Does anybody use qico (or did)?

    I've been playwith qico (another ifcico ftn mailer), mainly because ifcico from the debian repositories coredumps when you change some config settings like debugging. It also looks like I can call a tossing action after received mail, which I havent figured out how to do with ifcico (unless I used cron). I'm using it to send mail to my 1995 BBS that is Portal of Power 0.62.

    I noticed that ZedZap transfers wouldnt start, I started debugging the code, and noticed that a <CR> <LF> where not sent from POP with a HEX header (after the CRC) - only an XON.

    I was curious as to why ifcico was working, and from it's code it looks like it doesnt check for <CR><LF> either - in fact it looks like it discards anything received after the CRC (if the CRC matches) (up to the size of the header).

    So I made the a similar change for qico (I exit if I get the XON), and it works, just wondering if this the right course of action and if there are any side affects?

    Never used QICO, but ZedZap is a variant of ZMODEM. If it helps, you can look at the ZMODEM implementation we use for SEXYZ here:
    http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/zmodem.c?view=log

    digital man

    This Is Spinal Tap quote #21:
    So when you're playing you feel like a preserved moose on stage?
    Norco, CA WX: 57.2øF, 83.0% humidity, 4 mph ESE wind, 0.00 inches rain/24hrs

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From alterego@VERT/ALTERANT to Digital Man on Mon Apr 13 14:08:32 2020
    Re: ZMODEM with QICO
    By: Digital Man to alterego on Sun Apr 12 2020 05:53 pm

    Never used QICO, but ZedZap is a variant of ZMODEM. If it helps, you can look at the ZMODEM implementation we use for SEXYZ here: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/zmodem.c?view=log

    So, if I'm reading your code correctly, you are not checking that you actually get the <CR> and <LF> right? (zmodem_recv_hex_header() line 1077).

    If I read correctly, *if* you get the CR, you then drop the next char, which is probably the LF. But if you didnt get the CR, it doesnt matter, you return TRUE anyway... (In my case the next char is not CR but XON.

    So, its sounds my fix is OK.

    Another question if I may, I've noticed that the transfer is stalling each 65536 bytes. Its correctly restarting, but I was wondering if there is something that had to be done every 0xffff bytes received (and is not being done, and thus the constant resend).

    Do you do anything special every 0xffff bytes received or sent?
    ...deon


    ... It is better to know some of the questions than all of the answers.

    ---
    þ Synchronet þ Alterant | an SBBS in Docker on Pi!
  • From Digital Man@VERT to alterego on Sun Apr 12 22:17:45 2020
    Re: ZMODEM with QICO
    By: alterego to Digital Man on Mon Apr 13 2020 02:08 pm

    Re: ZMODEM with QICO
    By: Digital Man to alterego on Sun Apr 12 2020 05:53 pm

    Never used QICO, but ZedZap is a variant of ZMODEM. If it helps, you can look at the ZMODEM implementation we use for SEXYZ here: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/zmodem.c?view=log

    So, if I'm reading your code correctly, you are not checking that you actually get the <CR> and <LF> right? (zmodem_recv_hex_header() line 1077).

    It does *wait* for the CR though. And yes, if recieved, assumes the next char would be an LF and wait to receive it as well.

    If I read correctly, *if* you get the CR, you then drop the next char, which is probably the LF. But if you didnt get the CR, it doesnt matter, you return TRUE anyway... (In my case the next char is not CR but XON.

    Right, but there will be delays.

    So, its sounds my fix is OK.

    Another question if I may, I've noticed that the transfer is stalling each 65536 bytes. Its correctly restarting, but I was wondering if there is something that had to be done every 0xffff bytes received (and is not being done, and thus the constant resend).

    Do you do anything special every 0xffff bytes received or sent?

    No, that boundary doesn't ring a bell with ZMODEM.

    digital man

    Synchronet "Real Fact" #108:
    Weedpuller "Falling Star" http://youtu.be/J0ijOUT7KIw
    Norco, CA WX: 52.8øF, 94.0% humidity, 2 mph SE wind, 0.00 inches rain/24hrs

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From alterego@VERT/ALTERANT to Digital Man on Mon Apr 13 16:38:04 2020
    Re: ZMODEM with QICO
    By: Digital Man to alterego on Sun Apr 12 2020 10:17 pm

    So, if I'm reading your code correctly, you are not checking that you actually get the <CR> and <LF> right?
    (zmodem_recv_hex_header() line 1077).
    It does *wait* for the CR though. And yes, if recieved, assumes the next char would be an LF and wait to receive it as well.

    Sorry, for clarity.

    Do you wait for the CR, or what for the next char? If the next char is not CR, it returns true anyway...?
    ...deon


    ... Living with a saint is more gruelling than being one.

    ---
    þ Synchronet þ Alterant | an SBBS in Docker on Pi!
  • From Digital Man@VERT to alterego on Mon Apr 13 00:18:14 2020
    Re: ZMODEM with QICO
    By: alterego to Digital Man on Mon Apr 13 2020 04:38 pm

    Re: ZMODEM with QICO
    By: Digital Man to alterego on Sun Apr 12 2020 10:17 pm

    So, if I'm reading your code correctly, you are not checking that you actually get the <CR> and <LF> right?
    (zmodem_recv_hex_header() line 1077).
    It does *wait* for the CR though. And yes, if recieved, assumes the next char would be an LF and wait to receive it as well.

    Sorry, for clarity.

    Do you wait for the CR, or what for the next char? If the next char is not CR, it returns true anyway...?

    It was for any char. If a char is received and it's a CR, then it waits for another char. Both chars, if received, are discarded. In any case, the function return true (success).

    The ZMODEM implementation used in SEXYZ is derived from the zmtx/rx project and should follow this reference document closely: http://wiki.synchro.net/ref:zmodem

    digital man

    Synchronet "Real Fact" #64:
    Synchronet PCMS (introduced w/v2.0) is Programmable Command and Menu Structure. Norco, CA WX: 52.2øF, 96.0% humidity, 3 mph ESE wind, 0.00 inches rain/24hrs

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From alterego@VERT/ALTERANT to Digital Man on Mon Apr 13 17:57:57 2020
    Re: ZMODEM with QICO
    By: Digital Man to alterego on Mon Apr 13 2020 12:18 am

    It was for any char. If a char is received and it's a CR, then it waits for another char. Both chars, if received, are discarded. In
    any case, the function return true (success).

    OK, got it (thats what I thought).

    So my change for QICO shouldnt have any side affects, given your doing loosly the same thing.

    Thanks...
    ...deon


    ... Genius is one per cent inspiration and ninety-nine per cent perspiration.

    ---
    þ Synchronet þ Alterant | an SBBS in Docker on Pi!
  • From Vk3jed@VERT/FREEWAY to alterego on Mon Apr 13 20:49:00 2020
    On 04-13-20 10:28, alterego wrote to All <=-

    @VIA: VERT/ALTERANT
    Howdy, hoping somebody could help clarify something for me. Does
    anybody use qico (or did)?

    I'd be interested in your mods. :)


    ... Does a clean house show that there's a broken computer??
    --- MultiMail/Win v0.51
    þ Synchronet þ Freeway BBS, Bendigo Australia. freeway.apana.org.au
  • From Dumas Walker@VERT/CAPCITY2 to ALTEREGO on Mon Apr 13 15:10:00 2020
    This message was from VK3JED to ALTEREGO
    -------------------------
    On 04-13-20 10:28, alterego wrote to All <=-

    Howdy, hoping somebody could help clarify something for me. Does
    anybody use qico (or did)?

    I'd be interested in your mods. :)

    +1


    * SLMR 2.1a * "We use language??" - Beavis

    ---
    þ Synchronet þ CAPCITY2 * capcity2.synchro.net * Telnet/SSH:2022/Rlogin/HTTP