Ignore:
Timestamp:
Jul 29, 2024, 4:48:56 PM (5 months ago)
Author:
alloc
Message:

Fixed NRE when using APIs while server is shutting down

Location:
TFP-WebServer/WebServer/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TFP-WebServer/WebServer/src/ModApi.cs

    r404 r500  
    1212                public void InitMod (Mod _modInstance) {
    1313                        ModEvents.GameStartDone.RegisterHandler (GameStartDone);
    14                         ModEvents.GameShutdown.RegisterHandler (GameShutdown);
     14                        ModEvents.WorldShuttingDown.RegisterHandler (WorldShuttingDown);
    1515                        modInstance = _modInstance;
    1616
     
    3131                }
    3232
    33                 private void GameShutdown () {
    34                         webInstance?.Shutdown ();
     33                private void WorldShuttingDown () {
     34                        webInstance?.Disconnect ();
    3535                }
    3636        }
  • TFP-WebServer/WebServer/src/Web.cs

    r487 r500  
    3030                private readonly AsyncCallback handleRequestDelegate;
    3131
     32                private bool shutdown;
     33
    3234                public Web (string _modInstancePath) {
    3335                        try {
     
    150152
    151153                public void Disconnect () {
     154                        if (shutdown) {
     155                                return;
     156                        }
     157
     158                        shutdown = true;
     159                       
    152160                        try {
     161                                foreach (AbsHandler handler in handlers) {
     162                                        handler.Shutdown ();
     163                                }
     164
    153165                                listener.Stop ();
    154166                                listener.Close ();
    155167                        } catch (Exception e) {
    156168                                Log.Out ($"[Web] Error in Web.Disconnect: {e}");
    157                         }
    158                 }
    159 
    160                 public void Shutdown () {
    161                         foreach (AbsHandler handler in handlers) {
    162                                 handler.Shutdown ();
    163169                        }
    164170                }
Note: See TracChangeset for help on using the changeset viewer.