This repository has been archived by the owner. It is now read-only.

@kf6kjg kf6kjg released this Aug 14, 2018 · 7 commits to master since this release

Assets 4

This should be the last release of the 0.9 series as we are moving to getting Halcyon fully Linux compatible and going to the 1.0 series.

This is also the first release with precompiled binaries. Please understand that these binaries are being provided AS IS. They are built on 3rd party servers that we have no control over, using libraries pulled from sources that we have no control over. All that means is that if your systems are mission-critical to your business you should compile everything yourself.

If you choose to use the binary release in spite of the dire warning above, Most people should use the dotnet release. This will run on most Windows installations, .NET 4.5 or newer required. Those intrepid few who want to try running experimentally on Linux can try the mono release. Please note that running on comes with a mile-long list of caveats at the moment; the various grid servers run fine, it's the region server that's got the core issues. Getting the region server fully Linux compatible is the goal of milestone 1.

The main fix in this version is #456 is now resolved, meaning that importing the OAR 0.2 files produced by Halcyon will now properly permanently record the region settings. This should help with any rebirth of the InWorldz grid, or anyone wanting to load their OAR files from InWorldz into another Halcyon grid.

@appurist appurist released this Jul 25, 2018 · 16 commits to master since this release

Assets 2

This update only addresses a couple of things needed immediately in InWorldz, and a few things we already had queued for the next release:

  • Fixed object deserializing to avoid dumping binary assets to the console on an error. (This may fix the long-standing problem of an unattended XOFF causing the console to hang, requiring manual intervention.)
  • Fixed saveportable oar to allow an empty list of UUIDs as per help and the rest of the function is coded.
  • Fixed a null reference exception in mesh uploads and other assets when no money module.
  • Fix issue #418: Invoke the code to check and apply a fee on group creation if configured
  • Only apply the fee and message if the group is successfully created.
  • Report group create failure to user. Fix typo in success message.
  • Enable Ubuntu builds on AppVeyor
Assets 2

This update provides fixes to several LSL scripting operations, especially in the areas of media and materials.

LSL Scripting

  • Fixed llParcelMediaQuery([PARCEL_MEDIA_COMMAND_DESC]) to return the correct value. Fixes Issue #425.
  • Fixed llRequestURL and llRequestSecureURLAdded to support PUT and DELETE options. (Previously only supported GET and POST.) Fixes Mantis #3367.
  • Setting PRIM_SPECULAR or PRIM_NORMAL to a NULL_KEY was previously being incorrectly filtered out and the change was not applied. It has been fixed to allow the settings for specular and normal textures to be cleared.
  • Fixed a null reference exception when an object attempted to set a Media-on-a-Prim (MOAP) whitelist. This would result in the change not being applied.
  • Fixed a second null reference exception fetching prim properties if a PRIM_MEDIA_WHITELIST was present. This would have caused serious problems such as a failure to send updates, an exception during region persistence (storage), or any time the prim is then copied, except that the whitelist setting bug above likely prevented all cases of a whitelist from being specified.
  • Fixed support for outbound scripted HTTPS requests to include support for TLS 1.2, which allows new connections to new destinations unavailable in the previous release. See #445 for more. This was causing problems for a couple of InWorldz creators, including the Marketplace.


  • Several automated testcases were added, fixed and updated. (These allow automated testing of the relevant code, allowing problems in the areas being tested to be caught prior to deployment in this and future releases, and to help prevent regression problems from appearing.)

Halcyon Open-Source Project

  • Added reasonable values to the Halcyon.sample.ini file for the missing [Economy] section. This fixes Issue #439 and when renamed to Halcyon.ini or otherwise used, a startup exception.
May 9, 2018
Merge pull request #449 from InWorldz/objectpays-description
Preserve the payee in description in 5009 payments from objects.

@appurist appurist released this Apr 5, 2018

Assets 2

Note: The actual release date for this on InWorldz was Feb 28, 2018. Lack of posting the corresponding GitHub release, once that passed testing, was an unfortunate oversight. Our sincere apologies to anyone affected by the delay, which wasn't noticed until we started preparing 0.9.38 (coming in a couple of weeks now).

Assets Handling

  • Asset caching: Fixed the accounting of sizes in the 'removed' (replaced) case. It's possible that this could have prevented caching entirely in some cases, significantly hurting performance.
  • Region-side asset cache can now succeed with only the raw asset (not the full asset stream).
  • Region-side asset cache now stores the asset in the cache before attempting to fetch the asset stream, if possible.
  • Region-side asset cache makes the post-write cache update unconditional even if it is already cached based on wire asset, since we have both wire and stream at that point.
  • Added support for the option of asset storage being asynchronous, default disabled (opt-in) until we resolve the problem of unknown fetches after new uploads due to the use of separate processes.
  • Fixed excessive "asset not found" types of reports in the logs, which were normal cases but making it difficult to read region logs.


  • Fixed an null reference exception seen when avatar took enough damage just after crossing. Two fixes: fixed the null ref exception if a user received critical damage just as (or just after) it was leaving the region, and fixed to not attempt to teleport home a user who was already leaving the region (in transit) or not in the region at all.
  • Mitigate against a duplicate CompleteMovement request which can cause all kinds of problems with the user session in the region. May resolve Mantis 3287 (duplicate notifications).

