From 3275fbec540a09228fe0be05113870fc42639341 Mon Sep 17 00:00:00 2001 From: Melanie Date: Tue, 14 Sep 2010 23:05:42 +0100 Subject: Fix the above --- OpenSim/Services/Connectors/Simulation/EstateDataService.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs index 2eedebb..8a8b46d 100644 --- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs +++ b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs @@ -60,9 +60,8 @@ namespace OpenSim.Services.Connectors if (dbConfig != null) { dllName = dbConfig.GetString("StorageProvider", String.Empty); - connString = dbConfig.GetString("EstateConnectionString", String.Empty); - if (String.IsNullOrEmpty(connString)) - connString = dbConfig.GetString("ConnectionString", String.Empty); + connString = dbConfig.GetString("ConnectionString", String.Empty); + connString = dbConfig.GetString("EstateConnectionString", connString); } // Try reading the [EstateDataStore] section, if it exists @@ -70,7 +69,7 @@ namespace OpenSim.Services.Connectors if (estConfig != null) { dllName = estConfig.GetString("StorageProvider", dllName); - connString = dbConfig.GetString("ConnectionString", connString); + connString = estConfig.GetString("ConnectionString", connString); } // We tried, but this doesn't exist. We can't proceed -- cgit v1.1 From 0d034712baac235df7aea019e259c101d9ff4517 Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 15 Sep 2010 15:56:03 +0100 Subject: Make AuthorizationService optional and disabled by default. It depends on external PHP and the default configuration makes it throw for not having a URL to this PHP --- bin/config-include/Grid.ini | 1 - bin/config-include/GridCommon.ini.example | 3 +++ bin/config-include/GridHypergrid.ini | 1 - bin/config-include/StandaloneCommon.ini.example | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/config-include/Grid.ini b/bin/config-include/Grid.ini index 4a6a082..1794573 100644 --- a/bin/config-include/Grid.ini +++ b/bin/config-include/Grid.ini @@ -14,7 +14,6 @@ AvatarServices = "RemoteAvatarServicesConnector" NeighbourServices = "RemoteNeighbourServicesConnector" AuthenticationServices = "RemoteAuthenticationServicesConnector" - AuthorizationServices = "RemoteAuthorizationServicesConnector" PresenceServices = "RemotePresenceServicesConnector" UserAccountServices = "RemoteUserAccountServicesConnector" GridUserServices = "RemoteGridUserServicesConnector" diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index c2cd5c3..3ab11b8 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -93,3 +93,6 @@ ;; Optionally, the port for the LLProxyLoginModule module can be changed ;Setup_LLProxyLoginModule = "9090/" + + ;; Authorization is not on by default, as it depends on external php + ;AuthorizationServices = "RemoteAuthorizationServicesConnector" diff --git a/bin/config-include/GridHypergrid.ini b/bin/config-include/GridHypergrid.ini index d69a945..cb9ead4 100644 --- a/bin/config-include/GridHypergrid.ini +++ b/bin/config-include/GridHypergrid.ini @@ -17,7 +17,6 @@ AvatarServices = "RemoteAvatarServicesConnector" NeighbourServices = "RemoteNeighbourServicesConnector" AuthenticationServices = "RemoteAuthenticationServicesConnector" - AuthorizationServices = "RemoteAuthorizationServicesConnector" PresenceServices = "RemotePresenceServicesConnector" UserAccountServices = "RemoteUserAccountServicesConnector" GridUserServices = "RemoteGridUserServicesConnector" diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 96ef602..a810393 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -40,6 +40,9 @@ ;; Enable this to use Freeswitch on a standalone ;FreeswitchServiceInConnector = True + ;; Authorization is not on by default, as it depends on external php + ;AuthorizationServices = "LocalAuthorizationServicesConnector" + [FreeswitchService] ;; Configuration for the freeswitch service goes here LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService" -- cgit v1.1 From c1ccfa6d8d335cff0f61a011354b251a5c17da2a Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 15 Sep 2010 20:29:28 +0100 Subject: Mark up OpenSim.ini.example for use with an automatic configuration tool. Remove seldom changed options from OpenSim.ini.example. Remove non-overridable settings like [Architecture] from OpenSimDefaults.ini --- bin/OpenSim.ini.example | 686 +++++++++++++++++++++++++++++++++++++++++++++++- bin/OpenSimDefaults.ini | 39 +-- 2 files changed, 688 insertions(+), 37 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 5d09faa..109e0aa 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -1 +1,685 @@ -;# Use this file to override the defaults +;; A note on the format of this file +;; +;; All leading white space is ignored, but preserved. +;; +;; Double semicolons denote a text comment +;; +;; ;# denotes a configuration directive description +;; formatted as: +;; {option} {depends on} {question to ask} {choices} default value +;; Any text comments following the declaration, up to the next blank line. +;; will be copied to the generated file. +;; A * in the choices list will allow an empty entry.\ +;; An empty question will set the default if the dependencies are +;; satisfied. +;; +;; ; denotes a commented option. It is ignored. + +[Startup] + ;# {save_crashes} {} {Save crashes to disk?} {true false} false + ;; Set this to true if you want to log crashes to disk + ;; this can be useful when submitting bug reports. + ; save_crashes = false + + ;# {crash_dir} {save_crashes:true} {Directory to save crashes to?} {} crashes + ;; Directory to save crashes to if above is enabled + ;; (default is /opensimdir/crashes/*.txt or C:\opensim\crashes\*.txt) + ; crash_dir = "crashes" + + ;# {PIDFile} {} {Path to PID file?} {} + ;; Place to create a PID file + ; PIDFile = "/tmp/my.pid" + + ;; Determine where OpenSimulator looks for the files which tell it + ;; which regions to server + ;; Defaults to "filesystem" if this setting isn't present + ; region_info_source = "filesystem" + ; region_info_source = "web" + + ;; Determines where the region XML files are stored if you are loading + ;; these from the filesystem. + ;; Defaults to bin/Regions in your OpenSimulator installation directory + ; regionload_regionsdir="C:\somewhere\xmlfiles\" + + ;; Determines the page from which regions xml is retrieved if you are + ;; loading these from the web. + ;; The XML here has the same format as it does on the filesystem + ;; (including the <Root> tag), except that everything is also enclosed + ;; in a <Regions> tag. + ; regionload_webserver_url = "http://example.com/regions.xml"; + + ;# {TextureOnMapTile} {} {Use terrain textures for map tiles?} {true false} false + ;; Use terrain texture for maptiles if true, use shaded green if false + ; TextureOnMapTile = false + + ;# {DrawPrimOnMapTile} {} {Draw prim shapes on map tiles?} {true false} false + ;; Draw objects on maptile. This step might take a long time if you've + ;; got a large number of objects, so you can turn it off here if you'd like. + ; DrawPrimOnMapTile = true + + ;# {NonPhysicalPrimMax} {} {Maximum size of nonphysical prims?} {} 256 + ;; Maximum size for non-physical prims + ; NonPhysicalPrimMax = 256 + + ;# {PhysicalPrimMax} {} {Maximum size of physical prims?} {} 10 + ;; Maximum size where a prim can be physical + ; PhysicalPrimMax = 10 + + ;; Prevent the creation, import and rez of prims that exceed the + ;; maximum size. + ; ClampPrimSize = false + + ;# {AllowScriptCrossing} {} {Allow scripts to cross into this region} {true false} false + ;; Allow scripts to cross region boundaries. These are recompiled on the + ;; new region. + ; AllowScriptCrossing = false + + ;# {TrustBinaries} {AllowScriptCrossing:true} {Accept compiled binary script code? (DANGEROUS!)} {true false} false + ;; Allow compiled script binary code to cross region boundaries. + ;; If you set this to "true", any region that can teleport to you can + ;; inject ARBITRARY BINARY CODE into your system. Use at your own risk. + ;; YOU HAVE BEEN WARNED!!! + ; TrustBinaries = false + + ;# {CombineContiguousRegions} {} {Create megaregions where possible? (Do not use with existing content!)} {true false} false + ;; Combine all contiguous regions into one large megaregion + ;; Order your regions from South to North, West to East in your regions.ini + ;; and then set this to true + ;; Warning! Don't use this with regions that have existing content!, + ;; This will likely break them + ; CombineContiguousRegions = false + + ;; If you have only one region in an instance, or to avoid the many bugs + ;; that you can trigger in modules by restarting a region, set this to + ;; true to make the entire instance exit instead of restarting the region. + ;; This is meant to be used on systems where some external system like + ;; Monit will restart any instance that exits, thereby making the shutdown + ;; into a restart. + ; InworldRestartShutsDown = false + + ;; Persistence of changed objects happens during regular sweeps. The + ;; following control that behaviour to prevent frequently changing objects + ;; from heavily loading the region data store. + ;; If both of these values are set to zero then persistence of all changed + ;; objects will happen on every sweep. + + ;; Objects will be considered for persistance in the next sweep when they + ;; have not changed for this number of seconds. + ; MinimumTimeBeforePersistenceConsidered = 60 + + ;; Objects will always be considered for persistance in the next sweep + ;; if the first change occurred this number of seconds ago. + ; MaximumTimeBeforePersistenceConsidered = 600 + + ;; Should avatars in neighbor sims see objects in this sim? + ; see_into_this_sim_from_neighbor = true + + ;# {physical_prim} {} {Allow prims to be physical?} {true false} true + ;; if you would like to allow prims to be physical and move by physics + ;; with the physical checkbox in the client set this to true. + ; physical_prim = true + + ;; Select a mesher here. + ;; + ;; Meshmerizer properly handles complex prims by using triangle meshes. + ;; Note that only the ODE physics engine currently deals with meshed + ;; prims in a satisfactory way. + + ;; ZeroMesher is faster but leaves the physics engine to model the mesh + ;; using the basic shapes that it supports. + ;; Usually this is only a box. + ; meshing = Meshmerizer + ; meshing = ZeroMesher + + ;; Choose one of the physics engines below + ;; OpenDynamicsEngine is by some distance the most developed physics engine + ;; basicphysics effectively does not model physics at all, making all + ;; objects phantom + ; physics = OpenDynamicsEngine + ; physics = basicphysics + ; physics = POS + ; physics = modified_BulletX + + ;# {permissionmodules} {} {Permission modules to use (may specify multiple modules, separated by space} {} DefaultPermissionsModule + ;; Permission modules to use, separated by space. + ; permissionmodules = "DefaultPermissionsModule" + + ;# {serverside_object_permissions} {permissionmodules:DefaultPermissionsModule} {Activate permission handling by the sim?} {true false} true + ;; These are the parameters for the default permissions module + ;; + ;; If set to false, then, in theory, the server never carries out + ;; permission checks (allowing anybody to copy + ;; any item, etc. This may not yet be implemented uniformally. + ;; If set to true, then all permissions checks are carried out + ;; Default is false + ; serverside_object_permissions = false + + ;; This allows users with a UserLevel of 200 or more to assume god + ;; powers in the regions in this simulator. + ; allow_grid_gods = false + + ;; This allows some control over permissions + ;; please note that this still doesn't duplicate SL, and is not intended to + ; region_owner_is_god = true + ; region_manager_is_god = false + ; parcel_owner_is_god = true + + ;; Default script engine to use. Currently, we only have XEngine + ; DefaultScriptEngine = "XEngine" + + ;; Map tile options. You can choose to generate no map tiles at all, + ;; generate normal maptiles, or nominate an uploaded texture to + ;; be the map tile + ; GenerateMaptiles = "true" + + ;; If desired, a running region can update the map tiles periodically + ;; to reflect building activity. This names no sense of you don't have + ;; prims on maptiles. Value is in seconds. + ; MaptileRefresh = 0 + + ;; If not generating maptiles, use this static texture asset ID + ; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + + ;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false + ;; The email module requires some configuration. It needs an SMTP + ;; server to send mail through. + ; emailmodule = DefaultEmailModule + +[SMTP] + ;; The SMTP server enabled the email module to send email to external + ;; destinations. + + ;# {enabled} {[Startup]emailmodule:DefaultEmailModule} {Enable SMTP service?} {true false} true + ;; Enable sending email via SMTP + ; enabled = false + + ;# {internal_object_host} {[Startup]emailmodule:DefaultEmailModule enabled:true} {Host name to treat as internal (object to object) email?} {} lsl.opensim.local + ; internal_object_host = lsl.opensim.local + + ;# {host_domain_header_from} {[Startup]emailmodule:DefaultEmailModule enabled:true} {From address to use in the sent email header?} {} 127.0.0.1 + ; host_domain_header_from = "127.0.0.1" + + ;# {SMTP_SERVER_HOSTNAME} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server name?} {} 127.0.0.1 + ; SMTP_SERVER_HOSTNAME = "127.0.0.1" + + ;# {SMTP_SERVER_PORT} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server name?} {SMTP server port?} {} 25 + ; SMTP_SERVER_PORT = 25 + + ;# {SMTP_SERVER_LOGIN} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server user name?} {} + ; SMTP_SERVER_LOGIN = "" + + ;# {SMTP_SERVER_PASSWORD} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server password} {} + ; SMTP_SERVER_PASSWORD = "" + +[Network] + ;; Configure the remote console user here. This will not actually be used + ;; unless you use -console=rest at startup. + ; ConsoleUser = "Test" + ; ConsolePass = "secret" + ; console_port = 0 + + ;# {http_listener_port} {} {TCP Port for this simulator to listen on? (This must be unique to the simulator!)} {} 9000 + ;; Simulator HTTP port. This is not the region port, but the port the + ;; entire simulator listens on. This port uses the TCP protocol, while + ;; the region ports use UDP. + ; http_listener_port = 9000 + + ;# {ExternalHostNameForLSL} {} {Hostname to use for HTTP-IN URLs. This should be reachable from the internet.} {} + ;; Hostname to use in llRequestURL/llRequestSecureURL + ;; if not defined - default machine name is being used + ;; (on Windows this mean NETBIOS name - useably only inside local network) + ; ExternalHostNameForLSL = "127.0.0.1" + + ;# {shard} {} {Name to use for X-Secondlife-Shard header? (press enter if unsure)} {} OpenSim + ;; What is reported as the "X-Secondlife-Shard" + ;; Defaults to the user server url if not set + ;; The old default is "OpenSim", set here for compatibility + ;; The below is not commented for compatibility. + shard = "OpenSim" + + ;# {user_agent} {} {User agent to report to web servers?} {} OpenSim LSL (Mozilla Compatible) + ;; What is reported as the "User-Agent" when using llHTTPRequest + ;; Defaults to not sent if not set here. See the notes section in the wiki + ;; at http://wiki.secondlife.com/wiki/LlHTTPRequest for comments on adding + ;; " (Mozilla Compatible)" to the text where there are problems with a web server + ; user_agent = "OpenSim LSL (Mozilla Compatible)" + +[ClientStack.LindenUDP] + ;; See OpensSimDefaults.ini for the throttle options. You can copy the + ;; relevant sections and override them here. + ;; DO NOT MODIFY OpenSimDefaults.ini, as your changes would be lost + ;; with the next update! + + ;# {DisableFacelights} {} {Stop facelights from working?} {true false} false + ;; Quash and remove any light properties from attachments not on the + ;; hands. This allows flashlights and lanterns to function, but kills + ;; silly vanity "Facelights" dead. Sorry, head mounted miner's lamps + ;; will also be affected. + ;; This is especially important in artistic builds that depend on lights + ;; on the build for their appearance, since facelights will cause the + ;; building's lights to possibly not be rendered. + ; DisableFacelights = "false" + +[Chat] + ;# {whisper_distance} {} {Distance at which a whisper is heard, in meters?} {} 10 + ;; Distance in meters that whispers should travel. Default is 10m + ; whisper_distance = 10 + + ;# {say_distance} {} {Distance at which normal chat is heard, in meters? (SL uses 20 here)} {} 30 + ;; Distance in meters that ordinary chat should travel. Default is 30m + ; say_distance = 30 + + ;# {shout_distance} {Distance at which a shout is heard, in meters?} {} 100 + ;; Distance in meters that shouts should travel. Default is 100m + ; shout_distance = 100 + + +[Messaging] + ;# {OfflineMessageModule} {} {Module to use for offline message storage} {OfflineMessageModule *} + ;; Module to handle offline messaging. The core module requires an external + ;; web service to do this. See OpenSim wiki. + ; OfflineMessageModule = OfflineMessageModule + + ;# {OfflineMessageURL} {OfflineMessageModule:OfflineMessageModule} {URL of offline messaging service} {} + ;; URL of web service for offline message storage + ; OfflineMessageURL = http://yourserver/Offline.php + + ;# {MuteListModule} {OfflineMessageModule:OfflineMessageModule} {} {} MuteListModule + ;; Mute list handler (not yet implemented). MUST BE SET to allow offline + ;; messages to work + ; MuteListModule = MuteListModule + + ;# {MuteListURL} {OfflineMessageModule:OfflineMessageModule} {} {} http://yourserver/Mute.php + ;; URL of the web service that serves mute lists. Not currently used, but + ;; must be set to allow offline messaging to work. + ; MuteListURL = http://yourserver/Mute.php + + ;; Control whether group messages are forwarded to offline users. + ;; Default is true. + ;; This applies to the core groups module (Flotsam) only. + ; ForwardOfflineGroupMessages = true + + +[ODEPhysicsSettings] + ;# {mesh_sculpted_prim} {[Startup]physics:OpenDynamicsEngine} {Mesh sculpties so they collide as they look?} {true false} true + ;; Do we want to mesh sculpted prim to collide like they look? + ; mesh_sculpted_prim = true + + ;# {use_NINJA_physics_joints} {[Startup]physics:OpenDynamicsEngine} {Use jointed (NINJA) physics?} {true false} false + ;; If you would like physics joints to be enabled through a special naming + ;; convention in the client, set this to true. + ;; (see NINJA Physics, http://opensimulator.org/wiki/NINJA_Physics) + ; use_NINJA_physics_joints = false + + +[RemoteAdmin] + ;; This is the remote admin module, which uses XMLRPC requests to + ;; manage regions from a web interface. + + ;# {enabled} {} {Enable the remote admin interface?} {true false} false + ; enabled = false + + ;# {port} {enabled:true} {Port to use for the remote admin interface? (0 = default)} {} 0 + ;; Set this to a nonzero value to have remote admin use a different port + ; port = 0 + + ;# {access_password} {enabled:true} {Password for the remote admin interface} {} + ;; This password is required to make any XMLRPC call (should be set as + ;; the "password" parameter) + ; access_password = "" + + ;# {create_region_enable_voice} {enabled:true} {Enable voice for newly created regions?} {true false} false + ;; set this variable to true if you want the create_region XmlRpc + ;; call to unconditionally enable voice on all parcels for a newly + ;; created region [default: false] + ; create_region_enable_voice = false + + ;# {create_region_public} {enabled:true} {Make newly created regions public?} {true false} false + ;; set this variable to false if you want the create_region XmlRpc + ;; call to create all regions as private per default (can be + ;; overridden in the XmlRpc call) [default: true] + ; create_region_public = false + + ;# {enabled_methods} {enabled:true} {List of methods to allow, separated by |} {} all + ;; enable only those methods you deem to be appropriate using a | delimited + ;; whitelist. + ;; For example: + ;; enabled_methods = admin_broadcast|admin_save_oar|admin_save_xml + ;; if this parameter is not specified but enabled = true, all methods + ;; will be available + ; enabled_methods = all + + ;; specify the default appearance for an avatar created through the remote + ;; admin interface + ;; This will only take effect is the file specified by the + ;; default_appearance setting below exists + ; default_male = Default Male + ; default_female = Default Female + + ;; Update appearance copies inventory items and wearables of default + ;; avatars. if this value is false, just worn assets are copied to the + ;; Clothes folder; if true, all Clothes and Bodyparts subfolders are copied. + ;; The receiver will wear the same items the default avatar did wear. + ; copy_folders = false + + ;; Path to default appearance XML file that specifies the look of the + ;; default avatars + ; default_appearance = default_appearance.xml + +[Wind] + ;# {enabled} {} {Enable wind module?} {true false} true + ;; Enables the wind module. Default is true + ;enabled = true + + ;# {wind_update_rate} {enabled:true} {Wind update rate in frames?} {} 150 + ;; How often should wind be updated, as a function of world frames. + ;; Approximately 50 frames a second + wind_update_rate = 150 + + ;; The Default Wind Plugin to load + ; wind_plugin = SimpleRandomWind + + ;; These settings are specific to the ConfigurableWind plugin + ;; To use ConfigurableWind as the default, simply change wind_plugin + ;; to ConfigurableWind and uncomment the following. + ; avg_strength = 5.0 + ; avg_direction = 0.0 + ; var_strength = 0.0 + ; var_direction = 0.0 + ; rate_change = 1.0 + + ;# {strength} {enabled:true wind_plugin:SimpleRandomWind} {Wind strength?} {} 1.0 + ;; This setting is specific to the SimpleRandomWind plugin + ;; Adjusts wind strength. 0.0 = no wind, 1.0 = normal wind. Default is 1.0 + ; strength = 1.0 + +[LightShare] + ;# {enable_windlight} {} {Enable LightShare technology?} {true false} false + ;; This enables the transmission of Windlight scenes to supporting clients, + ;; such as the Meta7 viewer. + ;; It has no ill effect on viewers which do not support server-side + ;; windlight settings. + ;; Currently we only have support for MySQL databases. + ; enable_windlight = false; + +[DataSnapshot] + ;# {index_sims} {} {Enable data snapshotting (search)?} {true false} false + ;; The following set of configs pertains to search. + ;; Set index_sims to true to enable search engines to index your + ;; searchable data. + ;; If false, no data will be exposed, DataSnapshot module will be off, + ;; and you can ignore the rest of these search-related configs. + ; index_sims = false + + + ;# {data_exposure} {index_sims:true} {How much data should be exposed?} {minimum all} minimum + ;; The variable data_exposure controls what the regions expose: + ;; minimum: exposes only things explicitly marked for search + ;; all: exposes everything + ; data_exposure = minimum + + ;# {gridname} {index_sims:true} {Enter the name fo your grid} {} OSGrid + ;; If search is on, change this to your grid name; will be ignored for + ;; standalones + ; gridname = "OSGrid" + + ;# {default_snapshot_period} {index_sims:true} {Period between data snapshots?} {} 1200 + ;; Period between data snapshots, in seconds. 20 minutes, for starters, + ;; so that you see the initial changes fast. + ;; Later, you may want to increase this to 3600 (1 hour) or more + ; default_snapshot_period = 1200 + + ;; This will be created in bin, if it doesn't exist already. It will hold + ;; the data snapshots. + ; snapshot_cache_directory = "DataSnapshot" + + ;# {data_services} {index_sims:true} {Data service URLs to register with?} {} http://metaverseink.com/cgi-bin/register.py + ; This semicolon-separated string serves to notify specific data services + ; about the existence of this sim. Uncomment if you want to index your + ; data with this and/or other search providers. + ; data_services="http://metaverseink.com/cgi-bin/register.py" + + +[Economy] + ;; The economy module is not enabled by default and there is no easy, + ;; menu controlled way to do this. To enabled this module, insert + ;; economymodule = BetaGridLikeMoneyModule + ;; into the startup section (at the top of this file). + ;; Then configure the options below as needed. + + ;; Enables selling things for $0 + ; SellEnabled = "false" + + ;; Money Unit fee to upload textures, animations etc + ; PriceUpload = 0 + + ;; Money Unit fee to create groups + ; PriceGroupCreate = 0 + +[XEngine] + ;# {Enabled} {} {Enable the XEngine scripting engine?} {true false} true + ;; Enable this engine in this OpenSim instance + ; Enabled = true + + ;; How many threads to keep alive even if nothing is happening + ; MinThreads = 2 + + ;; How many threads to start at maximum load + ; MaxThreads = 100 + + ;; Time a thread must be idle (in seconds) before it dies + ; IdleTimeout = 60 + + ;# {Priority} {Enabled:true} {Priority for script engine threads?} {Lowest BelowNormal Normal AboveNormal Highest} BelowNormal + ;; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", + ;; "Highest") + ; Priority = "BelowNormal" + + ;; Maximum number of events to queue for a script (excluding timers) + ; MaxScriptEventQueue = 300 + + ;; Stack size per thread created + ; ThreadStackSize = 262144 + + ;; Set this to true (the default) to load each script into a separate + ;; AppDomain. Setting this to false will load all script assemblies into the + ;; current AppDomain, which will reduce the per-script overhead at the + ;; expense of reduced security and the inability to garbage collect the + ;; script assemblies + ; AppDomainLoading = true + + ;# {DefaultCompileLanguage} {Enabled:true} {Default script language?} {lsl vb cs} lsl + ;; Default language for scripts + ; DefaultCompileLanguage = "lsl" + + ;# {AllowedCompilers} {Enabled:true} {Languages to allow (comma separated)?} {} lsl + ;; List of allowed languages (lsl,vb,cs) + ;; AllowedCompilers=lsl,cs,js,vb. + ;; *warning*, non lsl languages have access to static methods such as + ;; System.IO.File. Enable at your own risk. + ; AllowedCompilers = "lsl" + + ;; Compile debug info (line numbers) into the script assemblies + ; CompileWithDebugInformation = true + + ;; Allow the user of mod* functions. This allows a script to pass messages + ;; to a region module via the modSendCommand() function + ;; Default is false + ; AllowMODFunctions = false + + ;# {AllowOSFunctions} {Enabled:true} {Allow OSFunctions? (DANGEROUS!)} {true false} false + ;; Allow the use of os* functions (some are dangerous) + ; AllowOSFunctions = false + + ;# {AllowLightShareFunctions} {Enabled:true [LightShare]enable_windlight:true} {Allow LightShare functions?} {true false} true + ; Allow the user of LightShare functions + ; AllowLightShareFunctions = false + + ;# {OSFunctionThreatLevel} {Enabled:true AllowOSFunctions:true} {OSFunction threat level? (DANGEROUS!)} {None VeryLow Low Moderate High VeryHigh Severe} VeryLow + ;; Threat level to allow, one of None, VeryLow, Low, Moderate, High, + ;; VeryHigh, Severe + OSFunctionThreatLevel = VeryLow + + ;; Time a script can spend in an event handler before it is interrupted + ; EventLimit = 30 + + ;; If a script overruns it's event limit, kill the script? + ; KillTimedOutScripts = false + + ;; Sets the multiplier for the scripting delays + ; ScriptDelayFactor = 1.0 + + ;; The factor the 10 m distances llimits are multiplied by + ; ScriptDistanceLimitFactor = 1.0 + + ;; Maximum length of notecard line read + ;; Increasing this to large values potentially opens + ;; up the system to malicious scripters + ; NotecardLineReadCharsMax = 255 + + ;; Sensor settings + ; SensorMaxRange = 96.0 + ; SensorMaxResults = 16 + + ;; Disable underground movement of prims (default true); set to + ;; false to allow script controlled underground positioning of + ;; prims + ; DisableUndergroundMovement = true + +[MRM] + ;; Enables the Mini Region Modules Script Engine. + ;; default is false + ; Enabled = false + + ;; Runs MRM in a Security Sandbox + ;; WARNING: DISABLING IS A SECURITY RISK. + ; Sandboxed = true + + ;; The level sandbox to use, adjust at your OWN RISK. + ;; Valid values are: + ;; * FullTrust + ;; * SkipVerification + ;; * Execution + ;; * Nothing + ;; * LocalIntranet + ;; * Internet + ;; * Everything + ; SandboxLevel = "Internet" + + ;; Only allow Region Owners to run MRMs + ;; May represent a security risk if you disable this. + ; OwnerOnly = true + +[FreeSwitchVoice] + ;; In order for this to work you need a functioning FreeSWITCH PBX set up. + ;; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module + ; enabled = false + + ;; FreeSWITCH server is going to contact us and ask us all sorts of things + ; freeswitch_server_user = freeswitch + ; freeswitch_server_pass = password + ; freeswitch_api_prefix = /api + + ;; external IP address of your OpenSim voice enabled region + ;; note: all regions running on same OpenSim.exe will be enabled + ; freeswitch_service_server = ip.address.of.your.sim + + ;; this should be the same port the region listens on + ; freeswitch_service_port = 9000 + ; freeswitch_realm = ip.address.of.freeswitch.server + ; freeswitch_sip_proxy = ip.address.of.freeswitch.server:5060 + + ;; STUN = Simple Traversal of UDP through NATs + ;; See http://wiki.freeswitch.org/wiki/NAT_Traversal + ;; stun.freeswitch.org is not guaranteed to be running so use it in + ;; production at your own risk + ; freeswitch_attempt_stun = false + ; freeswitch_stun_server = ip.address.of.stun.server + ; freeswitch_echo_server = ip.address.of.freeswitch.server + ; freeswitch_echo_port = 50505 + ; freeswitch_well_known_ip = ip.address.of.freeswitch.server + + ;; Type the address of your http server here, hostname is allowed. + ;; This is provided so you can specify a hostname + ;; This is used by client for account verification. By default, it's the + ;; same as the freeswitch service server. + ; opensim_well_known_http_address = Address_Of_Your_SIM_HTTP_Server + + ;; Timeouts + ; freeswitch_default_timeout = 5000 + ; freeswitch_subscribe_retry = 120 + + ;; Misc + ; freeswitch_password_reset_url = + +[Groups] + ;# {Enabled} {} {Enable groups?} {true false} false + ;; Enables the groups module + ; Enabled = false + + ;# {Module} {Enabled:true} {Groups module to use? (Use GroupsModule to use Flotsam/Simian)} {} Default + ;; This is the current groups stub in Region.CoreModules.Avatar.Groups. + ;; All the other settings below only really apply to the Flotsam/SimianGrid + ;; GroupsModule. + ;; This module can use a PHP XmlRpc server from the Flotsam project at + ;; http://code.google.com/p/flotsam/ + ;; or from the SimianGrid project at http://code.google.com/p/openmetaverse + ; Module = Default + + + ;; Service connectors to the Groups Service. Select one depending on + ;; whether you're using a Flotsam XmlRpc backend or a SimianGrid backend + + ;# {ServicesConnectorModule} {Module:GroupsModule} {Service connector to use for groups?} {XmlRpcGroupsServicesConnector SimianGroupsServicesConnector} XmlRpcGroupsServicesConnector + ;; The service connector to use for the GroupsModule + ; ServicesConnectorModule = SimianGroupsServicesConnector + + ;# {GroupsServerURI} {Module:GroupsModule} {Groups Server URI?} {} + ;; URI for the groups services + ; GroupsServerURI = "" + + ;# {NoticesEnabled} {Module:GroupsModule} {Enable group notices?} {true false} true + ;; Enable Group Notices + ; NoticesEnabled = true + + ;; This makes the Groups modules very chatty on the console. + ; DebugEnabled = false + + ;; Specify which messaging module to use for groups messaging and if it's + ;; enabled + ; MessagingModule = GroupsMessagingModule + ; MessagingEnabled = true + + ;; XmlRpc Security settings. These must match those set on your backend + ;; groups service. + ; XmlRpcServiceReadKey = 1234 + ; XmlRpcServiceWriteKey = 1234 + +[InterestManagement] + ;# {UpdatePrioritizationScheme} {} {Update prioritization scheme?} {BestAvatarResponsiveness Time Distance SimpleAngularDistance FrontBack} BestAvatarResponsiveness + ;; This section controls how state updates are prioritized for each client + ;; Valid values are BestAvatarResponsiveness, Time, Distance, + ;; SimpleAngularDistance, FrontBack + ; UpdatePrioritizationScheme = BestAvatarResponsiveness + +[MediaOnAPrim] + ;# {Enabled} {} {Enable Media-on-a-Prim (MOAP)} {true false} true + ;; Enable media on a prim facilities + ; Enabled = true; + +[Architecture] + ;# {Include-Architecture} {} {Choose one of the following architectures} {config-include/Standalone.ini config-include/StandaloneHypergrid.ini config-include/Grid.ini config-include/GridHypergrid.ini config-include/SimianGrid.ini config-include/HyperSimianGrid.ini} config-include/Standalone.ini + ;; Choose one of these architecture includes: + ;; Include-Architecture = "config-include/Standalone.ini" + ;; Include-Architecture = "config-include/StandaloneHypergrid.ini" + ;; Include-Architecture = "config-include/Grid.ini" + ;; Include-Architecture = "config-include/GridHypergrid.ini" + ;; Include-Architecture = "config-include/SimianGrid.ini" + ;; Include-Architecture = "config-include/HyperSimianGrid.ini" + ; Include-Architecture = "config-include/Standalone.ini" + + ;; Then choose + ;; config-include/StandaloneCommon.ini.example (if you're in standlone) OR + ;; config-include/GridCommon.ini.example (if you're connected to a grid) + ;; Copy to your own .ini there (without .example extension) and edit it + ;; to customize your data diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 8d714ce..94d021d 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -848,9 +848,6 @@ ; Enables selling things for $0 SellEnabled = "false" - ; 45000 is the highest value that the sim could possibly report because of protocol constraints - ObjectCapacity = 45000 - ; Money Unit fee to upload textures, animations etc PriceUpload = 0 @@ -1228,8 +1225,9 @@ [InterestManagement] ; This section controls how state updates are prioritized for each client - ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack - UpdatePrioritizationScheme = FrontBack + ; Valid values are BestAvatarResponsiveness, Time, Distance, + ; SimpleAngularDistance, and FrontBack + UpdatePrioritizationScheme = BestAvatarResponsiveness ReprioritizationEnabled = true ReprioritizationInterval = 2000.0 RootReprioritizationDistance = 10.0 @@ -1266,34 +1264,3 @@ ;; default standalone, overridable in StandaloneCommon.ini StorageProvider = "OpenSim.Data.Null.dll:NullRegionData" - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; The following is the configuration section for the new style services - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -[Architecture] - ; Choose exactly one and only one of the architectures below. - - Include-Standalone = "config-include/Standalone.ini" - ;Include-HGStandalone = "config-include/StandaloneHypergrid.ini" - ;Include-Grid = "config-include/Grid.ini" - ;Include-HGGrid = "config-include/GridHypergrid.ini" - ;Include-SimianGrid = "config-include/SimianGrid.ini" - ;Include-HyperSimianGrid = "config-include/HyperSimianGrid.ini" - - ; Then choose - ; config-include/StandaloneCommon.ini.example (if you're in standlone) OR - ; config-include/GridCommon.ini.example (if you're connected to a grid) - ; Copy to your own .ini there (without .example extension) and edit it - ; to customize your data - - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; The below pulls in optional module config files - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -[Modules] - Include-modules = "addon-modules/*/config/*.ini" - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ENSURE [Architecture] and [Modules] Sections with their "includes" -;; are last to allow for overrides -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -- cgit v1.1 From 16f296f48932379a89c52f095eae199347f33407 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 15 Sep 2010 21:41:42 +0100 Subject: Instead of locking SOG.Children when a group is being removed from the scene, iterate over an unlocked list instead Previously, deadlock was possible because deleting a group took a SOG.Children lock then an m_entityUpdates.SyncRoot lock in LLClientView At the same time, a thread starting from LLClientView.ProcessEntityUpdates() could take an m_entityUpdates.SyncRoot lock then later attempt to take a SOG.Children lock in PermissionsModule.GenerateClientFlags() and later on Taking a children list in SOG appears to be a better solution than changing PermissionsModule to not relook up the prim. Going the permission modules root would require that all downstream modules not take a SOG.Children lock either --- .../Region/Framework/Scenes/SceneObjectGroup.cs | 32 ++++++++++++---------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index dc6509d..99c2abf 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.IO; +using System.Linq; using System.Threading; using System.Xml; using System.Xml.Serialization; @@ -1236,26 +1237,27 @@ namespace OpenSim.Region.Framework.Scenes /// <param name="silent">If true then deletion is not broadcast to clients</param> public void DeleteGroup(bool silent) { + List<SceneObjectPart> parts; + lock (m_parts) + parts = m_parts.Values.ToList(); + + foreach (SceneObjectPart part in parts) { - foreach (SceneObjectPart part in m_parts.Values) + Scene.ForEachScenePresence(delegate(ScenePresence avatar) { -// part.Inventory.RemoveScriptInstances(); - Scene.ForEachScenePresence(delegate(ScenePresence avatar) + if (avatar.ParentID == LocalId) { - if (avatar.ParentID == LocalId) - { - avatar.StandUp(); - } + avatar.StandUp(); + } - if (!silent) - { - part.UpdateFlag = 0; - if (part == m_rootPart) - avatar.ControllingClient.SendKillObject(m_regionHandle, part.LocalId); - } - }); - } + if (!silent) + { + part.UpdateFlag = 0; + if (part == m_rootPart) + avatar.ControllingClient.SendKillObject(m_regionHandle, part.LocalId); + } + }); } } -- cgit v1.1 From 39d27fc8795e642280cc255c5c1c4ff1c7a915ec Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 15 Sep 2010 22:29:58 +0100 Subject: rename SceneObjectGroup.DeleteGroup() to DeleteGroupFromScene() to improve code readability --- OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs | 2 +- OpenSim/Region/Framework/Scenes/Scene.cs | 2 +- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 +- OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index 916148b..64567db 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs @@ -105,7 +105,7 @@ namespace OpenSim.Region.Framework.Scenes if (permissionToDelete) { foreach (SceneObjectGroup g in objectGroups) - g.DeleteGroup(false); + g.DeleteGroupFromScene(false); } } diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ef97dfc..8a90bc8 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2120,7 +2120,7 @@ namespace OpenSim.Region.Framework.Scenes EventManager.TriggerParcelPrimCountTainted(); } - group.DeleteGroup(silent); + group.DeleteGroupFromScene(silent); // m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID); } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 99c2abf..f9a8d41 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1235,7 +1235,7 @@ namespace OpenSim.Region.Framework.Scenes /// must be handled by the caller. /// /// <param name="silent">If true then deletion is not broadcast to clients</param> - public void DeleteGroup(bool silent) + public void DeleteGroupFromScene(bool silent) { List<SceneObjectPart> parts; diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs index fd59138..0b02a9f 100644 --- a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs +++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs @@ -263,7 +263,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); scene.SendKillObject(scene.Entities[uuid].LocalId); scene.SceneGraph.DeleteSceneObject(uuid, false); - ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroup(false); + ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroupFromScene(false); } catch(Exception e) { -- cgit v1.1 From 7383173d3d33b9aeb5e097b2bc55959ede822e94 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 15 Sep 2010 23:06:38 +0100 Subject: extend m_entityUpdates.SyncRoot lock in LLClientView.ProcessEntityUpdates() to reduce scope for kill/update race conditions This is necessary because it was still possible for an entity update packet to be constructed, the thread to pause, a kill to be sent on another thread, and then the original thread to resume and send the update This would result in an update being received after a kill, which results in undeletable ghost objects until the viewer is relogged Extending the lock looks okay since its only taken by kill, update and reprioritize, and both kill and update do not take further locks However, evidence suggests that there is still a kill/update race somewhere --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 98 +++++++++++----------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 0aa670a..2163c12 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -3678,56 +3678,56 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Block Construction } - } - - #region Packet Sending - - const float TIME_DILATION = 1.0f; - ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f); - - if (objectUpdateBlocks.IsValueCreated) - { - List<ObjectUpdatePacket.ObjectDataBlock> blocks = objectUpdateBlocks.Value; - - ObjectUpdatePacket packet = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); - packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; - packet.RegionData.TimeDilation = timeDilation; - packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[blocks.Count]; - - for (int i = 0; i < blocks.Count; i++) - packet.ObjectData[i] = blocks[i]; - - OutPacket(packet, ThrottleOutPacketType.Task, true); - } - - if (compressedUpdateBlocks.IsValueCreated) - { - List<ObjectUpdateCompressedPacket.ObjectDataBlock> blocks = compressedUpdateBlocks.Value; - - ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); - packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; - packet.RegionData.TimeDilation = timeDilation; - packet.ObjectData = new ObjectUpdateCompressedPacket.ObjectDataBlock[blocks.Count]; - - for (int i = 0; i < blocks.Count; i++) - packet.ObjectData[i] = blocks[i]; - - OutPacket(packet, ThrottleOutPacketType.Task, true); - } - - if (terseUpdateBlocks.IsValueCreated) - { - List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value; - - ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); - packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; - packet.RegionData.TimeDilation = timeDilation; - packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; - - for (int i = 0; i < blocks.Count; i++) - packet.ObjectData[i] = blocks[i]; - OutPacket(packet, ThrottleOutPacketType.Task, true); + #region Packet Sending + + const float TIME_DILATION = 1.0f; + ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f); + + if (objectUpdateBlocks.IsValueCreated) + { + List<ObjectUpdatePacket.ObjectDataBlock> blocks = objectUpdateBlocks.Value; + + ObjectUpdatePacket packet = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); + packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; + packet.RegionData.TimeDilation = timeDilation; + packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[blocks.Count]; + + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + OutPacket(packet, ThrottleOutPacketType.Task, true); + } + + if (compressedUpdateBlocks.IsValueCreated) + { + List<ObjectUpdateCompressedPacket.ObjectDataBlock> blocks = compressedUpdateBlocks.Value; + + ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); + packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; + packet.RegionData.TimeDilation = timeDilation; + packet.ObjectData = new ObjectUpdateCompressedPacket.ObjectDataBlock[blocks.Count]; + + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + OutPacket(packet, ThrottleOutPacketType.Task, true); + } + + if (terseUpdateBlocks.IsValueCreated) + { + List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value; + + ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); + packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; + packet.RegionData.TimeDilation = timeDilation; + packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; + + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + OutPacket(packet, ThrottleOutPacketType.Task, true); + } } #endregion Packet Sending -- cgit v1.1 From f5e3d5a33a45196fa447c2ece764653349290d7a Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 15 Sep 2010 23:24:58 +0100 Subject: Add the modules include line back that i dropped by mistake --- bin/OpenSimDefaults.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 94d021d..e78f25b 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -1264,3 +1264,6 @@ ;; default standalone, overridable in StandaloneCommon.ini StorageProvider = "OpenSim.Data.Null.dll:NullRegionData" +[Modules] + Include-modules = "addon-modules/*/config/*.ini" + -- cgit v1.1