• src/syncterm/conn_pty.c modem.c ripper.c rlogin.c ssh.c

    From Deuc¿@VERT to Git commit to main/sbbs/master on Wednesday, April 26, 2023 16:25:32
    https://gitlab.synchro.net/main/sbbs/-/commit/62aa99b82827a4d473963093
    Modified Files:
    src/syncterm/conn_pty.c modem.c ripper.c rlogin.c ssh.c
    Log Message:
    Don't commit to waits more than 100ms in a connection

    This works around an issue on macOS and Linux where a select() or
    poll() in thread X won't return when close() is called on the same
    socket in thread Y.

    We also set the descriptor/handle/whatever to an invalid value
    while waiting for io threads to terminate so that a close() in one
    thread won't cause other threads to possibly interact with a new
    descriptor created after the close(). This isn't actually something
    that can happen in SyncTERM, but it's worth protecting against.

    Finally, don't call close() until after all io threads have
    terminated. This prevents the descriptor from becoming available
    to other syscalls while threads are closing, and prevents operations
    on an invalid descriptor.

    This is still not safe on platforms where a descriptor value write
    is not atomic, but I don't think I support any platform like that.

    Reported as #212 in github, and 75 on SourceForge.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Digital Man@VERT to Deuc¿ on Wednesday, April 26, 2023 16:41:55
    Re: src/syncterm/conn_pty.c modem.c ripper.c rlogin.c ssh.c
    By: Deuc¨ to Git commit to main/sbbs/master on Wed Apr 26 2023 04:25 pm

    Reported as #212 in github, and 75 on SourceForge.

    github?
    --
    digital man (rob)

    Synchronet "Real Fact" #70:
    Rob Swindell was interviewed for Jason Scott's BBS Documentary in July of 2002 Norco, CA WX: 79.1øF, 41.0% humidity, 12 mph SSE wind, 0.00 inches rain/24hrs ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net