URI: 
       Add massive new retry framework for annna. - annna - Annna the nice friendly bot.
  HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
   DIR commit b84504ef6c43259e07c62936922b829577204187
   DIR parent 03a116d4179a0502cf3b36244c46d4a83e8615e7
  HTML Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Sat, 25 Feb 2023 09:20:11 +0100
       
       Add massive new retry framework for annna.
       
       Diffstat:
         M annna-join-channels                 |       7 +++++++
         M annna-start-main                    |      32 ++++++++++++++++++++++++-------
       
       2 files changed, 32 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/annna-join-channels b/annna-join-channels
       @@ -10,6 +10,7 @@ channels="$2"
        
        export ircuser="$(cat ${cfgbase}/${server}/ircuser 2>/dev/null)"
        
       +maxretries=10
        # Channels
        for chan in ${channels};
        do
       @@ -19,18 +20,24 @@ do
                sleep 1
        
                ## Make sure the pipes are there.
       +        tries=0
                while [ ! -e "${ircbase}/${server}/${chan}/out" ];
                do
                        [ ! -f ${cfgbase}/running ] && exit 1
       +                tries=$(($tries + 1))
       +                [ $tries -gt $maxretries ] && exit 1
                        sleep 1
                done
        
       +        tries=0
                ## Check if we have joined and received the message from the server.
                while [ -z "$(cat ${ircbase}/${server}/${chan}/out \
                                | head -n 1 \
                                | grep ".* ${ircuser}.* ${chan}.*")" ];
                do
                        [ ! -f ${cfgbase}/running ] && exit 1
       +                tries=$(($tries + 1))
       +                [ $tries -gt $maxretries ] && exit 1
                        sleep 2
                done
        
   DIR diff --git a/annna-start-main b/annna-start-main
       @@ -11,7 +11,10 @@ usetls="$2"
        port="$3"
        channels="$4"
        
       +maxtries=10
       +maxnicktries=5
        {
       +        nicktries=0
                while [ -f ${cfgbase}/running ];
                do
                        # Connect
       @@ -46,35 +49,50 @@ channels="$4"
                        #        -f "${fullname}" -p ${port} &
        
                        ii -s "${server}"${ircpassparam}${ircuserparam}${tlsparam} \
       -                -f "${fullname}" -p ${port} 2>&1 >/dev/null &
       +                        -f "${fullname}" -p ${port} 2>&1 >/dev/null &
                        iipid=$!
        
                        sleep 5
        
       +                tries=0
                        ## Waiting for the socket to be available.
                        while [ ! -e ${ircbase}/${server}/out ];
                        do
                                kill -0 $iipid >/dev/null 2>&1 || exit 1
                                [ ! -f ${cfgbase}/running ] && exit 1
       +                        set -x
       +                        tries=$(($tries + 1))
       +                        [ $tries -gt $maxtries ] && break
                                sleep 4
                        done
       +                [ $tries -gt $maxtries ] && continue
       +                set +x
        
                        # 433: Nickname is already in use.
       -                if [ -n "$(grep " 433 " ${ircbase}/${server}/out)" ];
       +                if [ $(grep " 433 " ${ircbase}/${server}/out) ];
                        then
       -                        exit 3
       +                        set -x
       +                        nicktries=$(($nicktries + 1))
       +                        [ $nicktries -gt $maxnicktries ] && exit 3
       +                        sleep 30
       +                        set +x
                        fi
        
       -                {
       -                        annna-join-channels "${server}" "${channels}"
       -                } &
       -
       +                tries=0
                        # Check for end of motd.
                        while [ -z "$(grep " 376 " ${ircbase}/${server}/out)" ];
                        do
                                [ ! -f ${cfgbase}/running ] && exit 1
       +                        set -x
       +                        [ $tries -gt $maxtries ] && break
                                sleep 2
                        done
       +                [ $tries -gt $maxtries ] && continue
       +                set +x
       +
       +                {
       +                        annna-join-channels "${server}" "${channels}"
       +                } &
        
                        # Watch for ii to exit. Then remove the used directory to have all
                        # services disappear.