LSL/Scripting/Phlox Engine:

  • llSetLinkCamera: Fixed the camera offsets to be relative to the specified prim at function execute time. Fixes Mantis 3317.
  • iwMakeNotecard: Increase the length limit from 16K to 64K characters. This matches the viewer limit on reading notecards, as well as SL and OpenSim limits for notecards, while still providing a sanity limit for memory use.
  • iwAvatarName2Key: Performance change to avoid attempting to contact the central User grid service for an ID if the agent is known to the current region. (!)
  • iwAvatarName2Key: Changed the long delay to be 1 second (applied in addition to the User network/lookup time), was 5 seconds.
  • llPushObject: Also permitted now if the script is owned by either the Estate Owner or an Estate Manager (previously parcel owner only).
  • HTTP requests: Fixed a counter problem with HTTP request dynamic priorities that could result in theory in objects eventually being unable to send HTTP requests at all.
  • floating point formats: Fixed the float to string conversions to match SL. See halcyon's PR 105. #105
  • Also includes some fixes to the Phlox script engine code to allow it to operate correctly under Linux.


  • Remote admin: Fixed bug where the 1 minute alerts were not being sent. Now uses a timer so that the thread continues, resulting in the XMLRPC response being immediate instead delayed until the countdown stops.
  • Remote admin: Also fixed a bug where you could start multiple shutdowns or restarts in any combination.
  • Remote admin: Added a delay and logging for admin tool auth failures.
Assets 2

This update is mostly a stability release with some bug fixes that have collected since the previous release:


  • Fixed a race condition in the code which may have resulted in an appearance that was missing attachments, especially after a login to a different region than the previous logoff.

New Viewer Support

  • Fixed a server exception on saves after editing scripts, under updated viewers. Newer viewers such as Alchemy 5 are using the sim CAP now, which had a bug causing an exception in both OpenSim and Halcyon servers. This matches the fix in OpenSim for the same lack of support for the new CAP.

LSL Scripting

  • Lowered most notecard delays, as discussed in Mantis 3304, which should result in very noticeably faster loading of MLP furniture and other notecard-based scripted objects. Also added new delays on some errors:

    • Notecard line and line segment fetches via llGetNotecardLine, iwGetLinkNotecardLine, iwGetNotecardSegment, and iwGetLinkNotecardSegment now delay only 1ms (effectively 16ms), every 16 lines, starting at the first line, if cached. This should result in much, much faster processing of notecards by scripts, approximately 1000 lines per second. Previously, 1000-line notecard would take about 30.4 seconds. After this change, it is just under 1 second.
    • Notecard line and line segment fetches continue to delay by 25ms if not cached (i.e. first line only), same as above.
    • If an asset fetch is required (i.e. if not cached), llGetNumberOfNotecardLines and iwGetLinkNumberOfNotecardLines now delay 50ms instead of 100ms.
    • llGetNumberOfNotecardLines and iwGetLinkNumberOfNotecardLines now also include the old 100ms delay on "notecard not found" error cases. But if cached, both functions only delay 25ms now instead of 100ms.
  • HTTP query strings: Fixed null reference exception that caused 500 errors if an incoming HTTP query passed a query string that did not include a '='. This change fixes the string coming back from x-query-string requests, which returned a very incorrect value. It was also returning a filtered view of escape characters in the text, and other changes to the query string. Because this update fixes the value returned for x-query-string requests, it is a different return value than previous servers. In most cases this will fix any scripts that used query strings on HTTP requests, however in case the older incorrect text is actually wanted by a special-use script, this update also adds x-query-string-compat which returns the filtered and partial value that the previous server would have returned, e.g. '+' and '%20' converted to ' ', excluding parameters that don't include an '=', etc. This fixes Mantis 3309; see that report for more information on this issue.

Network Communications

  • This update sends an ACK for every UseCircuitCode (UCC) packet successfully received, even for near-duplicates that have different session IDs. This attempts to fix or avoid teleport problems reported, where the region server receives duplicate UCC messages that never sort out, even after relog or region restart. Previously the server would not recover without a region restart, if we rejected a UCC packet by refusing to ACK it.

  • Fixed an exception trying to add an existing connection rather than updating it. This was seen during testing, such as where the viewer was force-killed, or where an artificial delay was put in while the viewer sent a retry.

Exit Codes (Halcyon)

  • Differentiated restart commands from shutdown (and-stay-down) console requests by giving restart an error level of 63, shutdown an exit code of 64. Crashes will return exit code 1.

Linux Support (Halcyon)

  • Fixed the path to the addin-dir-data folder to support Linux.

