Permalink
Switch branches/tags
Nothing to show
Commits on Dec 26, 2014
  1. Initial import of NWN2 Datafile Accessor Library public sources.

    SkywingvL committed Dec 26, 2014
    With updates to latest version.
  2. Update date.

    SkywingvL committed Dec 26, 2014
  3. Platform update to VS12.

    SkywingvL committed Dec 26, 2014
Commits on Feb 3, 2013
  1. Fix query combiner bug resulting in lost write queries.

    SkywingvL committed Feb 3, 2013
    - This was the cause of the issue that resulted in some servers not
      being marked as offline expectedly.  If the query combiner ran
      out of space, buffered queries were lost due to the wrong query
      variable being executed.
Commits on Jan 7, 2013
  1. Clean up ExoParseBuffer/ExoBuildBuffer in managed code properly.

    SkywingvL committed Jan 7, 2013
    - This fixes an obvious memory leak with packet parser contents
      and packet builder contents not being deleted deterministically.
Commits on Dec 30, 2012
  1. Accomodate servers that lie about player counts.

    SkywingvL committed Dec 30, 2012
    - Now, the database can be updated to describe linked server sets
      via the game_server_groups table.  The global_user_counts field,
      if set to true, indicates that member servers in the server group
      lie about player counts (and so only one such server contributes
      player counts to the unique player listing).
Commits on Dec 29, 2012
  1. Fix synchronization.

    SkywingvL committed Dec 29, 2012
Commits on Dec 26, 2012
  1. Apply sealed attribute.

    SkywingvL committed Dec 26, 2012
  2. Substantial rework of how servers are detected for busted NATs.

    SkywingvL committed Dec 26, 2012
    - A new policy is put into place for busted NAT handling.  Now,
      the master server never marks a server as online simply because
      it received a BMST MST heartbeat message.  Instead, the master
      server just sends BNXI probes in response.  Online-ness is then
      acted on if a BNXR probe response is received.
    
    - The master server uses a dedicated socket to send all non-MST
      messages to servers (including BNXI probes, etc.).  This ensures
      that a fresh NAT translation would be used so that if the server
      has a broken NAT that uses a different outbound port for
      datagrams sourced from a port that has a static inbound
      translation, that the actual static inbound translation can be
      exercised (which is the one that players would connect to,
      anyway), and not the potentially ephermeral translation that the
      broken NAT might have created for the outbound BMST heartbeat
      message.  As another beneficial side effect, this stops the
      creation of short-lived game_servers records for NAT duplicates
      based on an incorrect ephemeral translation setup for outbound
      MST heartbeat traffic.
    
    - Master server internal socket handling was cleaned up to be
      factored into a SocketInfo class for state tracking as a side
      effect of this work.
    
    - The policy for initial heartbeats on database restore at service
      startup is now different.  Now, the initial heartbeat is allowed
      to be missed "for free" (as it would trigger an outbound message
      and potentiall a response if the server is alive).  In addition,
      heartbeats are always sent at startup if servers were marked as
      online, even if the last heartbeat timestamp was far into the
      past.  This makes the service much more robust to recover after a
      long period where the service was not running (e.g. offline for
      maintenance).
Commits on Dec 24, 2012
  1. Track (and return) the ServerDescription (from ServerDesc.txt).

    SkywingvL committed Dec 24, 2012
    - This is internally known as the "GameDetails" field.  It is now
      returned in a new NWGameServer field named ServerDescription.
    
    - For old CE clients, the CE server list API combines the fields in
      the canonical manner for display purposes.
Commits on Dec 23, 2012
  1. Add background scavenger for servers that went offline last week.

    SkywingvL committed Dec 23, 2012
    - The master server infrequently iterates through the list of
      servers that are offline and had a heartbeat returned within the
      last 7 days.  These servers are infrequently re-pinged to detect
      if they became alive once more; if so, they are re-listed.
    
      This facilitates rediscovery of servers that were offline for an
      extended outage, but which have since returned to active service.
Commits on Dec 22, 2012
Commits on Dec 20, 2012
  1. Add dedicated API for CE to get server list.

    SkywingvL committed Dec 20, 2012
    - This allows version specific workaround to be applied to the
      response data if necessary without breaking public API
      clients.
Commits on Dec 19, 2012
Commits on Dec 18, 2012
Commits on Dec 17, 2012
  1. Temporarily drop heartbeat as a workaround for LoA NAT breakage.

    SkywingvL committed Dec 17, 2012
    - A more permanent solution will be enacted tomorrow.
  2. Add additional countermeasures against broken NATs.

    SkywingvL committed Dec 17, 2012
    - When the internal and external ports for a server differ, try and
      probe both for liveness.  When handling BNXR probe responses,
      check for pre-existing server records matching either the
      external or internal port (and same IP address).  If a match is
      found with identical configuration parameters, consider the
      internal address to be canonical and mark the external one as
      offline (blacklisting it as a "NAT duplicate" for the near
      future in addition).
  3. Add start of pending server support, defer server adds for BMST.

    SkywingvL committed Dec 17, 2012
    - Begin adding support for pending servers, which are entered in to
      the database by an external source (e.g. the web service API).
      When processed by a master server process, a BNXI ping is sent to
      the desired pending server.  If a response is received, then the
      server is updated as normal.
    
    - Defer server addition for a new server until after the BNXR ping
      response is received so as to ensure bidirectional connectivity.
Commits on Dec 15, 2012
  1. Correct master server response parsing for NWN1 Mst.

    SkywingvL committed Dec 15, 2012
    - Accomodate slight differences in BNDR and BNXR messages.
  2. New API extensions to return full server information.

    SkywingvL committed Dec 15, 2012
    - Minimum level
    - Maximum level
    - PVP mode
    - Player pause
    - One party only
    - ELC enforced
    - ILR enforced
    - PWC url
    
    Additionally, the server now has a distinct configuration setting
    to select between NWN1 and NWN2 protocol modes.
    
    New API method LookupServerByModule() added to the web service.
  3. Make master server port configurable.

    SkywingvL committed Dec 15, 2012
    - The NWN2 master server port is 6121, whereas the NWN1 master
      server port is 5121.  Each instance needs to be differently
      configured, accordingly.
Commits on Dec 13, 2012