As a wild guess, you may not have disabled the Nagle algorithm on the
TCP socket?  Aggregation and delay of data in the outgoing queue does
cause an effect that can be reported as "blinking".

On Thu, Jul 16, 2020 at 03:27:18PM -0700, Darrell Root wrote:
> Thank you!  This bug is now resolved thanks to your help and Bill Balcerski’s
> bug report!
> 
> It looks like the explosion gets animated in the EXPLODE state.  Then there is
> a pause in the DEAD state allowing torpedoes to run out.  But then I needed to
> migrate the user to the OUTFIT state to get back to the “select ship/quit”
> screen.  I chose 1 second for each of those two states.
> 
> I think most of the “client blinking” in the x86 client (that Bill reported) is
> resolved.  But I’m seeing a huge quantity of “stuff blinking” on the COW client
> running in a Parallels VM on my Mac.
> 
> I’m not sure whether the “stuff blinking” is an artifact of the Parallels VM or
> a real problem.  In the x86 client case, I was sending unnecessary updates to
> the client, resulting in continuous redraws.
> 
> If someone could pop up a COW client on a native Linux box, point it at [1]
> netrek.networkmom.net, and report if they see planets/ships on the screen
> blinking too much, I’d appreciate it.
> 
> Darrell
> 
>     On Jul 16, 2020, at 2:19 PM, James Cameron <[2]quozl at laptop.org> wrote:
> 
>     Looking at Gytha's __init__.py which contains a paste of the protocol
>     definition;
> 
>     SP_PSTATUS, indicates PDEAD state
>     client animates explosion
> 
>     SP_PSTATUS, indicates POUTFIT state
>     clients returns to team selection window
> 
>     Looking at Gytha's PhaseFlight class, the event loop exits on POUTFIT
>     "# no longer flying".
> 
>     Looking at Gytha's nt_play_a_slot "keep playing on a server, until
>     user chooses a quit option, or a list option to return to the server
>     list", play continues until POUTFIT.
> 
>     On Thu, Jul 16, 2020 at 01:55:03PM -0700, Darrell Root wrote:
> 
>         Netrek-dev,
> 
>         My Swift Netrek server has a compatibility problem with COW and Windows
>         clients.
> 
>         When a person dies, the clients do not pop up the “choose team” screen.
>          So
>         people have to disconnect to respawn.
>         The clients also do not show the “you were killed by [WEAPON] from
>         [PLAYER]
>         message when connected to my server.
> 
>         What message/flag sent from the server triggers that window / message?
> 
>         I was assuming it was the whydead and whodead fields in the SP_YOU, but
>         so far
>         I haven’t been able to get it working.
> 
>         Here’s a sequence of SP_YOU messages from [1][3]pickled.netrek.org.
>          These can be
>         assumed to be correct.  I’ve put the death and respan in BOLD
> 
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         64 shieldStrength 100 fuel 10000 engineTemp 0 weaponsTemp 0 whyDead 0
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 10000 engineTemp 0 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9980 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9960 engineTemp 10 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9940 engineTemp 15 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9924 engineTemp 19 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9908 engineTemp 23 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9892 engineTemp 27 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9876 engineTemp 31 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9860 engineTemp 35 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9848 engineTemp 38 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33562624 damage
>         103 shieldStrength 100 fuel 9836 engineTemp 41 weaponsTemp 0 whyDead 2
>         whodead
>         6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags 2049
>         damage
>         0 shieldStrength 100 fuel 10000 engineTemp 0 weaponsTemp 0 whyDead 2
>         whodead 6"
>         "Received SP_YOU 12 1 hostile 13 war 0 armies 0 tractor 0 flags
>         33556481 damage
>         0 shieldStrength 100 fuel 10000 engineTemp 0 weaponsTemp 0 whyDead 2
>         whodead 6”
> 
>         Here’s a sequence of SP_YOU messages from [2][4]netrek.networkmom.net.
> 
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         78 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 0
>         whodead 0"
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         118 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         0"
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         118 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         0"
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         118 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         0”
> 
>         …large number of identical messages deleted…
> 
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         118 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         0"
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage
>         118 shieldStrength 100 fuel 9460 engineTemp 5 weaponsTemp 0 whyDead 2
>         whodead
>         0"
>         "Received SP_YOU 12 16 hostile 14 war 14 armies 0 tractor 0 flags 2048
>         damage 0
>         shieldStrength 100 fuel 10000 engineTemp 0 weaponsTemp 0 whyDead 0
>         whodead 0”
> 
>         (Looks like I need to fix whodead, but 0 is valid so I don’t think
>         that’s the
>         cause).
> 
>         Could it be PFREFIT?
> 
>         For reference, here’s the p_flags fields.  While my current
>         implementation is
>         missing red/yellow/green, I don’t see anything relevant.
> 
>         /* bit masks of p_flags */
>         #define PFSHIELD           0x0001 /*!< shields are up */
>         #define PFREPAIR           0x0002 /*!< repairing damage or shields */
>         #define PFBOMB             0x0004 /*!< bombing planet while orbiting */
>         #define PFORBIT            0x0008 /*!< orbiting planet p_planet */
>         #define PFCLOAK            0x0010
>         #define PFWEP              0x0020
>         #define PFENG              0x0040
>         #define PFROBOT            0x0080
>         #define PFBEAMUP           0x0100
>         #define PFBEAMDOWN         0x0200
>         #define PFSELFDEST         0x0400
>         #define PFGREEN            0x0800
>         #define PFYELLOW           0x1000
>         #define PFRED              0x2000
>         #define PFPLOCK            0x4000       /* Locked on a player */
>         #define PFPLLOCK           0x8000       /* Locked on a planet */
>         #define PFCOPILOT         0x10000       /* Allow copilots */
>         #define PFWAR             0x20000       /* computer reprogramming for
>         war */
>         #define PFPRACTR          0x40000       /* practice type robot (no
>         kills) */
>         #define PFDOCK            0x80000 /*!< docked to a base, p_dock_with
>         valid */
>         #define PFREFIT          0x100000       /* true if about to refit */
>         #define PFREFITTING      0x200000       /* true if currently refitting
>         */
>         #define PFTRACT          0x400000       /* tractor beam activated */
>         #define PFPRESS          0x800000       /* pressor beam activated */
>         #define PFDOCKOK        0x1000000       /* docking permission */
>         #define PFSEEN          0x2000000       /* seen by enemy on galactic
>         map? */
>         /*#define PFCYBORG      0x4000000       a cyborg? 7/27/91 TC */
>         #define PFOBSERV        0x8000000       /* for observers */
>         #define PFTWARP        0x40000000       /* isae -- SB transwarp */
> 
>         References:
> 
>         [1] [5]http://pickled.netrek.org/
>         [2] [6]http://netrek.networkmom.net/
> 
>         _______________________________________________
>         netrek-dev mailing list
>         [7]netrek-dev at us.netrek.org
>         [8]http://mailman.us.netrek.org/mailman/listinfo/netrek-dev
> 
>     -- 
>     James Cameron
>     [9]http://quozl.netrek.org/
>     _______________________________________________
>     netrek-dev mailing list
>     [10]netrek-dev at us.netrek.org
>     [11]http://mailman.us.netrek.org/mailman/listinfo/netrek-dev
> 
> References:
> 
> [1] http://netrek.networkmom.net/
> [2] mailto:quozl at laptop.org
> [3] http://pickled.netrek.org/
> [4] http://netrek.networkmom.net/
> [5] http://pickled.netrek.org/
> [6] http://netrek.networkmom.net/
> [7] mailto:netrek-dev at us.netrek.org
> [8] http://mailman.us.netrek.org/mailman/listinfo/netrek-dev
> [9] http://quozl.netrek.org/
> [10] mailto:netrek-dev at us.netrek.org
> [11] http://mailman.us.netrek.org/mailman/listinfo/netrek-dev

> _______________________________________________
> netrek-dev mailing list
> netrek-dev at us.netrek.org
> http://mailman.us.netrek.org/mailman/listinfo/netrek-dev


-- 
James Cameron
http://quozl.netrek.org/