Map Tiles (Halcyon)

  • This update includes some background work to enhance the support for map tile updates from regions. This is mostly for Halcyon regions at the moment, but could be used in InWorldz if we do not move to the Anaximander 2 map component soon. However Anaximander is much improved and we will probably move to that before making use of these changes in InWorldz:

  • Includes a map tile correction and optimization (2x speedup).

  • Preparatory work for map tile updates. Added ability to export the map tile when generated. This adds the base level of functionality for making the region able to push map changes to the map server. To set this up simply share and map the ingestion folder of the map server to the region and then point the new Halcyon.ini entry to the path and format appropriately. At this point the region now has the tools to do the push, but still needs to be told to generate the tile.

  • Added ability for simulator to detect the changes that cause the map tile to need to be updated. More of the map settings in the INI were brought under the new banner. Now the region can be configured to actively push the updated map tiles to a path where they can be picked up by the super map tile generator for inclusion into the world map.


  • All Halcyon server apps have been updated to create .PID files. (Previously only the User server supported them.)

  • This update includes support for AppVeyor builds. See Pull Request #388 for more.

  • Added more detail to inventory purge messages, including inventory type, inventory and asset IDs.

  • Additional reporting added to object rezzing to help track down a lost asset report.

  • Additional error reporting to help diagnose a report of trouble copying inventory from notecards.

  • The server no longer reports a missing inventory item if it's being deleted. This avoids the known false report of viewer requests to remove the COF folder link that the region server auto-removes anyway on an new folder link. (Workaround for earlier Firestorm problems.)

  • Small optimization: removed some calls to ContainsKey that were unnecessary.

Assets 2

This was a small bugfix release intended to address one regression bug from the 0.9.32 release. It also includes one minor tweak for other Halcyon grids:

  • The fix for "Mantis 2847: Ghost copies of sim-crossing objects" and "Mantis 2025: DD Culling confusing viewers" introduced a regression bug where prims previously visible were removed from view when the avatar left draw distance, but not correctly restored if the avatar reentered draw distance. This problem has been fixed (also allowing the fixes for Mantis 2847 and 2025 to remain).

  • Fixed "$" becoming "" in the XML config files. Turns out there was a rather simplistic feature here for using "$XYZ" to be replaced with the value of an environment variable named "XYZ". This change makes that feature more obvious via logging when it's used or was abused, and meanwhile totally skips is it's only "$", as was the case for some Halcyon grids specifying "$" as the currency symbol.

Assets 2

Inventory / Avatars / Outfits

  • Restored the previous support for sending duplicate inventory items for inventory links (which as very close to correct, but produced worrisome errors in the viewer log that sounded worse than they were).
  • Reorder the original / link item sequence on links to ensure the duplicate originals are sent before the links so that links are always immediately resolvable at the viewer end.
  • Fixed a null reference exception when attempting to resolve an actual (real) broken link, which could result in partial inventory loading. (Seen repeatedly during appearance updates after outfit changes by Astoria in some tests.)

This combination of commits should resolve all cases of valid links being falsely reported as broken, especially after clearing the viewer inventory cache.

Objects / Attachment: updates and culling on region entry

  • Split the check for whether an avatar was considered fully in a region into multiple separate completion flags, which causes agent/prim updates from the scene view (object culling) to wait until the agent is fully in the region, initial avatar data sent, animation pack sent, and the transition from child agent to root agent is fully complete. This is likely to resolve many issues with attachments or prims in the region missing on region entry (login or teleport), animations not being active on login/teleport, avatar radar and viewer avatar notification problems, avatars displayed at the wrong locations (e.g. in the sky at 128,128 or at 0,0,0), attachments missing or shown near 0,0,0 and other cases of improperly rendering attachments. (It may provide a fundamental fix for issues like the "ghost HUD" problems.
  • [R6331]: Tweaked the above to only affect avatar/object culling and updates on region entry rather than to affect the timing of avatar region exits as well. Also, the FullyInRegion (updates support) does not need to wait for ParcelInfoSent in order to start (avoids 250ms delay on entries too).

Login / Online status reliability

  • Fixed a MySQL exception problem when attempting to update the logout time and mark a user as offline, when a region is shut down with the user still in the region. This problem would leave the user showing as "online" when in fact the region wasn't even running anymore.
  • Fixed a possible Messaging grid service exception reported by VinHold on the GW grid when a user logs in and someone in their friends list is on a region that cannot be looked up (e.g. has just been shut down) but the user is still marked online. This problem is very likely the direct result of the problem fixed in the previous point above.

Other Fixes

  • Fixed an exception triggered by a Cool VL viewer login sending of an inventory fetch request that does not include an "items" list in the request.
  • [R6331]: Fixed the regression (from the Halcyon generic branding changes) that caused location URLs to be relative to instead of

Debugging / Diagnostic

  • Tweaked the /!find server chat command to allow a user to check the server's understanding of attachments too. The output will now include attachments too, if user specifies the UUID or owns the attachment. The output for these cases will indicate "(attached)" at the end of each matching object.


This is a repost of the Halcyon 0.9.34 release, with an additional commit (as revision R6334), to correct a problem with the initial avatar rezzing.

May 2, 2017
Merge pull request #377 from InWorldz/can-exit-region-2
Doh. CanExitRegion can't test for == or it won't work when there are more bits.
May 2, 2017
Merge pull request #375 from InWorldz/can-exit-region-2
Two changes for performance compatibility missed from from #373 can-exit-region