Compare commits

..

6190 Commits

Author SHA1 Message Date
UbitUmarov
c0a4a4a4bd cosmetics on janusmessages 2026-03-11 21:03:18 +00:00
UbitUmarov
ccc6e7b3b5 cosmetics on janusmessages 2026-03-11 20:37:50 +00:00
UbitUmarov
f785a45418 try to use HttpCompletionOption.ResponseHeadersRead again 2026-03-11 18:52:49 +00:00
UbitUmarov
d3f314b292 httpclient stream timout ignored under xml deserialize, so waste memory and time getting it all into mem first 2026-03-05 03:46:28 +00:00
UbitUmarov
18f652ee8d try to timeout httpclient reads 2026-02-27 16:15:10 +00:00
UbitUmarov
a99a3d2b3c split userprofiles request queues into local and HG, add console debug comand profiles status to check size of those queues
Some checks failed
.msbuildnet6 / build (push) Has been cancelled
2026-02-27 01:33:50 +00:00
UbitUmarov
492ac6a629 update CSJ2K 2026-02-26 19:56:34 +00:00
UbitUmarov
c725dae95a Ooops fix stun servers URIs. Thx MB 2026-02-26 17:20:13 +00:00
UbitUmarov
5fd022e33c more things on webrtc, reduce use of async/await 2026-02-26 14:53:45 +00:00
UbitUmarov
fc607035c8 add to opensim.ini a list of stun servers and send it to viewers in simulator features cap 2026-02-25 19:37:02 +00:00
UbitUmarov
044b5f69aa rename os webrtc ini file to *.example since only a few can test it, for now 2026-02-24 17:01:46 +00:00
UbitUmarov
b41033a8f1 do not fully trust viewers about parcels, plus cosmetics 2026-02-23 20:52:34 +00:00
UbitUmarov
b42e8dc0ad change webrtc module namespace by Robert request 2026-02-22 20:15:34 +00:00
UbitUmarov
adf5f1f6bd a few changes to webrtc module 2026-02-22 20:03:36 +00:00
UbitUmarov
674c3a0424 add Robert Adams os-webrtc-janus experimental module. License changed to same BSD as rest of OpenSimulator by Robert, for OpenSimulator use 2026-02-22 17:11:34 +00:00
UbitUmarov
eaed2f5b02 add llSetRenderMaterial (ugly code) 2026-02-22 11:51:58 +00:00
UbitUmarov
511c4c637c add some more checks nulls at profiles 2026-02-17 18:58:56 +00:00
UbitUmarov
8467ee34ff add lsl constant CLICK_ACTION_IGNORE 2026-01-31 16:14:09 +00:00
UbitUmarov
64cffc3389 cosmetics 2026-01-29 04:55:53 +00:00
UbitUmarov
4f8147696a fix setup of find parcel by fakeID at load 2026-01-29 04:55:21 +00:00
UbitUmarov
bd1e32546f cosmetics 2026-01-25 21:05:54 +00:00
UbitUmarov
25ad17d068 mantis 9230: flag need for prims inventory saves in more 9un0link cases 2026-01-24 21:40:00 +00:00
UbitUmarov
b9023bb3b6 cosmetics 2026-01-21 02:07:41 +00:00
UbitUmarov
86a879c9dd linux compiler gets confused... 2026-01-14 20:56:44 +00:00
UbitUmarov
4833652d9b let osNpcPlayAnimation play any animation from asset service, if a uuid is provided, instead of only default animations 2026-01-14 02:46:18 +00:00
UbitUmarov
aed3df84a7 try to improve wquivalent regions count for standalones case on grid stats. Thx Tampa 2026-01-13 19:07:43 +00:00
UbitUmarov
9132b1c982 avoid going out bounds on llInsertString. Thx Tampa 2026-01-13 02:39:43 +00:00
UbitUmarov
afd5b34b8a mode set tcp no delay inside try catch 2026-01-06 20:13:13 +00:00
UbitUmarov
0fbf5a44b3 cosmetics 2025-12-19 20:52:36 +00:00
UbitUmarov
d9d876fb5c avoid possible null refs in parseString2List. thx Tampa 2025-12-19 05:12:18 +00:00
UbitUmarov
d9ae06f338 add a socket null check 2025-12-10 00:28:32 +00:00
UbitUmarov
139f51e01b a few changes on ServiceURLs. Add some extra checks on AssetServiceURI 2025-11-29 22:49:07 +00:00
UbitUmarov
257d4dbe0a fix typo 2025-11-25 17:50:23 +00:00
UbitUmarov
c71e61dfd6 cosmetics 2025-11-25 17:45:06 +00:00
Vincent Sylvester
2db1fabd10 TIFF loader up to 32bit floats, cosmetics
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-11-25 16:43:22 +00:00
UbitUmarov
a0713398ba another change to pgsql 2025-11-23 00:43:51 +00:00
UbitUmarov
8714f59277 a few changes to pgsql, Thx Tampa, (untested, may be bad) 2025-11-23 00:35:17 +00:00
UbitUmarov
d29cbadbb6 caps still wrong 2025-11-17 13:10:55 +00:00
UbitUmarov
9df830a943 caps still wrong 2025-11-17 13:07:23 +00:00
UbitUmarov
5ece922c09 caps still wrong 2025-11-17 12:54:07 +00:00
UbitUmarov
3a8e172b68 add linux arm64 2025-11-17 12:48:18 +00:00
UbitUmarov
c793ad5415 fix sqlite config filename case 2025-11-17 12:30:41 +00:00
UbitUmarov
080ea9fbbf fix pointer to new native sqlite lib file on linux 2025-11-17 10:58:30 +00:00
UbitUmarov
0245886cb1 increment profile migration number on the one that did add the table usersettings, that had the typo 2025-11-13 16:16:05 +00:00
UbitUmarov
fe425a8284 cosmetics to kick github to compile the fix to the typo on sqlile 2025-11-13 04:07:18 +00:00
UbitUmarov
582f2a1fb6 fix a type on a sqlite migration, that was ignored on older version 2025-11-13 03:40:30 +00:00
UbitUmarov
1ee78e40dd cosmetics 2025-11-10 18:41:14 +00:00
UbitUmarov
67137bbacf cosmetics 2025-11-10 18:37:00 +00:00
UbitUmarov
19217833ce bad git.. missing files 2025-11-10 17:41:06 +00:00
UbitUmarov
9612ea2491 mantis 9219: update SQLite to System.Data.Sqlite 2.0.2 (native 3.50.4.5). Must run prebuild. This needs testing :( 2025-11-10 17:35:22 +00:00
UbitUmarov
dc4513ac33 remove mono.data.sqliteclient,dll obsolete since mono 1.2.4, Aparently only used in webstats. So we reduce obsolesce issuses to just Mono.Data.Sqlite, for now (needs testing, and do run prebuild) 2025-10-28 18:14:36 +00:00
UbitUmarov
c69eca6911 more on ReaderWriterLockSlim and thread.abort 2025-10-18 22:07:51 +01:00
UbitUmarov
d6c83aee6b simplify DoubleDictionaryThreadAbortSafe because dotnet no longer has thread.abort. Name is not wrong but keep it for now 2025-10-18 21:25:06 +01:00
UbitUmarov
ca11a13f97 apply by and the patch in mantis 9218 and change it. (Untested) 2025-10-06 00:06:24 +01:00
UbitUmarov
13ec0b9221 put back lost parentgroud null check, it is still needed on load code 2025-10-05 20:53:49 +01:00
UbitUmarov
7249b20796 irritating warnings 2025-10-05 03:37:32 +01:00
UbitUmarov
5590105e31 cosmetics 2025-10-05 03:31:55 +01:00
UbitUmarov
7c5ca30636 cosmetics 2025-10-05 03:28:05 +01:00
UbitUmarov
886fada445 cosmetics on YEngine 2025-10-05 03:20:44 +01:00
UbitUmarov
8b96e73938 cosmetics 2025-10-05 02:36:34 +01:00
UbitUmarov
41dda4407e avoid some unnecessary sog saves 2025-10-04 23:19:46 +01:00
UbitUmarov
f25f6d57c2 remove duplicated array bound check 2025-10-04 22:54:07 +01:00
UbitUmarov
02249bb0af reduce unnecessary saves of prim inventories 2025-09-23 22:54:30 +01:00
Vincent Sylvester
67e7dbc2e2 Cosmetics, unnecessary strings
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-09-16 18:43:22 +01:00
UbitUmarov
154637b244 patch from Licu Rau from Craft/World for PostgreSQL friends (untested :() 2025-09-16 18:37:58 +01:00
UbitUmarov
153a5e978a let llSetBuoyancy work on attachments. But unlike at sl, the effect is not removed when the script or its prim is removed/deattached. SO use with care. THis lmitation was a reason why we did not let is work on attachments 2025-09-05 19:22:12 +01:00
UbitUmarov
2950d07c86 cosmetics 2025-08-27 23:46:22 +01:00
UbitUmarov
0fc4291ffa cosmetics 2025-08-25 01:28:30 +01:00
UbitUmarov
1b81b995ef add a missing foldername urlencode on xinventory folder update 2025-08-25 00:12:55 +01:00
UbitUmarov
9dbaa4d3ac change api,yengine compile and serial version numbers (this will force scripts recompile and return to start state) 2025-08-21 22:27:47 +01:00
UbitUmarov
430c5ee9ce change defauld fov 2025-08-17 01:31:28 +01:00
UbitUmarov
15dc813fae some changes to llWorldPosToHUD. May need more (ofc it is opensim) 2025-08-17 01:23:44 +01:00
UbitUmarov
44c942788f simplify some comments about physics on ini files 2025-08-16 18:31:30 +01:00
UbitUmarov
392d324863 add llWorldPosToHUD 2025-08-16 04:31:17 +01:00
UbitUmarov
4ec6248dad add llIsLinkGLTFMaterial 2025-08-16 02:32:54 +01:00
UbitUmarov
0197ffc3ee add llGetRenderMaterial 2025-08-16 01:42:39 +01:00
UbitUmarov
988501e141 set ubODE as default physics engine 2025-08-15 17:09:17 +01:00
UbitUmarov
3b4f04107b cosmetics 2025-08-14 23:16:12 +01:00
UbitUmarov
6f5eb8c7b8 ok that was not the stub.. 2025-08-14 22:26:23 +01:00
UbitUmarov
f79e04d307 add stub for llMapBeacon 2025-08-14 22:24:31 +01:00
UbitUmarov
676d768ae7 mantis 9213: update libomv 2025-08-14 21:26:57 +01:00
UbitUmarov
fbdcf70c4a break err update libomv 2025-08-14 20:32:10 +01:00
UbitUmarov
3de5e6db14 take some future code out 2025-08-13 14:33:25 +01:00
UbitUmarov
6146233848 mantis 9212: a few changes to Lure and message transfer 2025-08-13 14:26:20 +01:00
UbitUmarov
6edc1f962b llMap* lookat does nothing 2025-08-13 12:30:07 +01:00
UbitUmarov
be8b208bf5 missing file 2025-08-12 23:48:13 +01:00
UbitUmarov
739e7a21a1 add llMapBeacon 2025-08-12 23:45:38 +01:00
UbitUmarov
7ac111627f some changes to llMapDestination 2025-08-12 22:26:46 +01:00
UbitUmarov
42994195b0 update libomv 2025-08-12 22:10:17 +01:00
UbitUmarov
5ef4abdf25 mantis 9211: change handling of event args on Yeng. Ofc needs some
testing
2025-08-05 19:02:17 +01:00
UbitUmarov
63bef17153 split exception detection on oshttp accept loop for better log 2025-08-05 17:50:02 +01:00
UbitUmarov
e3a50fb2f1 cosmetics 2025-08-02 17:33:26 +01:00
UbitUmarov
fce1666f04 change handling of event arguments (should only impact new compilations) 2025-08-02 17:31:43 +01:00
UbitUmarov
d504d1f679 remember heap used by locals 2025-08-02 17:28:35 +01:00
UbitUmarov
484ecad89e mantis 9209: another change 2025-07-31 00:43:35 +01:00
UbitUmarov
eea69a685c mantis 9209: change the decoding of face texture data on mesh upload 2025-07-30 23:21:40 +01:00
UbitUmarov
ad7cc123a4 and worng alpha value on inv prim check 2025-06-25 02:50:19 +01:00
UbitUmarov
ad17093ff4 oops wrong fix 2025-06-25 02:38:12 +01:00
UbitUmarov
27cd53112c bad merge 2025-06-25 02:32:13 +01:00
UbitUmarov
209ca3f861 use stream.copyto on meshcost mesh decoder 2025-06-25 02:24:55 +01:00
UbitUmarov
4ddd6b5706 do not try to draw invibleprims on map 2025-06-25 02:23:31 +01:00
UbitUmarov
0d71b6d871 very useless changes 2025-06-25 02:22:28 +01:00
UbitUmarov
f1d84b7866 use the changes on csj2k decoder on war3d 2025-06-24 16:59:23 +01:00
UbitUmarov
ca0b6be68e update libomv 2025-06-24 16:47:35 +01:00
UbitUmarov
86c22f9fc5 update butchered csj2k 2025-06-23 19:25:22 +01:00
UbitUmarov
427dc272c9 update libomv csj2k 2025-06-22 23:06:37 +01:00
UbitUmarov
e000f3ae55 update libomv csj2k with butchered 3.0 2025-06-22 15:33:12 +01:00
UbitUmarov
2c463ed47a update libomv again 2025-06-21 07:28:13 +01:00
UbitUmarov
9bf45c2122 update libomv 2025-06-21 06:18:19 +01:00
UbitUmarov
6f560f2133 bug fix on ubode mesh 2025-06-20 06:11:38 +01:00
UbitUmarov
2d6cb26fa2 update libomv 2025-06-20 04:57:47 +01:00
UbitUmarov
403158df06 merge fix 2025-06-20 04:48:58 +01:00
UbitUmarov
e1b5f3ad81 cosmetics 2025-06-20 04:38:51 +01:00
UbitUmarov
157de21332 cosmetics 2025-06-20 04:08:20 +01:00
UbitUmarov
9cd70dc401 cosmetics 2025-06-20 03:49:39 +01:00
UbitUmarov
4b1df46f6a make more use of stream.CopyTo on (de)compressors, plus several cosmetics 2025-06-19 20:11:42 +01:00
UbitUmarov
6180fe5340 warp3d map: avoid decode mesh LODs we do not need (using new code on our primmesher) 2025-06-19 18:01:32 +01:00
UbitUmarov
ad98f567c2 fix bad merge 2025-06-19 17:54:12 +01:00
UbitUmarov
4e822198b3 Update libomv, that now includes our own fork of PrimMesher.dll 2025-06-19 17:51:18 +01:00
UbitUmarov
7cf0f73cef on ubodeMesher no need for Coord and Quat. Those are just Vector3 and Quaternion 2025-06-19 17:48:14 +01:00
UbitUmarov
628ddc1821 more agreesing inline 2025-06-07 01:10:10 +01:00
UbitUmarov
f20e3818af a few changes on udp zero encoder and part text color 2025-06-06 23:27:51 +01:00
UbitUmarov
1dd9393fff Yengine use internal shared empty arrays 2025-06-05 11:57:22 +01:00
UbitUmarov
71a8008024 minor typo 2025-06-04 23:57:33 +01:00
UbitUmarov
e0006fb17d stop old useless bytes to float and back to bytes 2025-06-04 23:41:26 +01:00
UbitUmarov
74c64e199d mantis 9205: fix text alpha for lsl 2025-06-04 22:37:47 +01:00
UbitUmarov
85a927da28 fix YEngine HasScript() 2025-05-27 10:35:11 +01:00
UbitUmarov
41d1fdb6c6 fix a old typo on mesh upload number of sides 2025-05-27 09:46:39 +01:00
UbitUmarov
25641e95a7 remove a spurius space on viewer name 2025-05-19 01:57:46 +01:00
UbitUmarov
dacc943a86 fix bad merge 2025-05-14 03:14:59 +01:00
UbitUmarov
71289be01e cosmetics on assets connector 2025-05-14 03:10:03 +01:00
UbitUmarov
f4ab3855d8 change log message since most assets will not have a name 2025-05-14 02:39:50 +01:00
UbitUmarov
a800514050 add missing oar load help text; verify asset fullid on save to oar 2025-05-13 22:30:52 +01:00
UbitUmarov
24352a8c8d clenaup some XEngine refs from ini 2025-05-10 21:59:26 +01:00
UbitUmarov
05969fcb62 several changes; no log at that code level. (untested :( ) 2025-05-10 17:21:09 +01:00
Vincent Sylvester
39009fcfcf Improve mesh upload feedback
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-05-10 16:19:48 +01:00
UbitUmarov
0fa1d54d5b typo 2025-05-09 21:28:47 +01:00
UbitUmarov
d92940b62b add functions osListAs*(list src, integer index) identical to llList2*, but a bit faster with no typecast and index only from origin ( ie >= 0) 2025-05-09 20:00:19 +01:00
UbitUmarov
ef2fce034f a few , mostly cosmetic, changes to osSetTerrainTextures and add prim inventory osSetTerrainTextures with a list of possible asset types to match 2025-05-06 23:40:40 +01:00
UbitUmarov
23ad195e7a add osSetTerrainTextures(LSL_List textures, LSL_Integer types) to set terrain textures for legacy viewers it types == 0 or 2; textures for new viewers if types == 1 or 2 or PBR materials if types == 1 (untested :( ) 2025-05-06 01:29:24 +01:00
UbitUmarov
c9b4d3374f mantis 9188: add HG assets scan and fetch when droping a item on a prim 2025-05-05 21:28:12 +01:00
UbitUmarov
4dae4e7a4f cosmetics on useraccountservice 2025-05-04 22:12:30 +01:00
UbitUmarov
8ec2715f35 misisng bounds check on terrain changes limiter 2025-05-04 21:25:09 +01:00
UbitUmarov
7a4c6ff5b3 add another ossl tooltip 2025-05-01 19:42:53 +01:00
UbitUmarov
71fd5c5dea minor file formating fix 2025-05-01 19:32:06 +01:00
UbitUmarov
d1f8d00912 update scripts syntax file 2025-05-01 19:30:52 +01:00
UbitUmarov
c69ed37dd8 fix to compile 2025-05-01 19:20:28 +01:00
Vincent Sylvester
1847b6be24 Tooltips for ossl
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-05-01 18:54:57 +01:00
UbitUmarov
09ef908034 just a test of github.. 2025-04-30 23:38:12 +01:00
UbitUmarov
cce239d051 some code cosmetics on UserAccountService 2025-04-30 22:51:03 +01:00
UbitUmarov
4918f91d41 fix last change to support empty string group titles 2025-04-30 20:03:06 +01:00
UbitUmarov
83d3ce8a1a work around some osgrid (mb others) null group titles 2025-04-30 17:35:39 +01:00
UbitUmarov
93c81360c0 a few more entries to gitattributes 2025-04-23 03:01:47 +01:00
UbitUmarov
f669c56bb9 mantis 9197: on llHttprequest report status = 0 as 499 2025-04-22 22:10:20 +01:00
UbitUmarov
354966cda9 remove broken libsqlite3.dylib, let macos find its own for now 2025-04-22 19:34:22 +01:00
UbitUmarov
78228bd4bc mk sure we do save appearence 2025-04-20 23:54:04 +01:00
UbitUmarov
8b962b19db remove attachments from current appearence if they are not found in inventory 2025-04-20 23:52:12 +01:00
UbitUmarov
bc59e3a3e7 update script syntax 2025-04-19 20:46:27 +01:00
UbitUmarov
147d90b258 ok no static.. 2025-04-17 20:34:43 +01:00
UbitUmarov
de749dd6ed minor change 2025-04-17 20:24:47 +01:00
Vincent Sylvester
28266fc7b6 HMAC function, stubs and interfaces for compute hash
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-17 20:20:28 +01:00
UbitUmarov
70eafec6fa fix compile since HMAC_SHA224() is missing 2025-04-17 19:46:05 +01:00
Vincent Sylvester
f6227d26eb Fix llHMAC and ComputeHash
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-17 19:10:44 +01:00
UbitUmarov
dc3d44a458 actually write a hex string in caps 2025-04-17 15:53:23 +01:00
UbitUmarov
b00df07563 do not allow estate bans to grid admins 2025-04-17 15:50:08 +01:00
UbitUmarov
98703ff3a2 do scan terrain pbr materials for referenced assets on oar save 2025-04-13 15:11:52 +01:00
UbitUmarov
4b5d9c0696 ooops 2025-04-12 04:10:05 +01:00
UbitUmarov
47e9a13e2b ugly cosmetics 2025-04-11 20:49:05 +01:00
UbitUmarov
d76f0437cd ugly cosmetics 2025-04-11 20:19:49 +01:00
UbitUmarov
748d7d08db a few more chances also the the ossl version 2025-04-11 18:57:42 +01:00
UbitUmarov
a068bd3da6 oops 2025-04-11 18:36:49 +01:00
UbitUmarov
2ebbcdcfff change llListFindListNext negative instance case 2025-04-11 18:26:30 +01:00
UbitUmarov
b5d1d39829 a few fixes... 2025-04-11 16:03:14 +01:00
Vincent Sylvester
d3cf429c4c llGetVisualParams
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 15:28:40 +01:00
UbitUmarov
16665227ce fix lllistfindnext for some cases 2025-04-11 15:22:28 +01:00
Vincent Sylvester
587b19c76b llListFindListNext
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 14:56:54 +01:00
UbitUmarov
d12418ed8f cosmetics, note that sha224 is not correct 2025-04-11 09:21:29 +01:00
UbitUmarov
7d47398802 bad merge.. 2025-04-11 08:50:25 +01:00
Vincent Sylvester
d9180d3a59 llHMAC
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 08:45:15 +01:00
UbitUmarov
ac4ae13ceb use switch expression instead (the changes..) 2025-04-11 08:11:03 +01:00
Vincent Sylvester
ae4ea576d5 llGetHealth
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 08:08:06 +01:00
UbitUmarov
4d0312f122 use switch expression instead 2025-04-11 08:03:37 +01:00
Vincent Sylvester
6eab3e6efb llGetSimStats
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 07:51:12 +01:00
Vincent Sylvester
f42fd1c552 llGetInventoryDesc
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-04-11 07:25:06 +01:00
UbitUmarov
9a92d94e99 remove option ClampNegativeZ 2025-04-11 05:43:15 +01:00
UbitUmarov
f2379dc785 mantis 9133 replace some z < 0 checks by < Constants.MinSimulationHeight (-100) 2025-04-11 05:05:42 +01:00
UbitUmarov
e862eab358 allow negative instance to also index results from end (bad) on osListFindListNext. Untested, sorry 2025-04-04 11:13:11 +01:00
UbitUmarov
006566f35c fix bad merge 2025-04-04 01:44:36 +01:00
UbitUmarov
bde18322eb add LSL_Integer osListFindListNext(LSL_List src, LSL_List test, LSL_Integer lstart, LSL_Integer lend, LSL_Integer instance), like ll one but with search restricted to a substring. Untested, sorry 2025-04-04 01:30:41 +01:00
UbitUmarov
9a02b55bf2 a few more changes on terrain 2025-03-29 23:29:42 +00:00
Ubit Umarov
207a318f86 Merge pull request #27 from Tampa/SmoothArea-fix
Fix SmoothArea to be uniform again
2025-03-29 11:51:06 +00:00
Tampa
b1a2773de9 Fix SmoothArea to be uniform again 2025-03-29 08:34:45 +01:00
UbitUmarov
e5d10bf127 try to fix some terrain issues, Add some more locking 2025-03-29 01:21:43 +00:00
UbitUmarov
d346a7aea7 mantis 9187: only apply setcontentype restrictions to type html 2025-03-25 04:27:53 +00:00
UbitUmarov
26a8c5e712 fix grid stats configuraton check 2025-03-18 22:48:04 +00:00
UbitUmarov
238e714253 update sqlite .config files 2025-03-18 20:59:08 +00:00
UbitUmarov
d48a3d432f mantis 9185: Update libsqlite3 for macOS with version 3.7.5 ( that old for compatibility ) 2025-03-18 20:51:56 +00:00
UbitUmarov
11cb8b6ed0 cosmitics; allow to wear 3 animesh objects 2025-03-16 21:31:53 +00:00
UbitUmarov
c8b88141cb change picks update/add, enforcing max number of picks 2025-03-14 04:38:03 +00:00
UbitUmarov
b63acc8090 send the MaxProfilePicks in simulatorFeatures 2025-03-14 02:20:12 +00:00
UbitUmarov
75e9a49072 only send up top 20 pre sorted profile picks to viewers 2025-03-14 02:08:11 +00:00
UbitUmarov
1855be20fa place some limits on some profile pick fields 2025-03-14 00:25:21 +00:00
UbitUmarov
65eee21661 change avatar animator on forced hover, needs more testing 2025-03-12 18:06:31 +00:00
UbitUmarov
f3c348cf40 change avatar hover avoid some vodoo, but still needs more work on animation state 2025-03-12 03:27:54 +00:00
UbitUmarov
d909aea684 change avatar hover, if target is below ground, move avatar close to ground, let z control have a little action 2025-03-12 02:29:35 +00:00
UbitUmarov
3cb2732855 mantis 9184: refix avatar hover 2025-03-12 00:50:28 +00:00
UbitUmarov
8ec10f9ca8 remove the new xmlrpc grid stats. xmlrcp is obsolete; change refresh time to 15minutes; cosmetics 2025-02-18 12:37:25 +00:00
Vincent Sylvester
898cc22b22 Grid Stats as part of GridInfoService
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2025-02-18 11:36:06 +00:00
UbitUmarov
4516bee2aa take code for old avination service that was never donated out of main path 2025-02-15 20:40:41 +00:00
UbitUmarov
6b73f2157e mantis 9180: try to load imediate subfolders of My outfits with type outfit 2025-02-15 20:39:06 +00:00
UbitUmarov
adcba0667f save parcels media textures on oar 2025-02-11 20:40:51 +00:00
UbitUmarov
ff479b94cd say missing item inv type if known 2025-02-11 01:34:03 +00:00
UbitUmarov
b67254e57d add log of the skiped items 2025-02-11 01:21:26 +00:00
UbitUmarov
af75c37543 add option --skipbadassets to iar save. THis will skip inventory items with missing or empty main asset. Avoid using unless on try to recover from already damaged assets/inventory 2025-02-11 01:00:35 +00:00
UbitUmarov
a6bb6b08f6 missing files 2025-02-11 00:57:04 +00:00
UbitUmarov
b13c4c2055 add option --force-assets to load oar. this will force replace of assets in region cache (will also try to upload but service will most likely refuse). avoid using unless trying to do some recovery 2025-02-10 22:52:53 +00:00
UbitUmarov
46f2fb575e add some missing parcel media data to oars, Thx Tampa 2025-02-08 17:47:19 +00:00
UbitUmarov
e681e1f09a add llGetLinkSitFlags and dummy llSetLinkSitFlags 2025-02-07 22:04:01 +00:00
UbitUmarov
90c367e630 make linknumbers 0 and 1 mean RootPart by default. Since we do not consider sitting avatars on root linknumber, we will never be full compatible with sl variations 2025-02-07 20:44:57 +00:00
UbitUmarov
85b0b89992 cosmetics 2025-02-07 04:07:20 +00:00
UbitUmarov
74b29f1fef or not... grrr (thx Tampa) 2025-02-07 03:37:25 +00:00
UbitUmarov
ff95c7d798 maybe now? 2025-02-07 01:52:27 +00:00
UbitUmarov
c5d97c8a7c still bad 2025-02-07 01:25:32 +00:00
UbitUmarov
ab91a071f2 fix ProcessParcelAccessList 2025-02-07 00:52:38 +00:00
UbitUmarov
8af735d050 more cosmetics 2025-02-05 22:16:52 +00:00
UbitUmarov
38ba697b3a more cosmetics 2025-02-05 21:22:40 +00:00
UbitUmarov
c3cf7f3eb2 cosmetics on xinventory 2025-02-04 22:02:21 +00:00
UbitUmarov
6934eedfdc add folder Materials to new users inventory 2025-02-04 19:39:06 +00:00
UbitUmarov
50ce311ac2 fix Object bonus decode as Real, thx Tampa 2025-01-05 01:35:06 +00:00
UbitUmarov
d9e4389749 add flotsam comand fcache clearnegatives 2024-12-24 00:25:10 +00:00
UbitUmarov
4088b5d165 cosmetics 2024-12-22 23:29:34 +00:00
UbitUmarov
1edd874055 fix typo 2024-12-22 01:22:48 +00:00
UbitUmarov
a3a64c3a68 get PID from Environment.ProcessId 2024-11-30 21:11:03 +00:00
UbitUmarov
e1dd994f2d fix rez distance check 2024-11-30 19:52:29 +00:00
UbitUmarov
49a4285180 fix vel parameter on rez obj witrh params 2024-11-30 19:14:48 +00:00
UbitUmarov
5aa37e74eb minor changes on llgettime 2024-11-29 21:23:10 +00:00
UbitUmarov
4b993d2379 change ubode avatar outbounds park position 2024-11-29 21:18:57 +00:00
UbitUmarov
b1f5734d90 fix RezzerID 2024-11-27 18:51:10 +00:00
UbitUmarov
ecf2e0e32e clear start string parameter on other rez cases 2024-11-26 21:06:56 +00:00
UbitUmarov
606a70b268 revert some test code, not supposed to be in use 2024-11-26 19:57:47 +00:00
UbitUmarov
901c157f8c missing sql code plus cosmetics 2024-11-26 19:45:54 +00:00
UbitUmarov
cd6efb7553 persist start string parameter (from rezobject) 2024-11-26 18:34:26 +00:00
UbitUmarov
cb1c8000a1 missing file 2024-11-22 04:02:41 +00:00
UbitUmarov
a20a5f312d add llGetStartString and limited llRezObjectWithParams for testing 2024-11-22 04:01:03 +00:00
UbitUmarov
2ad93b5ad9 be more restrict when sending object contents asset ids, like when ower also should not see 2024-11-20 01:51:12 +00:00
UbitUmarov
6d8bbde5c2 change UI god cancelation on arrival decision code a bit 2024-11-19 23:13:50 +00:00
UbitUmarov
d5866f4e02 do tell viewers about UI god cancelation on arrival 2024-11-19 23:05:59 +00:00
UbitUmarov
1ff28960f1 cosmetics 2024-11-19 04:25:32 +00:00
UbitUmarov
95ef45ba7c cosmetics 2024-11-18 03:00:26 +00:00
UbitUmarov
2d3140fc9a oops let loop go on. Thanks Tampa 2024-11-17 00:01:55 +00:00
UbitUmarov
df4664f05b avoid possible null ref 2024-11-16 00:05:47 +00:00
UbitUmarov
c3ea01144e few lsl constants 2024-11-14 22:30:13 +00:00
UbitUmarov
0a0e1ea0b1 prim inv item creation date is date of adding to prim 2024-11-14 22:29:32 +00:00
UbitUmarov
24cbfb284a change version 2024-11-08 21:35:50 +00:00
UbitUmarov
3506134ede fix typo 2024-10-21 20:28:08 +01:00
UbitUmarov
1ba9257650 fix typo 2024-10-20 00:06:50 +01:00
UbitUmarov
3f70e493b0 fix LogOutgoingDetail output length limit 2024-10-16 23:46:34 +01:00
UbitUmarov
45372514c2 remove old bad code 2024-10-16 23:32:05 +01:00
UbitUmarov
cda1c7f1f2 and update pointer to macOS native Bulletsim lib 2024-10-09 22:33:33 +01:00
UbitUmarov
ec19f9c71c missed one 2024-10-09 22:29:26 +01:00
UbitUmarov
a690a8b033 mantis 9167: update native libs for macOS 2024-10-09 22:25:56 +01:00
UbitUmarov
c10747e1ea mantis 9166: restore heapUsedFieldInfo also on method exit via state statement 2024-10-08 18:23:00 +01:00
UbitUmarov
54114a23f5 cosmetics 2024-09-23 00:47:31 +01:00
UbitUmarov
4eb8fa29f4 oops fix typo 2024-09-23 00:06:31 +01:00
UbitUmarov
a9be42a304 a few changes to EstateDataRemoteConnector, LoadEstateSettings can not be fatal so work around it 2024-09-22 23:37:42 +01:00
UbitUmarov
00c0816275 mantis 9157: remove trail '/' from remoteconsole urls 2024-09-21 01:04:09 +01:00
UbitUmarov
3823940205 add GetLocalRegionByName to GridServicesConnector plus cosmetics 2024-09-21 00:41:25 +01:00
UbitUmarov
fcddf631ce cosmetics 2024-09-20 00:21:36 +01:00
UbitUmarov
81cfd6e956 some changes to PresenceServerPostHandler 2024-09-19 01:05:15 +01:00
UbitUmarov
7587595f92 fix built 2024-09-17 20:50:55 +01:00
Ubit Umarov
a86b6c0d21 Merge pull request #24 from AdilElFarissi/master
Add try/catch to capture CryptographicException for invalid cert path or incompatible formats...
2024-09-17 20:36:59 +01:00
Adil El Farissi
c31875bae8 Merge branch 'opensim:master' into master 2024-09-17 18:28:40 +00:00
Adil El Farissi
0f3fb330bf Update Util.cs 2024-09-17 18:23:22 +00:00
UbitUmarov
27361a4472 miss one minor changes, for coerence 2024-09-16 21:20:15 +01:00
UbitUmarov
833d8f4991 minor changes 2024-09-16 21:08:11 +01:00
Ubit Umarov
7369bb6a52 Merge pull request #23 from AdilElFarissi/master
Implementation of a basic PEM encoded to OpenSim compatible PKCS12 certificates converter.
2024-09-16 20:55:31 +01:00
Adil El Farissi
52c77b2f12 Implementation of a basic PEM encoded to OpenSim compatible PKCS12 certificates converter.
As you know most CAs return PEM encoded certificates and require a conversion using OpenSSL to make them compatible with OpenSim.
This implementation does the automatic conversion from .pem to .p12 and .pfx at OpenSim startup which updates the certificate in case of automatic certificates renewal...
Note: still under testing using certbot and Let's Encrypt certs...

Thank you and good continuaion
Web Rain :)
2024-09-16 01:52:19 +00:00
Adil El Farissi
70f3b02f65 Fixing changes 2024-09-15 22:09:24 +00:00
Adil El Farissi
fbd0053581 Merge branch 'opensim:master' into master 2024-09-15 20:03:27 +00:00
UbitUmarov
8a56d44d9b mantis 9158: allow it on prim inv to non-mod prim inventory if same owner and allowdrop was set on target 2024-09-03 23:55:32 +01:00
UbitUmarov
36f735f4de mantis 9159: same on rotation s 2024-09-03 21:42:14 +01:00
UbitUmarov
565cb7bdcf mantis 9159: ignore spaces in z on cast string to vector 2024-09-03 21:40:10 +01:00
Adil El Farissi
c2eb8083cb Revert "Re-sync repo"
This reverts commit 1c214566f3.
2024-08-21 02:52:29 +00:00
Adil El Farissi
1c214566f3 Re-sync repo 2024-08-21 00:20:35 +00:00
Adil El Farissi
d7376bf9d5 Merge branch 'master' of https://github.com/AdilElFarissi/opensim 2024-08-20 23:52:45 +00:00
UbitUmarov
4a72e92a74 fixed check of EnableSelfsignedCertSupport option 2024-08-20 04:24:16 +01:00
UbitUmarov
8eef70ec9c ... in same cases http/https can't be determined. possible both need to be present, possible with http a redir to https. TODO 2024-08-17 00:33:02 +01:00
UbitUmarov
79dbca84f9 a few changes. in same cases http/https can't be determined. possible both need to be present, possible with http a redir to https. TODO 2024-08-17 00:30:18 +01:00
Adil El Farissi
207c3d1e71 Revert some default params and fixes to SSL support 2024-08-16 23:04:40 +01:00
Adil El Farissi
ac9ed3d5d1 Add selfsigned certificates support to Robust and osGetLinkInventoryKeys plus some fixes 2024-08-16 22:59:25 +01:00
Adil El Farissi
c2c3ca418a Basic implementation of SSL selfsigned certificates creation and renewal
Allows selfsigned certificates creation and renewal for local and external use. When enabled, will create a folder SSL\ and 2 sub folders SSL\ssl\ and SSL\src\. Next creates and store an RSA private key in SSL\src\ and the derived selfsigned certificates in SSL\ssl\ folder. Is also possible to renew the certificate on every server restart if CertRenewOnStartup is set to true.

Note: The SSL related params in the network section was adapted to be user friendly and allow the usage just by uncommenting the SSL params in both sections and a password change.
2024-08-16 22:53:04 +01:00
UbitUmarov
e2b655a939 verify vivox requests 2024-08-14 13:28:33 +01:00
UbitUmarov
b0d006c53a another typo, thx Tampa 2024-08-12 20:55:28 +01:00
UbitUmarov
2361876f46 another null ref, thx Tampa 2024-08-08 05:42:03 +01:00
UbitUmarov
f1b6d9186e mantis 9135: avoid null ref 2024-08-02 03:29:40 +01:00
UbitUmarov
70fa48280c catch some possible null refs 2024-08-01 20:00:25 +01:00
UbitUmarov
d9cfb3bcae improve script cpu time resolution specially on windows 2024-08-01 19:58:12 +01:00
UbitUmarov
1f7e0d1dd9 fix typo 2024-07-21 00:14:29 +01:00
Adil El Farissi
90618dc4d5 Merge branch 'master' of https://github.com/opensim/opensim 2024-07-09 02:06:53 +00:00
Adil El Farissi
e54e30943e Update .gitattributes 2024-07-08 13:38:58 +00:00
Adil El Farissi
6907ced898 conflict fixes 2024-07-06 21:25:39 +00:00
Adil El Farissi
4ece46b7a3 Update RegionStore.migrations 2024-07-06 21:16:00 +00:00
Adil El Farissi
3f3ddde44a Update RegionStore.migrations 2024-07-06 20:53:59 +00:00
Adil El Farissi
19ec375912 fixing conflicts 2024-07-06 20:31:46 +00:00
Adil El Farissi
cca75c799e Update ScriptSyntax.xml 2024-07-06 19:24:50 +00:00
Adil El Farissi
fb1d5619a1 Update ScriptSyntax.xml 2024-07-05 20:05:13 +00:00
Adil El Farissi
1d01e37a67 Update ScriptSyntax.xml 2024-07-05 19:31:35 +00:00
UbitUmarov
cce3327734 minor cleanup 2024-07-04 00:07:37 +01:00
UbitUmarov
73a9462ef8 a few changes to llGetNotecardLineSync 2024-07-04 00:04:15 +01:00
Ubit Umarov
3a5892421f Merge pull request #20 from SueCripter/new-llGetNotecardLineSync-function
Add llGetNotecardLineSync
2024-07-03 23:15:54 +01:00
Sue Cripter
0bf18539b5 Add llGetNotecardLineSync 2024-07-04 00:10:29 +02:00
UbitUmarov
c8b13599df fix shared group object item modify permission check 2024-07-03 20:03:47 +01:00
UbitUmarov
b06ecf8014 viewers now are sending a useless flood of agent updates. Ignore some 2024-07-03 00:44:02 +01:00
BlueWall
48a300fa2f Adding missing 'regionextra' table and associated handlers to the PgSQL adapter.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-06-24 19:55:15 +01:00
BlueWall
eb74fa6eec Fix region data loading to prevent deletion of telehub spawnpoints
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-06-24 19:51:44 +01:00
BlueWall
6c857b7ff9 Fix wrong primary key on telehub spawn points. With the RegionUUID being created as a unique primary key only one spawn point could be created. Replaced the primary key with one using multiple columns to guarantee that each spawn point occupies a unique space in the region.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-06-24 19:49:06 +01:00
BlueWall
ebcc0f0077 Postgresql Fixes: region store, mutelist and generic table handler.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-06-24 19:42:20 +01:00
UbitUmarov
0923ed6f4d update ScriptSyntax 2024-06-23 21:58:00 +01:00
UbitUmarov
cc1227364c add llDerezObject(..) 2024-06-23 21:54:46 +01:00
UbitUmarov
583cc04910 also add default uuid zero string to mysql and pgsql pbr entries 2024-06-23 21:50:32 +01:00
UbitUmarov
c4635d86d0 llSetCameraAtOffset() or llSetCameraEyeOffset() on a child prim do not mess root prim ( reverts 174df94172) 2024-06-19 20:22:43 +01:00
UbitUmarov
37d37665bf fix sqlite migration 2024-06-19 11:13:09 +01:00
Adil El Farissi
f397fc36a4 Merge branch 'opensim:master' into master 2024-06-15 22:33:50 +00:00
UbitUmarov
644af5093e remove duplicated cap service 2024-06-15 05:30:22 +01:00
UbitUmarov
8e874d97c5 if at load all pbt terrain id are zero reset all to non pbr ids (so on version update they look the same automaticly) 2024-06-15 00:31:25 +01:00
UbitUmarov
58f74dceb3 do not reset SentTPBR state 2024-06-14 21:59:56 +01:00
Adil El Farissi
3bcc96e42d Merge branch 'opensim:master' into master 2024-06-13 22:21:39 +00:00
UbitUmarov
ed455616f7 decouple mirrors feature from VTPBR 2024-06-12 13:33:50 +01:00
UbitUmarov
8becea09c1 oops wrong sent flag 2024-06-11 23:21:33 +01:00
UbitUmarov
f81a11aaab duhh why did i compare regionSize Z ?? phhhh 2024-06-11 22:26:15 +01:00
UbitUmarov
65738b3766 a few more changes for hypothetical terrain PBR 2024-06-10 21:02:31 +01:00
UbitUmarov
183350b617 viewers MUST ask for pbr terrain, requesting fake cap VTPBR if only support terrain pbr on standard size regions or cap VETPBR support on all region sizes 2024-06-08 22:05:41 +01:00
UbitUmarov
54fe5747ea add storage for pbr terrain feature that viewers for opensim may add 2024-06-08 21:58:46 +01:00
Adil El Farissi
6ab23c8d6b Merge branch 'opensim:master' into master 2024-06-07 21:03:53 +00:00
UbitUmarov
ecdc979687 oops it is sRGB not linear, so rename to osTemperature2sRGB 2024-06-04 09:46:11 +01:00
UbitUmarov
1d9d39328d add osTemperatureToLinearColor() 2024-06-04 09:05:03 +01:00
UbitUmarov
30586b34f6 replace Util.Clamp<T>() 2024-06-04 09:01:10 +01:00
UbitUmarov
5ffe928392 remove some warnings in unused code 2024-05-28 22:21:31 +01:00
UbitUmarov
547c431c43 update github action 2024-05-22 02:16:22 +01:00
UbitUmarov
270427ba2a add vector osGetLinkColor(LSL_Integer linknum, LSL_Integer face) 2024-05-18 22:17:10 +01:00
UbitUmarov
7b731a387b oops we do have DATA_PAYINFO for local users, thx Tampa 2024-05-17 22:07:16 +01:00
UbitUmarov
c69a112293 mantis 9130: several changes to llRequestAgentData 2024-05-17 19:27:08 +01:00
UbitUmarov
cbe6071f29 and more on broke pgsql 2024-05-16 01:07:45 +01:00
UbitUmarov
f7fd1a5497 and more.. 2024-05-16 00:40:00 +01:00
UbitUmarov
d0173f40f8 and more.. 2024-05-16 00:34:09 +01:00
UbitUmarov
18a0718508 and more.. 2024-05-15 23:46:01 +01:00
UbitUmarov
099da7efe5 and more.. 2024-05-15 23:29:31 +01:00
UbitUmarov
114830aa4b retry... 2024-05-15 23:12:08 +01:00
UbitUmarov
971778019a pgsql: still uint cast issue 2024-05-15 23:05:34 +01:00
UbitUmarov
464409bbc2 pgsql: a few more changes.. 2024-05-15 22:57:45 +01:00
UbitUmarov
62ce9c1ba8 pgsql : fix asset store and a cast on estate 2024-05-15 22:35:43 +01:00
UbitUmarov
561eb73a1d pgsql : fix region store 2024-05-15 21:09:42 +01:00
UbitUmarov
cc7a06abd0 pgsql : fix region store 2024-05-15 20:54:30 +01:00
UbitUmarov
fd32e15f70 pgsql : fix estate store 2024-05-15 20:18:07 +01:00
UbitUmarov
42aa84a06f log inner exceptions on plugins load 2024-05-15 19:07:45 +01:00
UbitUmarov
a79f5d58f6 add missing dependency for pgsql connector 2024-05-15 19:05:32 +01:00
UbitUmarov
3e4f4208b2 improve broken llBase64ToInteger 2024-05-11 14:09:08 +01:00
UbitUmarov
57c1e15428 use hash.HashData() and other cosmetics 2024-05-10 13:05:50 +01:00
UbitUmarov
455d0793c3 recover lost packet handler 2024-05-10 11:52:47 +01:00
UbitUmarov
f4f30de344 pgsql: missing lnkstBinData in insert select 2024-05-09 23:32:36 +01:00
UbitUmarov
15ea9a5bf8 change pgsql UUID casting (UNTESTED :( ) 2024-05-09 23:04:05 +01:00
UbitUmarov
6cfa80c25a fix mysql regionstore migration file 2024-05-09 21:14:26 +01:00
UbitUmarov
037afe8373 fix compile with new npgsql 2024-05-08 20:46:58 +01:00
UbitUmarov
264e5f8cbe update npgsql to version 8.0.2 (from nuget) set its sll mode to disable. UNTESTED :( 2024-05-08 20:36:33 +01:00
UbitUmarov
1736b6a8a0 make some use of frozendicionaries on xml processors 2024-05-08 19:14:32 +01:00
UbitUmarov
5330c8fcca mantis 9127 add missing linksetdata serializer 2024-05-08 18:01:38 +01:00
UbitUmarov
82b462304a retry mysql.data v8.3.0 custom build with handle for dbnull tpe as current 8.0.31 2024-05-02 22:55:51 +01:00
UbitUmarov
1992e838cc add another asset 2024-05-02 18:22:41 +01:00
UbitUmarov
4d552360dd also incremenet os_apiversion 2024-04-30 23:34:35 +01:00
UbitUmarov
c39fa1e776 mantis 9125: change yengine object file version to force recompiles; Wrap calls to some framework methods to reduce exagerated yobj dependencies on local runtime, like the ones reported. 2024-04-30 23:31:03 +01:00
UbitUmarov
7c3e09f7d3 cosmetics 2024-04-30 23:17:20 +01:00
UbitUmarov
2736d36391 also do send terrain texture change also from viewer to viewers 2024-04-28 22:57:58 +01:00
UbitUmarov
020ddeef65 preprocess logiin welcome msg 2024-04-28 12:51:31 +01:00
UbitUmarov
034cf66dfe replace beginaccept 2024-04-28 10:58:27 +01:00
UbitUmarov
943ea29419 missing c&p 2024-04-27 17:06:07 +01:00
UbitUmarov
620859c10e replace stream.beginread 2024-04-27 17:03:52 +01:00
UbitUmarov
8e6eeb1931 let the socketAddress cache be global 2024-04-27 15:47:33 +01:00
UbitUmarov
16fa47e4d3 lludp replace BeginReceiveFrom/AsyncEndReceive 2024-04-27 14:30:02 +01:00
Adil El Farissi
5a5ba6c021 Revert some default params and fixes to SSL support 2024-04-26 06:12:29 +00:00
AdilElFarissi
3c6a8f8d7c Merge branch 'opensim:master' into master 2024-04-26 05:49:42 +00:00
UbitUmarov
800f47d718 verify session and agent ids earlier in udp packet processing 2024-04-25 00:45:21 +01:00
UbitUmarov
3e9258e371 update libomv 2024-04-25 00:20:34 +01:00
UbitUmarov
41ef04902f a few changes on udp code 2024-04-24 13:17:22 +01:00
UbitUmarov
809a7b6356 make core lludp packet handlers static methods 2024-04-24 00:52:03 +01:00
UbitUmarov
ffb4cd7867 cosmetics 2024-04-24 00:07:26 +01:00
UbitUmarov
3beeee8fdc revert to oracle mysql 8.0.31.0 since recent one is not working on some platforms 2024-04-23 10:27:32 +01:00
UbitUmarov
d35b33b279 a few issues with mysql dbs 2024-04-22 12:37:17 +01:00
UbitUmarov
70f6b0b5da oops do update libomv for last commit 2024-04-21 13:50:08 +01:00
UbitUmarov
257a9ad398 libomv now knows old opensim material asset type + dotnet8 usless changes 2024-04-21 13:44:35 +01:00
UbitUmarov
5aeabd40fd fix runprebuild comment 2024-04-21 10:47:36 +01:00
UbitUmarov
68bfdddae5 update mysql.data.dll to 8.3.0 2024-04-21 04:37:45 +01:00
UbitUmarov
835cc49a16 update BouncyCastle MimeKit and MailKit, extracted from nuget 2024-04-21 04:12:14 +01:00
UbitUmarov
3135b84ee8 remove dotnetopenemail that was replaced by mailkit 2024-04-21 03:49:08 +01:00
UbitUmarov
76615b7c3b update warp3d and xmlrpc dlls 2024-04-21 02:40:31 +01:00
UbitUmarov
dd67d21ae7 update libomv with one new bug killed 2024-04-21 01:15:23 +01:00
UbitUmarov
3c801041e3 Revert "update libomv". Some bug did go in..
This reverts commit b1e0b6d0c7.
2024-04-21 00:40:07 +01:00
UbitUmarov
b1e0b6d0c7 update libomv 2024-04-21 00:02:55 +01:00
UbitUmarov
e731edfa2e move minimal dotnet version to 8 2024-04-20 23:37:37 +01:00
UbitUmarov
50212c240c llCloud is obsolete, remove rest on old viewer V! cloud support 2024-04-20 18:00:22 +01:00
UbitUmarov
f447a58ac9 cosmetics 2024-04-18 13:27:31 +01:00
UbitUmarov
604282c482 simplify output of show caps list a bit 2024-04-17 20:31:21 +01:00
UbitUmarov
863ff6bc9f remove dead code 2024-04-17 19:46:43 +01:00
UbitUmarov
68c4724847 pesty warning 2024-04-17 16:34:50 +01:00
UbitUmarov
b7e897f741 direct encode to llsdxml cap seeds response 2024-04-17 16:09:57 +01:00
UbitUmarov
c8adcb66d0 oops fix bad paste on SLUtil.cs 2024-04-16 23:20:59 +01:00
UbitUmarov
a5d6f2df02 bunchofcaps config options are the same per region and nini reading is not light 2024-04-16 23:10:30 +01:00
AdilElFarissi
ab44f8ee07 Merge branch 'opensim:master' into master 2024-04-16 21:26:51 +00:00
UbitUmarov
b9eb6bdd76 dictionary.try and other cosmetics 2024-04-16 18:01:06 +01:00
UbitUmarov
7dda8b4154 add cap DispatchRegionInfo 2024-04-15 04:33:20 +01:00
UbitUmarov
c1c19784ff fix enable from config on some legacy modules 2024-04-15 01:59:50 +01:00
UbitUmarov
92bf9224de fix materials simulator features 2024-04-15 01:30:36 +01:00
UbitUmarov
ca69544ae9 update simulator features (max texture 1024px) 2024-04-15 00:43:04 +01:00
AdilElFarissi
af5ad4a43c Merge branch 'opensim:master' into master 2024-04-13 05:44:53 +00:00
UbitUmarov
25dcfa8b4e change llAtan2 arguments order to (y,x) to match standard documentation 2024-04-12 22:14:54 +01:00
UbitUmarov
36f95e0167 change NoVerifyCertChain and NoVerifyCertHostname default to true, as stated on ini files 2024-04-12 21:03:03 +01:00
UbitUmarov
07d3d51c3b Robust: only create shared webclients after reading config 2024-04-12 20:40:16 +01:00
UbitUmarov
c0a2569b32 in fact there is no thread.abort 2024-04-11 04:29:01 +01:00
UbitUmarov
c981f3c448 avoid a possible null ref 2024-04-11 02:42:05 +01:00
UbitUmarov
bbac092621 update readme 2024-04-11 01:01:41 +01:00
AdilElFarissi
dafc02ac80 Merge branch 'opensim:master' into master 2024-04-09 02:35:18 +00:00
UbitUmarov
5207b251c3 a few more useless changes 2024-04-08 21:43:03 +01:00
AdilElFarissi
efda155791 Merge branch 'opensim:master' into master 2024-04-08 07:17:51 +00:00
UbitUmarov
44b0d30561 a few more useless changes 2024-04-08 02:02:54 +01:00
UbitUmarov
f1cb40aa59 a few more useless changes 2024-04-07 22:26:51 +01:00
UbitUmarov
91d9c33128 replace some more wrong uses of dictionary containskey and other cosmetics 2024-04-07 20:28:56 +01:00
UbitUmarov
7dc520399c also expire flotsam assets weakreferences on console expire ammand 2024-04-06 22:33:16 +01:00
UbitUmarov
bef7db808b missing reference 2024-04-06 21:56:38 +01:00
UbitUmarov
50f818c480 also expire flotsam assets weakreferences 2024-04-06 21:54:36 +01:00
UbitUmarov
1e424be6f3 remove repeated asset 2024-04-06 19:59:12 +01:00
UbitUmarov
9b878933eb oops missing dependency 2024-04-04 17:49:07 +01:00
UbitUmarov
d00dbe11c0 set gc memory high pressure to 50% of total memory (sadly it may decide to ignore); change show stats memory report; let robust also show memory on show stats 2024-04-04 17:45:38 +01:00
UbitUmarov
f51f81d53f add some texture assets 2024-04-02 20:30:21 +01:00
UbitUmarov
58401238d5 reduce min size of header buffers to limit impact when osutf8 cache is empty 2024-04-02 01:27:16 +01:00
UbitUmarov
6c83782d49 cosmetics 2024-04-02 01:03:34 +01:00
UbitUmarov
30d2ad4bb4 update libomv 2024-04-02 01:02:53 +01:00
UbitUmarov
54d2403252 cosmetics 2024-04-02 00:14:04 +01:00
UbitUmarov
1891b962dc cosmetics 2024-04-01 21:53:32 +01:00
UbitUmarov
4abdea5bb3 change default config to Release since Debug is now a very bad idea, unless needed 2024-04-01 19:33:27 +01:00
UbitUmarov
d91a84e08d do copy it before running prebuild 2024-04-01 19:29:15 +01:00
UbitUmarov
2e493fd6ce do remove defaul system.drawing (that is same as ...win) 2024-04-01 19:19:00 +01:00
UbitUmarov
0d1b14c78f do not do chained hg teleports 2024-03-31 00:44:50 +00:00
UbitUmarov
723a528b58 refuse some chars on HG url region name 2024-03-30 23:22:30 +00:00
UbitUmarov
ac49f8b8e8 use enum.getname instead of a hack 2024-03-30 18:36:37 +00:00
Adil El Farissi
cc79aa0c23 Add selfsigned certificates support to Robust and osGetLinkInventoryKeys plus some fixes 2024-03-29 03:56:03 +00:00
AdilElFarissi
7ddf60ad9f Merge branch 'opensim:master' into master 2024-03-29 03:52:41 +00:00
UbitUmarov
ed0044564d store linksetdata in sqlite and pgsql 2024-03-29 00:46:29 +00:00
UbitUmarov
8fbf905de5 oops 2024-03-28 22:32:00 +00:00
UbitUmarov
573af89389 store linksetdata in inventory and region mysql db ( others todo) UNTESTED 2024-03-28 22:03:14 +00:00
UbitUmarov
e918888e30 add llGetCameraAspect and llGetCameraFOV 2024-03-28 15:34:03 +00:00
UbitUmarov
45e49c480f use ILGenerator ILOffset instead of old mono il offset 2024-03-27 21:54:39 +00:00
UbitUmarov
b8a0bba99d mantis 9121: fix failed lsl string casts on lsl list sort 2024-03-27 21:51:49 +00:00
AdilElFarissi
88704a641f Merge branch 'opensim:master' into master 2024-03-26 22:16:17 +00:00
UbitUmarov
acbec23f48 clean appdomain related things 2024-03-26 21:34:33 +00:00
UbitUmarov
782bad9944 and rename it again as just osGetLinkInventoryKey, so it is coerent with llGetInventoryKey (mantis 9119) 2024-03-26 18:32:05 +00:00
UbitUmarov
4a8d4414bd let runprebuild.bat also copy system drawing for windows 2024-03-24 12:11:42 +00:00
UbitUmarov
7c63ff1150 rename new osGetLinkInventoryItemKey as osGetLinkInventoryItemAssetKey 2024-03-24 11:34:23 +00:00
Jeff Kelley
1aa7bea608 osGetLinkInventoryAssetKey
deleted:    bin/System.Drawing.Common.dll

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-03-24 11:25:09 +00:00
Adil El Farissi
681baf65f1 Basic implementation of SSL selfsigned certificates creation and renewal
Allows selfsigned certificates creation and renewal for local and external use. When enabled, will create a folder SSL\ and 2 sub folders SSL\ssl\ and SSL\src\. Next creates and store an RSA private key in SSL\src\ and the derived selfsigned certificates in SSL\ssl\ folder. Is also possible to renew the certificate on every server restart if CertRenewOnStartup is set to true.

Note: The SSL related params in the network section was adapted to be user friendly and allow the usage just by uncommenting the SSL params in both sections and a password change.
2024-03-20 01:12:49 +00:00
Adil El Farissi
6629dfb95b Merge branch 'master' of https://github.com/AdilElFarissi/opensim 2024-03-19 22:32:52 +00:00
Adil El Farissi
70f7106e02 Add the missing literature in the OSSL functions tooltips 2024-03-19 22:32:43 +00:00
AdilElFarissi
3542d5461b Merge branch 'opensim:master' into master 2024-03-19 21:50:59 +00:00
UbitUmarov
b70b5c07e3 revert to append all contents of .version file on the full version, if present and not empty 2024-03-11 00:18:05 +00:00
UbitUmarov
6905f1a71a cosmetics 2024-03-10 16:56:12 +00:00
UbitUmarov
0d73a817cc oops 2024-03-05 20:21:41 +00:00
UbitUmarov
6afa7d564b same for osGetLinkInventoryItemKeys 2024-03-05 19:04:36 +00:00
UbitUmarov
f770fc8a0e missing file 2024-03-05 18:52:48 +00:00
UbitUmarov
c618c4a6c4 rename the new osGetInventoryKeys as osgetinventoryitemkeys and osgetlinkinventorykey as osgetinventoryitemkey for coerence and to make clear that key means the item key within prim inventory and not its asset key as in ll funtion 2024-03-05 18:51:42 +00:00
UbitUmarov
52c287d8dc manits 9118: fix clear of animesh flag on *GetPrimitiveParams 2024-03-04 23:48:13 +00:00
UbitUmarov
97b03f76c7 fix the last patch 2024-02-29 20:40:42 +00:00
Jeff Kelley
d58f9f0f5d osGetSitTarget
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2024-02-29 20:28:20 +00:00
Adil El Farissi
df8fe33007 Last cosmetics and PHP/LSL test scripts
All is working fine :)

The following script send a request to the PHP file where the encrypted  string using osAESEncrypt() is decrypted and re-encrypted using the PHP openssl_XXXX. the return is the original string and the re-encrypted separated by "|"... the script decrypt the returned re-encrypted using osAESDecrypt() and log it in the chat.

LSL script:
<pre><code>
// Change the url to point to your PHP file.
string url =  "http://127.0.0.1/aesTest.php";
string plainText = "Hello World :)";
string secret = "#!qUeRtY$@123^456€!#";
key r_id;

default
{
    touch_start(integer i)
    {
        string encryptedText = osAESEncrypt(secret, plainText);
        llOwnerSay("\nEncrypted with osAESEncrypt:\n"+ encryptedText);

        r_id = llHTTPRequest(url, [HTTP_METHOD,"POST",HTTP_MIMETYPE,"application/x-www-form-urlencoded",HTTP_BODY_MAXLENGTH,"16384"], "data="+ encryptedText);
    }

    http_response(key id, integer status, list metaData, string Response){
        if(status = 200 ){
            if(id == r_id){
                if(Response != ""){
                    list temp = llParseString2List(Response,"|",[]);
                    llOwnerSay("\nDecrypted using PHP openssl_decrypt:\n"+ llList2String(temp,0));
                    llOwnerSay("\nEncrypted using PHP openssl_encrypt:\n"+ llList2String(temp,1));
                    string decryptedText = osAESDecrypt(secret, llList2String(temp,1));
                    llOwnerSay("\nDecrypted with osAESDecrypt from PHP:\n"+ decryptedText);
                }
                else{
                    llOwnerSay("Enc/Dec Failed! Response:\n"+ Response);
                }
            }
        }
        else{
             llOwnerSay("Destination not available.\nstatus: "+ status);
        }
    }
}
</code></pre>

The PHP file:
<pre><code>
<?php
    if(getenv('REQUEST_METHOD') == 'POST') {
	    $script_data = file_get_contents("php://input");
        if($script_data){
            $data = $_POST['data'];
            $secret = "#!qUeRtY$@123^456€!#";
            $key = hex2bin(strtoupper(hash('sha256', $secret)));
            $iv = hex2bin(strtoupper(explode(":", $data)[0]));
            $encryptedText = hex2bin(strtoupper(explode(":", $data)[1]));
            $plainText = openssl_decrypt($encryptedText, "AES-256-CBC", $key, $options=OPENSSL_RAW_DATA, $iv);
            $retIv = openssl_random_pseudo_bytes(16);
            $reEncrypted = openssl_encrypt($plainText, "AES-256-CBC", $key, $options=OPENSSL_RAW_DATA, $retIv);

            echo $plainText && $reEncrypted ? $plainText."|".bin2hex($retIv).":".bin2hex($reEncrypted) : "";

        }
    };
?>
</code></pre>

Co-Authored-By: Ubit Umarov <469643+UbitUmarov@users.noreply.github.com>
2024-02-29 01:09:20 +00:00
UbitUmarov
ab4b690ffd fis AES encoding 2024-02-27 20:21:35 +00:00
UbitUmarov
18ec6d6380 cosmetics 2024-02-26 18:07:50 +00:00
Ubit Umarov
d875ce89d4 Merge pull request #17 from AdilElFarissi/master
Add 2 OSSL functions to the LinkInventory collection
2024-02-26 17:51:34 +00:00
UbitUmarov
154ddaa44b add unmanaded ubode lib for arm64 linux, thanks Deijimarge 2024-02-25 23:04:56 +00:00
Adil El Farissi
60214e6e81 Add 2 OSSL functions to the LinkInventory collection
Add Functions:
+ osGiveLinkInventoryList(integer linkNumber, key destination, string category, list inventory)
Give a group of items located in a child prim inventory

+ osRemoveLinkInventory(integer linkNumber, string name)
Remove an item from a child prim inventory

LSL Script example:
<pre><code>
default
{
    touch_start(integer a){

        integer linkNumber = llDetectedLinkNumber(0);
        list linkInventoryNames = osGetLinkInventoryNames(linkNumber, INVENTORY_ALL);
        osGiveLinkInventoryList(linkNumber, llDetectedKey(0), llGetLinkName(linkNumber), linkInventoryNames);

        for(integer i = 0; i < llGetListLength(linkInventoryNames); i++){
            osRemoveLinkInventory(linkNumber, llList2String(linkInventoryNames, i));
        }
    }
}
</code></pre>
2024-02-25 07:14:49 +00:00
UbitUmarov
f4e14aba6d fix webstats SStats defualt answer 2024-02-24 16:36:15 +00:00
UbitUmarov
eb9afdaffc break them a bit more... 2024-02-24 15:47:06 +00:00
UbitUmarov
121f270414 a few changes to last PR (aes methods) - all still untested 2024-02-24 14:50:54 +00:00
Ubit Umarov
662eac32a2 Merge pull request #16 from AdilElFarissi/master
Basic implementation of AES encryption/decryption  and respective OSSL functions
2024-02-24 14:07:11 +00:00
UbitUmarov
46f87b58c1 update libomv 2024-02-24 14:04:05 +00:00
Adil El Farissi
898ab06203 Fix to mantis 9115 2024-02-24 04:22:50 +00:00
Adil El Farissi
b4f33ad594 Replaced OSSLError by OSSLShoutError 2024-02-23 23:42:18 +00:00
Adil El Farissi
db80781e7d Basic implementation of AES encryption/decryption and respective OSSL functions
Add methods:
+ private static string AESEncryptString(string secret, string plainText, string ivString= null)
AES Encrypt a string using a password and a random or custom Initialization Vector.

+ private static string AESDecryptString(string secret, string encryptedText, string ivString= null)
AES Decrypt the string encrypted by AESEncryptString with the same password and ivString used in the encryption.

Methods implementations:
+ Util.AESEncrypt(string secret, string plainText)
+ Util.AESDecrypt(string secret, string encryptedText)
+Util.AESEncryptTo(string secret, string plainText, string ivString)
+ Util.AESDecryptFrom(string secret, string encryptedText, string ivString)

OSSL functions as first case of use:
+ osAESEncrypt(string secret, string plainText)
+ osAESDecrypt(string secret, string encryptedText)
+ osAESEncryptTo(string secret, string plainText, string ivString)
+ osAESDecryptFrom(string secret, string encryptedText, string ivString)

LSL script example:
<pre><code>
string plainText = "Hello World :)";
string secret = "#!qUeRtY$@123^456€!#";

default
{
    touch_start(integer i)
    {
        string encryptedText = osAESEncrypt(secret, plainText);
        llOwnerSay("\nEncrypted with osAESEncrypt:\n"+ encryptedText);
        string decryptedText = osAESDecrypt(secret, encryptedText);
        llOwnerSay("\nDecrypted with osAESDecrypt:\n"+ decryptedText);

        // Encription / Decription with custom Initialization Vector.
        string ivString = (string)llGetOwner() /* +"_"+ llGenerateKey() */;
        string encryptedToText = osAESEncryptTo(secret, plainText, ivString);
        llOwnerSay("\nEncrypted with osAESEncryptTo:\n"+ encryptedToText);
        string decryptedFromText = osAESDecryptFrom(secret, encryptedToText, ivString);
        llOwnerSay("\nDecrypted with osAESDecryptFrom:\n"+ decryptedFromText);
    }
}
</code></pre>

Web Rain :)
2024-02-23 21:14:33 +00:00
UbitUmarov
5b67966ddd cosmetics on offline msg v2 2024-02-22 19:48:12 +00:00
UbitUmarov
35a40ada77 fix ossl set ProjectionFocus range 2024-02-22 18:16:25 +00:00
UbitUmarov
76c813c2e4 useless changes 2024-02-22 01:47:24 +00:00
UbitUmarov
b383a027dc cosmetics... 2024-02-21 15:58:05 +00:00
UbitUmarov
152b64179b a few changes to last PR, let getlink select root; add getkeys permissions checks (don't remember why we have those) plus cosmetics 2024-02-21 15:20:53 +00:00
UbitUmarov
3abcd8ba4b Merge branch 'master' of https://github.com/opensim/opensim 2024-02-21 14:12:15 +00:00
Ubit Umarov
f922eda137 Merge pull request #15 from AdilElFarissi/master
Add some OSSL functions related to child prims inventory manipulations
2024-02-21 14:11:43 +00:00
Adil El Farissi
ea7417dff6 Update OSSL_Stub.cs 2024-02-21 04:26:06 +00:00
Adil El Farissi
e835a46ec8 Fix uuid to string 2024-02-20 21:58:39 +00:00
Adil El Farissi
ca722ecdd8 Add some OSSL functions related to child prims inventory manipulations
Add functions:

+ osGiveLinkInventory(integer linkNumber, key destination, string inventory)
Give an item located in a child prim inventory.

+ osGetInventoryNames(integer type)
Return a list of items names by type (or INVENTORY_ALL) located in the prim inventory.

+ osGetLinkInventoryNames(integer linkNumber, integer type)
Return a list of items names by type (or INVENTORY_ALL) located in a child prim inventory.

+ osGetInventoryKeys(integer type)
Return a list of the items UUIDs by type (or INVENTORY_ALL) located in the prim inventory.

+ osGetLinkInventoryKeys(integer linkNumber, integer type)
Return a list of the items UUIDs by type (or INVENTORY_ALL) located in a child prim inventory.

+ osGetLinkInventoryKey(integer linkNumber, string name)
Return the UUID of the specified item name located in a child prim inventory.

+ osGetLinkInventoryDesc(integer linkNumber, string itemNameorid)
Return the description of an item located in a child prim inventory.

+ osGetLinkInventoryName(integer linkNumber, key itemId)
Return the name of an item located in a child prim inventory.

Note: the LinkInventory functions don't have access to the root prim contents. This may change if requested by the community...
2024-02-20 17:36:33 +00:00
UbitUmarov
c1438e0ee5 cosmetics 2024-02-17 14:54:37 +00:00
UbitUmarov
0c05c6efce sog temporay flags check is same for all DB engines 2024-02-17 12:47:46 +00:00
UbitUmarov
e460444596 cosmetics 2024-02-17 12:42:54 +00:00
UbitUmarov
cf27093ee9 several changes to llIsFriend and related methods 2024-02-16 20:14:06 +00:00
UbitUmarov
089037c749 update scriptsyntax.xml 2024-02-16 17:43:00 +00:00
UbitUmarov
4e2bea288a add llIsFriend 2024-02-16 17:17:59 +00:00
UbitUmarov
dd58a3a57c cosmetics; remove old unused sop rotation axis ints 2024-02-15 18:48:00 +00:00
UbitUmarov
cc3adba92a make sure login last location is within the region 2024-02-13 19:52:41 +00:00
UbitUmarov
854f6723ac mantis 9111: make code a bit more resilient to requests for large bit rates 2024-02-07 22:12:05 +00:00
UbitUmarov
4b99381a0d update scriptsyntax.xml 2024-02-07 02:09:55 +00:00
UbitUmarov
e31ad4869c copy linksetdata when doing a sog copy.. 2024-02-07 01:37:40 +00:00
UbitUmarov
fbdb6c420f missing file... 2024-02-06 23:48:07 +00:00
UbitUmarov
2e26b8a8bb add LinksetData support. Untested and still does not store in dbs. Not as spec. See mantis 9081 (runprebuild) 2024-02-06 23:45:11 +00:00
UbitUmarov
00e9e3c77a change limits on parcel name and description on llupd packets 2024-02-05 19:13:57 +00:00
UbitUmarov
f127fd56a2 pesty warning 2024-02-05 18:44:51 +00:00
UbitUmarov
f1cba63aad retire StringToBytes variants with string format. Do the format before calling.. 2024-02-05 18:34:44 +00:00
UbitUmarov
db04234685 update libomv 2024-02-05 18:07:57 +00:00
UbitUmarov
47810b04d5 pcampbot do not add 0 to last name if only making one bot; do not try to look for tree textures 2024-02-01 18:39:43 +00:00
UbitUmarov
52bd793120 some more rounding issues on pbr overrides 2024-01-31 17:19:53 +00:00
UbitUmarov
6ca32cb8ef some rounding issues on pbr overrides 2024-01-31 16:12:01 +00:00
UbitUmarov
ece71a6aa3 cosmetics 2024-01-31 13:09:27 +00:00
UbitUmarov
3e54b78668 avoid sending pbr lludp messages to older viewers 2024-01-31 13:06:53 +00:00
UbitUmarov
2ffa845af4 pesty warning 2024-01-26 19:02:03 +00:00
UbitUmarov
a7944dd065 whatever.. 2024-01-26 18:59:38 +00:00
UbitUmarov
45e600e4fb small change to map grid service 2024-01-26 18:46:45 +00:00
UbitUmarov
c0082b4c3f a few changes to map grid service 2024-01-26 18:39:03 +00:00
UbitUmarov
7ce6dd4cf8 update warp3d.dll 2024-01-26 18:20:25 +00:00
UbitUmarov
0e13ed41ac update simplified Warp3d.dll (bad dotnet) 2024-01-23 16:49:23 +00:00
UbitUmarov
bb15cd7702 update simplified Warp3d.dll 2024-01-23 16:20:10 +00:00
UbitUmarov
7b888ec02c add configuration option MaxOfflineIMs to robust offlineIMService with default value of 25. Simplify that service code a bit (do runprebuild since a file was removed) 2024-01-23 13:30:35 +00:00
UbitUmarov
df9c35c726 minor change on warp3d.dll 2024-01-22 20:53:18 +00:00
UbitUmarov
6f81cab09f minor change on warp3d.dll 2024-01-22 20:40:36 +00:00
UbitUmarov
f44dca3684 minor change 2024-01-22 19:59:28 +00:00
UbitUmarov
37622f3fd3 a few changes to warp3d map 2024-01-22 19:33:40 +00:00
UbitUmarov
c3f2c9324c on GetLinkNumPart ignore again link number 0 on a linkset with more than one prim, fix 2024-01-22 03:12:54 +00:00
UbitUmarov
01b83bf79e on GetLinkNumPart ignore again link number 0 on a linkset with more than one prim, actually do it 2024-01-22 02:36:15 +00:00
UbitUmarov
0dfb21dc13 Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim 2024-01-22 02:32:58 +00:00
UbitUmarov
cff95e4aae on GetLinkNumPart ignore again link number 0 on a linkset with more than one prim 2024-01-22 02:32:23 +00:00
Robert Adams
ed734a5307 BulletSim: revert the default .so to the previous version.
The newer version was built on Ubuntu 22.04 which has downward
library incompatibilites with other Linux distributions/versions.
Note that this updates OpenSim.Region.PhysicsModule.BulletS.dll.config
and also copies prev version to libBulletSim.so for those who don't
update all the configuration files on upgrades.
2024-01-13 12:03:56 +00:00
UbitUmarov
f21aca428f do not auto set reflection_probe_ambiance on old skies, so a viewer can decide to fix for pbr (ofc seems tha currently they just set it 0 and do nothing showing broke skies in same cases); a few changes on notecards uuid detection 2024-01-10 13:30:14 +00:00
UbitUmarov
75952d9bea cosmetics 2024-01-02 23:14:38 +00:00
UbitUmarov
10cdd17d27 cosmetics on LogWriter 2024-01-02 23:07:12 +00:00
UbitUmarov
66ba47d544 fix a attachment update (add pbr part) 2024-01-02 20:59:16 +00:00
UbitUmarov
ef1b5a8a61 remove obsolete add physics taint 2024-01-02 20:56:49 +00:00
UbitUmarov
cc6a2d2e9e add optional web profile url field to gridinfo, before we forget again how to do it 2023-12-29 20:08:57 +00:00
UbitUmarov
dce2f138ab a few changes to assets uuid gather to support overrides 2023-12-18 22:50:22 +00:00
UbitUmarov
23daf5340b add some missing matovr full updates 2023-12-12 21:15:58 +00:00
Robert Adams
4a3cfd1004 BulletSim: Update Windows and Linux BulletSim binaries for x86_64 machines.
Encorporates latest Bullet physics engine and updated wrapper with version reporting.
Previous versions left in bin/lib64/BulletSim-2.64-20230903-x86_64.dll
and similar for .so if reversion is needed.
Update bin/OpenSim.Region.PhysicsModule.BulletS.dll.config to reference
versioned BulletSim binary file.
New versions copied to unversion named binary files.
2023-12-08 01:57:41 +00:00
UbitUmarov
e0ee44ca8c add a material asset 2023-12-06 22:51:16 +00:00
UbitUmarov
7547909256 a few changes to materials 2023-12-06 22:47:14 +00:00
UbitUmarov
1d27845e2a a few changes to materials upload to inventory 2023-12-06 21:54:53 +00:00
UbitUmarov
cd4c009e64 a few changes to materials 2023-12-06 19:39:49 +00:00
UbitUmarov
738e7894b1 mantis 9103: update libBulletsim for macs (unversal dylib). Thanks Cuga 2023-12-05 18:57:57 +00:00
UbitUmarov
cbdcf3b4a0 more changes on the test feature 2023-12-02 16:29:58 +00:00
UbitUmarov
acf41e9eef mantis 9100: change Yengine order of precendence of && to be same as ||. It had higher and that did not match lsl specification or xengine. (||| stays with higher than ||| as per c# spec) 2023-12-02 13:54:07 +00:00
UbitUmarov
602569e5f7 try to match viewer protocol changes on test feature 2023-12-01 23:32:25 +00:00
UbitUmarov
b7dc478c41 update libomv 2023-12-01 23:22:53 +00:00
UbitUmarov
1440731dd2 cosmetics 2023-11-29 14:56:49 +00:00
UbitUmarov
79ac5c7f54 remove some obsolete code 2023-11-29 12:17:08 +00:00
UbitUmarov
a948cccbe2 update prebuild.dll 2023-11-29 12:04:59 +00:00
UbitUmarov
0075e6ed33 nant no longer supported 2023-11-27 18:32:31 +00:00
UbitUmarov
6b87121350 remove github action for net48 2023-11-27 15:34:46 +00:00
UbitUmarov
83d85cc2b0 Merge branch 'master' into dotnet6 2023-11-27 14:19:00 +00:00
UbitUmarov
f94f6e77bf a few cosmetic changes 2023-11-12 22:24:53 +00:00
UbitUmarov
80e930e9a6 mantis 9097: update umnanaged libs for mac, with fresh signature 2023-11-07 18:15:38 +00:00
UbitUmarov
953c646786 fix projector focus range.Thanks Rene Vega 2023-09-24 19:59:06 +01:00
UbitUmarov
61d3e1ee19 update test 2023-08-26 03:21:38 +01:00
UbitUmarov
70ba57bdaf update test 2023-08-26 03:14:01 +01:00
UbitUmarov
6acba7a4bc update test 2023-08-26 02:19:29 +01:00
UbitUmarov
4e261f49e8 mantis 9090: update universal dylib for macs (includes X64 and arm64), thanks Cugarajal 2023-08-22 18:52:56 +01:00
UbitUmarov
29b8191225 YEngine: reduce calls to CheckRunLockInvariants 2023-08-22 18:37:17 +01:00
UbitUmarov
28ffa3e2c0 fix AllowAccessOverride logic (used on sit checks) 2023-08-14 23:26:51 +01:00
UbitUmarov
8a1f19148d update native ubode for windows ( box-mesh collision issue) 2023-08-14 20:56:24 +01:00
UbitUmarov
bbe6075aa0 add lsl constant PRIM_SCULPT_FLAG_ANIMESH and change a few things about it 2023-08-08 18:45:49 +01:00
UbitUmarov
e08047b6a9 update number of estate managers to 15 2023-08-04 20:53:44 +01:00
UbitUmarov
12df4cc73e update libomv 2023-08-01 23:19:23 +01:00
UbitUmarov
0cc702aaed plus minor indentation fix 2023-08-01 19:02:08 +01:00
Vincent Sylvester
dba340a447 Minor fixes
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-08-01 18:57:39 +01:00
UbitUmarov
c0fe11a0c7 add a missing experimental parameter 2023-08-01 02:40:18 +01:00
UbitUmarov
d5e49f29da cosmetics 2023-07-25 19:56:55 +01:00
UbitUmarov
5ab9278583 add a few lsl constants for llLinkPlaySound 2023-07-18 20:28:56 +01:00
UbitUmarov
dbee15498d mantis 9082: work around discrete math issues 2023-07-07 00:18:06 +01:00
UbitUmarov
35b4cfd6e2 mantis 9082: fix rotation for do arc 2023-07-06 03:33:48 +01:00
UbitUmarov
35e3383167 fix threat level of osDrawText 2023-06-30 23:03:53 +01:00
UbitUmarov
3ec3f69e58 ooops bad turn, fix it 2023-06-23 01:21:04 +01:00
UbitUmarov
6dada08684 avoid prims sort on FindNextAvailableSitTarget, actual changes 2023-06-22 21:51:00 +01:00
UbitUmarov
5e627f909b avoid prims sort on FindNextAvailableSitTarget 2023-06-22 16:09:07 +01:00
UbitUmarov
22e8d0022f AgentCircuitManager: go back to use of normal dictionaries and lock() 2023-06-22 13:50:19 +01:00
UbitUmarov
77ee3beaf1 more yengine cosmetics 2023-06-21 11:09:51 +01:00
UbitUmarov
89130b9f0a fix osSetParcelDetails, plus more cosmetics 2023-06-21 10:30:14 +01:00
UbitUmarov
aa5f0ba8e7 cosmetics on yengine 2023-06-21 06:29:57 +01:00
UbitUmarov
2bd89bd8da YEngine: only generate code to init globals if there are any 2023-06-21 00:11:59 +01:00
UbitUmarov
1606ce4138 YEngine store a bool as integer on a lsl list in one initialization case 2023-06-20 20:59:04 +01:00
UbitUmarov
2849e57920 add osGetPrimCount([key primKey]) and osGetSittingAvatarsCount([key primkey]) that just do want name says unlike ll mess, absent primKey argument means current linkset 2023-06-14 22:45:37 +01:00
UbitUmarov
97b9f64e6d make llGetObjectPrimCount() return 0 on attachments, as spec 2023-06-14 21:57:40 +01:00
UbitUmarov
dc2017b3d9 cosmetics on lsl json 2023-06-05 21:35:22 +01:00
UbitUmarov
1f5dfa37b0 cosmetics on sensorrepeat 2023-06-04 23:25:00 +01:00
UbitUmarov
2e2dee76e4 put back CheckThreatLevel on osDie 2023-06-02 23:14:45 +01:00
UbitUmarov
f8d1e78e8a mantis 9080: make osDie only work on object rezzed by script linkset, as spec 2023-06-02 23:01:01 +01:00
UbitUmarov
8b6b00d597 fail to find lsl api in ossl should be a global fatal error 2023-06-02 22:37:10 +01:00
UbitUmarov
2625eed5e4 add some constants and reserve some linkset_data lsl event slots, compatible to mantis9081 patch, for now not accepted (any future implementation may diverge from that, even sl 2023-06-02 18:30:28 +01:00
UbitUmarov
db1c739ef2 preloadsound is suposed to send ownerid, plus save ns on useless dic searchs 2023-05-31 21:44:48 +01:00
UbitUmarov
8d5d985ba1 try fix bsparam setvalue for parameter type string 2023-05-31 20:44:42 +01:00
UbitUmarov
a76a65d0a4 Merge branch 'dotnet6' of ssh://opensimulator.org:/var/git/opensim into dotnet6 2023-05-31 19:29:21 +01:00
UbitUmarov
182bf163fb anaother typo on log string, ty Tampa 2023-05-31 19:28:37 +01:00
UbitUmarov
52bd6a443e make llLinkPlaySound() closer to spec 2023-05-31 19:27:43 +01:00
UbitUmarov
2da90242a2 fix a log string on lludpserver 2023-05-31 19:06:30 +01:00
Robert Adams
1527d42823 BulletSim: some small changes to SetForce and SetTorque motors that don't seem to fix any problems. 2023-05-30 18:28:50 +00:00
UbitUmarov
968b1207b6 cosmetics 2023-05-30 12:19:50 +01:00
UbitUmarov
e950c502ad change share of almost empty class httpclient, to just share of used SocketsHttpHandler, This simpifies handling of timeout, otherwise problematic 2023-05-26 20:27:24 +01:00
Robert Adams
c90858576c BulletSim: osGetPhysicsEngineName() returns wrapper and engine version information
New BulletSim config parameters for setting defaults if legacy format is needed.
2023-05-26 01:47:56 +00:00
UbitUmarov
0b81b066f3 cosmetics 2023-05-24 16:19:55 +01:00
UbitUmarov
f138bf0ebf and again 2023-05-24 15:08:03 +01:00
UbitUmarov
a884b80f2a update again xmlrpc to issue a diferent timeout exception 2023-05-24 14:57:00 +01:00
UbitUmarov
773d0e49f7 update xmlrpc to issue a diferent timeout exception 2023-05-24 14:46:17 +01:00
UbitUmarov
d7714530a8 try to reduce log spam on http fails 2023-05-24 14:16:43 +01:00
UbitUmarov
5e0c6446d8 update xmlrpc.dll with a send variant using httpclint and used it 2023-05-24 13:42:56 +01:00
UbitUmarov
2bd08a19d5 let llgethttpheaders do case insensitive search, plus cosmetics 2023-05-24 00:43:35 +01:00
UbitUmarov
1a6b16d1c8 fix silly bug on CanBeOnThisLand(..) 2023-05-23 23:18:34 +01:00
UbitUmarov
4851a28596 cosmetic 2023-05-23 19:04:00 +01:00
UbitUmarov
828d568d2f revert last commit, so some scripts may still work on other engines 2023-05-23 18:34:14 +01:00
UbitUmarov
265ea0b8a3 ExtendedPhysics module is specific to Bulletsim, can not be active with other engines, at least in current form 2023-05-23 18:17:22 +01:00
UbitUmarov
d0c681d404 mantis 9078: allow region modules script injected constants to be silent replaced. Since with Yengine, this are compile time globals for all regions, only set them once 2023-05-23 18:02:10 +01:00
Robert Adams
cafbf1c977 Add physDisableDeactivation() LSL function to ExtendedPhysics.
Add implementation of physDisableDeactivation to BulletSim.
2023-05-23 16:41:22 +00:00
UbitUmarov
dd9e365e00 a few changes on ban checks, thx Tampa 2023-05-21 20:49:21 +01:00
UbitUmarov
6743934434 cosmetics 2023-05-21 20:46:54 +01:00
UbitUmarov
c66effbe4f httpclient on RegionReadyModule 2023-05-18 17:57:15 +01:00
UbitUmarov
6d144ba1c9 httpclient on NeighbourServicesConnector 2023-05-18 17:53:45 +01:00
UbitUmarov
b4d6bb35b7 cosmetics on restclient 2023-05-18 17:48:48 +01:00
UbitUmarov
73ca50bbbc change default httpclients MaxResponseContentBufferSize 2023-05-18 17:47:39 +01:00
UbitUmarov
3882ef3eb0 more on HttpWebRequest in userprofiles 2023-05-18 14:25:09 +01:00
UbitUmarov
f3663371dc more on HttpWebRequest 2023-05-17 21:17:36 +01:00
UbitUmarov
6dbc498677 clean up restclient a bit more 2023-05-17 20:36:11 +01:00
UbitUmarov
beeb5b54be replace HttpWebRequest by HttpClient on other places 2023-05-17 19:15:46 +01:00
UbitUmarov
ec2f81dd07 clean up dead async code from restclient, was not in use and naw a obsolete way of doing it 2023-05-17 17:24:53 +01:00
UbitUmarov
36fc05a3c1 replace HttpWebRequest by HttpClient on restclient 2023-05-17 17:15:13 +01:00
UbitUmarov
29049c14b2 replace HttpWebRequest by HttpClient on another place, used bt assets, etc 2023-05-17 01:10:02 +01:00
UbitUmarov
19229aff64 replace HttpWebRequest by HttpClient on another place 2023-05-16 22:57:23 +01:00
UbitUmarov
7860e2d861 cosmetics 2023-05-13 16:39:14 +01:00
UbitUmarov
4462b65a48 don0t mess with flag usepaslist, thanks Tampa 2023-05-08 21:41:06 +01:00
UbitUmarov
700e044346 change llResetLand*List with ideas on mantis 9075 2023-05-08 21:22:12 +01:00
UbitUmarov
32028241d2 change llResetLand*List exec rights so works with group owned, plus other cosmetics 2023-05-08 18:54:51 +01:00
UbitUmarov
9c8ac8c70b cosmetics 2023-05-08 03:05:36 +01:00
UbitUmarov
c47805e20d cosmetics 2023-05-08 02:50:43 +01:00
UbitUmarov
dcdb5fdb21 cosmetics 2023-05-08 00:35:04 +01:00
UbitUmarov
cb0f6d099c mantis 9075: do set use lists flags on addign first entry 2023-05-07 19:37:34 +01:00
UbitUmarov
83491db916 several changes to llhttprequest like use HttpClient 2023-05-06 18:06:40 +01:00
UbitUmarov
9fa29c382c avoid spurius count increment on unlink a physical prim 2023-05-05 16:26:47 +01:00
UbitUmarov
177fb75317 fix total objects(prims) count on stats, it was not counting meshes..; avoid spurius count increment on unlink 2023-05-05 14:53:57 +01:00
UbitUmarov
864871f490 a few changes 2023-05-05 11:45:17 +01:00
Jeff Kelley
b96ef0d00c osSetPenColor
osSetPenColor1

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-05-05 10:45:02 +01:00
UbitUmarov
f670a3aa51 update script syntax 2023-04-29 11:13:40 +01:00
UbitUmarov
35962d8c39 add llListFindStrided; llListFindList change to be more as spec 2023-04-29 11:06:35 +01:00
UbitUmarov
7dbedecd88 add LSL llLinear2sRGB and llsRGB2Linear 2023-04-28 01:55:35 +01:00
UbitUmarov
549ebc1025 add old llList2ListStrided renamed osOldList2ListStrided to easy any possible script fixes 2023-04-27 22:15:19 +01:00
UbitUmarov
a4ba4232e6 change llList2ListStrided so it is more like spec (no exclusion range, etc 2023-04-27 22:01:52 +01:00
UbitUmarov
02fd3b86fa missing file and take a debug message out 2023-04-27 21:58:21 +01:00
UbitUmarov
46831b086e add llList2ListSlice 2023-04-27 21:55:55 +01:00
UbitUmarov
7b7071f778 fix bad c&p 2023-04-26 21:05:16 +01:00
UbitUmarov
4c061a0602 add llListSortStrided and osListSortInPlaceStrided 2023-04-26 20:26:01 +01:00
UbitUmarov
f37071ba0c Merge branch 'dotnet6' of ssh://opensimulator.org:/var/git/opensim into dotnet6 2023-04-25 23:54:44 +01:00
UbitUmarov
cfbeb88823 cosmetics 2023-04-25 23:53:26 +01:00
UbitUmarov
7ba6ddf2b1 do case invariant compare on deny mac and id0 2023-04-25 23:40:17 +01:00
Robert Adams
f15a0c1f1d workflow: only generate IRC status messages if built in main opensim repository. This keeps forks and copies from generating IRC messages. 2023-04-24 13:47:40 +00:00
Robert Adams
1e50c4d6c6 workflow: only generate IRC status messages if built in main opensim repository. This keeps forks and copies from generating IRC messages. 2023-04-24 13:45:23 +00:00
UbitUmarov
e1d829ba83 fix typo 2023-04-22 12:10:01 +01:00
UbitUmarov
97b6635f32 update building.md 2023-04-22 12:07:27 +01:00
UbitUmarov
0809bb7cca update script syntax 2023-04-18 18:05:32 +01:00
UbitUmarov
33bdf572c6 fix several PARCEL_DETAILS_* constants for getparceldetails, add PARCEL_DETAILS_GEOMETRICCENTER; Stop script on unknown parameter, instead of keep running with a wrong integer 0 result 2023-04-18 17:54:24 +01:00
UbitUmarov
f96793cd19 minr changes to lsl getparceldetails 2023-04-18 02:49:23 +01:00
UbitUmarov
93e06f87f6 add list osGetParcelIDs() and key osGetParcelID(), plus a few changes to previus commits 2023-04-16 20:00:35 +01:00
UbitUmarov
68130e0c93 cosmetics 2023-04-16 18:09:34 +01:00
UbitUmarov
ae73999ad4 update libomv 2023-04-13 21:16:24 +01:00
UbitUmarov
3aa3498ae2 do realy add mono.security.dll to git remotes 2023-04-11 17:58:51 +01:00
UbitUmarov
9686af7944 PGSQL: since we mya not have mono, our mono.security.dll must be on bin folder 2023-04-11 17:55:28 +01:00
UbitUmarov
286df1d467 also update release notes url 2023-03-29 20:45:07 +01:00
UbitUmarov
8569d47c76 move up to version 0.9.3.0Dev Nessie 2023-03-29 20:12:51 +01:00
UbitUmarov
ac24e8945b cosmetics 2023-03-29 20:11:04 +01:00
UbitUmarov
70bc11c94a .. and bad merge 2023-03-23 23:16:31 +00:00
UbitUmarov
fb1ef7f784 fix typo 2023-03-23 23:11:42 +00:00
UbitUmarov
d1466eb88a fix typo 2023-03-23 23:07:41 +00:00
UbitUmarov
3ab2ba4f07 mantis 9068: replace unmanaged libs for mac by new universal ones, that eacf file does include libs for each cpu type 2023-03-21 18:46:26 +00:00
UbitUmarov
546d253f9e change the dotnet6 test workflow 2023-03-19 21:52:52 +00:00
Ubit Umarov
41e74aec35 Update msbuildnet6.yml 2023-03-19 21:37:40 +00:00
UbitUmarov
2231b662d5 change the test workflow 2023-03-19 21:31:25 +00:00
UbitUmarov
f8e7e45965 add a test workflow for dotnet 2023-03-19 21:03:24 +00:00
UbitUmarov
b0f28dc54f missing changes 2023-03-15 11:32:58 +00:00
UbitUmarov
d345288efa reduce potencial useless float casts from list items 2023-03-15 11:29:35 +00:00
UbitUmarov
3dd1dd2f76 reduce potencial useless int casts from list items 2023-03-15 10:32:55 +00:00
UbitUmarov
bf90a8d1c5 reduce potencial useless string casts from list items 2023-03-15 09:22:14 +00:00
Kevin Cozens
5ad710c8df Fix mantis #6170 - Check if first argument of PRIM_TEXT is string or key
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-03-15 09:18:34 +00:00
UbitUmarov
c27027b6a7 reduce potencial useless string casts from list items 2023-03-15 09:06:59 +00:00
Kevin Cozens
e40fe91966 Fix mantis #6170 - Check if first argument of PRIM_TEXT is string or key
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-03-15 08:34:56 +00:00
UbitUmarov
c9281979c0 missing file 2023-03-14 17:34:22 +00:00
UbitUmarov
0faf418f0c a few more changes on test feature 2023-03-14 17:30:01 +00:00
UbitUmarov
aec200be9d persist sop animations in pgsql 2023-03-14 17:23:48 +00:00
UbitUmarov
6eb50d79d8 persist sop animations in sqlite 2023-03-14 17:15:48 +00:00
UbitUmarov
fff376c104 update libomv 2023-03-13 14:56:18 +00:00
UbitUmarov
badd80e1b9 update libomv 2023-03-13 14:33:22 +00:00
UbitUmarov
8641e0b34c persist test feature and old sop animations in pgsql *untested( 2023-03-13 12:45:12 +00:00
UbitUmarov
51b7190c64 persist test feature and old sop animations in sqlite 2023-03-13 12:41:45 +00:00
UbitUmarov
adde3cbb0a persist test feature in mysql 2023-03-13 12:40:24 +00:00
UbitUmarov
5740d99286 add test feature bin (de)serializer 2023-03-13 12:39:13 +00:00
UbitUmarov
abd7b60899 a few more test changes 2023-03-13 02:38:02 +00:00
UbitUmarov
77d8bb9968 a few more test changes and cosmetics 2023-03-12 20:26:27 +00:00
UbitUmarov
6d22429329 fix bounds check in GetLinkSitingAvatar 2023-03-11 17:38:06 +00:00
UbitUmarov
b3f876b9a3 cosmetics 2023-03-10 15:43:40 +00:00
UbitUmarov
03a9bc8db6 avoid some noise on shutdown 2023-03-10 14:47:06 +00:00
UbitUmarov
bb8b2ecec1 avoid some noise on shutdown 2023-03-10 14:25:00 +00:00
UbitUmarov
1e5c0d4c41 minor cleanup 2023-03-10 13:38:40 +00:00
UbitUmarov
99825acac0 avoid a old potencial stack overflow 2023-03-10 13:36:32 +00:00
UbitUmarov
477f0e230b avoid a old potencial stack overflow 2023-03-10 13:27:42 +00:00
UbitUmarov
8a0778beaf go back to random asset uuid 2023-03-10 09:09:00 +00:00
UbitUmarov
e55f046f82 update libomv 2023-03-09 22:33:48 +00:00
UbitUmarov
707d223ec3 cosmetics 2023-03-09 20:32:33 +00:00
UbitUmarov
0bbaedc051 a few test changes 2023-03-09 19:16:40 +00:00
UbitUmarov
b1f2a5b661 a few test changes 2023-03-09 08:26:12 +00:00
UbitUmarov
eb57c75f00 some test code 2023-03-08 21:45:25 +00:00
UbitUmarov
7b41e9f786 add dllmap config for webstats module 2023-03-08 00:17:54 +00:00
UbitUmarov
bd2ea28ede missing change 2023-03-07 14:36:13 +00:00
UbitUmarov
ec39f85a7a cosmetics 2023-03-07 14:33:42 +00:00
UbitUmarov
048a321e33 cosmetics 2023-03-06 21:05:20 +00:00
UbitUmarov
9c2aa87acf cosmetics 2023-03-01 21:08:35 +00:00
UbitUmarov
49eabf2c0c missing file 2023-02-28 10:06:14 +00:00
UbitUmarov
fc41ab3d93 misisng file 2023-02-28 10:01:45 +00:00
UbitUmarov
a2db2c7ed3 mantis 9065: rename llObjectGetLink as spec llGetObjectLink 2023-02-28 09:58:19 +00:00
UbitUmarov
3b31dc94ba mantis 9065: rename llObjectGetLink as spec llGetObjectLink 2023-02-28 09:56:13 +00:00
UbitUmarov
811c6951d4 clean a bit 2023-02-25 12:40:37 +00:00
UbitUmarov
4907dd14bb support parcel option restrict moap 2023-02-25 12:28:24 +00:00
UbitUmarov
ca5f47358e support parcel option restrict moap 2023-02-25 12:23:27 +00:00
UbitUmarov
08c0416dae vs was wrong.. 2023-02-24 15:46:29 +00:00
UbitUmarov
52359ecfc7 more cosmetics 2023-02-24 15:41:13 +00:00
UbitUmarov
8db5338e06 fix typo 2023-02-24 12:40:07 +00:00
UbitUmarov
833cd468ff cosmetics 2023-02-24 12:35:12 +00:00
UbitUmarov
7b23e2fe08 fix typo 2023-02-24 08:32:31 +00:00
UbitUmarov
b8702a094e fix typo 2023-02-24 08:29:23 +00:00
UbitUmarov
d8822ff8fe a few more cosmetic changes 2023-02-24 08:28:14 +00:00
UbitUmarov
eacc55625b mantis 9064: apply Jeff Kelley patch by hand, plus simular object_mass fix and cosmetics 2023-02-24 08:19:26 +00:00
UbitUmarov
3b181f21ae mantis 9064: apply Jeff Kelley patch by hand, plus simular object_mass fix and cosmetics 2023-02-24 08:12:35 +00:00
UbitUmarov
ace18f8013 cosmetics 2023-02-24 02:30:47 +00:00
UbitUmarov
c70486ab3f cosmetics 2023-02-24 00:17:56 +00:00
UbitUmarov
2433ea82c9 cosmetics on scenepresence and grid map 2023-02-24 00:07:46 +00:00
UbitUmarov
7d76df9610 change get terrain height again 2023-02-23 23:56:46 +00:00
UbitUmarov
ce0d426b99 add helper SimulatorFeaturesModulr OpenSimExtraFeatureContains plus cosmetics 2023-02-23 22:50:45 +00:00
UbitUmarov
20ef1d6aaf still another change on parser 2023-02-23 03:08:55 +00:00
UbitUmarov
8c7c991320 mantis 9061 change lsl integer parsing again... 2023-02-22 21:50:08 +00:00
UbitUmarov
1e0207b499 err better have the loggic right... 2023-02-19 03:32:19 +00:00
UbitUmarov
6c454c2b09 mantis 9060: do allow https schema on oar load 2023-02-18 23:06:05 +00:00
UbitUmarov
dbf675d2d1 add lsl float and integer 0 2023-02-18 02:53:56 +00:00
UbitUmarov
8d647c189c inalvid double should defualt to 0 2023-02-18 02:38:58 +00:00
UbitUmarov
92e25a9377 change lsl integer parsing 2023-02-18 02:34:30 +00:00
UbitUmarov
ac5321dfe4 change lsl float parsing 2023-02-18 02:01:52 +00:00
UbitUmarov
361f6a9226 add from string, from lsl string and from span lsl vector3 and rotation variants 2023-02-18 01:15:31 +00:00
UbitUmarov
4a4ff5faf4 oops 2023-02-18 00:18:16 +00:00
UbitUmarov
8a4ae07e88 lsl vector3 is no longer 'unsafe' 2023-02-17 23:58:30 +00:00
UbitUmarov
daacad69e4 cosmetics; change lsl string to lslvector and lsl rotation methods; 2023-02-17 23:52:49 +00:00
UbitUmarov
be2192fd53 revert change on script execution release points. That will need a full recompile with script states reset, not justifiable by now; plus cosmetics 2023-02-16 05:04:11 +00:00
UbitUmarov
f41ff1419c update libomv with faster vector3 UnitX,Y,Z rotations 2023-02-15 16:27:43 +00:00
UbitUmarov
1026efa9fd another recent bug fix: llister id can also be a invalid key 2023-02-14 23:41:20 +00:00
UbitUmarov
22ba1c7688 avoid array out of bounds on last terrain getheight 2023-02-14 02:02:37 +00:00
UbitUmarov
c3db66a3f9 add LSL:key.NullKey, plus cosmetics 2023-02-10 16:18:37 +00:00
UbitUmarov
bd41db241f fix back llsensor*: let id be a invalid or empty key again 2023-02-10 14:07:04 +00:00
UbitUmarov
37ce17f927 some more changes on lslapi, mostly style 2023-02-10 13:44:09 +00:00
UbitUmarov
c3b0c49cd0 do define LSL_string.Empty plas cosmetics 2023-02-09 20:21:21 +00:00
UbitUmarov
71ae7655e5 llSetStatus is suposed to accept a mask to set several things true or false on one call 2023-02-09 20:18:55 +00:00
UbitUmarov
38f681775c missing change 2023-02-09 18:00:01 +00:00
UbitUmarov
a0165816de change get terrain height 2023-02-09 17:56:10 +00:00
UbitUmarov
3095cf3159 update script syntax 2023-02-09 12:15:44 +00:00
UbitUmarov
157d351342 update script syntax 2023-02-09 12:13:56 +00:00
UbitUmarov
16b6bbd253 a few changes fo yengine exec time check points on function calls 2023-02-09 12:11:18 +00:00
UbitUmarov
a1faed8d47 missing api number change 2023-02-09 11:04:43 +00:00
UbitUmarov
45beb824af add llLinkSetSoundQueueing and llLinkSetSoundRadius 2023-02-09 10:59:24 +00:00
UbitUmarov
8706ea8a92 add llLinkSetSoundQueueing and llLinkSetSoundRadius 2023-02-09 10:55:44 +00:00
UbitUmarov
842bb15939 missed one 2023-02-08 03:24:15 +00:00
UbitUmarov
6e25a0a65d avoid some warnings about unused things 2023-02-08 03:22:59 +00:00
UbitUmarov
5800c46498 change llGroundNormal 2023-02-08 03:18:26 +00:00
UbitUmarov
59caf60fc5 cosmetics on lslapi 2023-02-08 03:17:22 +00:00
UbitUmarov
3744d2c57d a few changes to lsl getlink* 2023-02-08 03:07:16 +00:00
UbitUmarov
da1951f3bd do not lose instant message creation time (viewers may display ad UTC time on offline messages, for now) 2023-02-08 03:03:14 +00:00
UbitUmarov
1b354ce77e cosmetics 2023-02-08 03:01:05 +00:00
UbitUmarov
d0be98bacb cosmetics 2023-02-08 03:00:20 +00:00
UbitUmarov
0ad8d8da7b add sog GetLinkSitingAvatar(..) 2023-02-08 02:58:45 +00:00
UbitUmarov
b1e2ac7c7b a small change to sog GetLinkNumPart() 2023-02-08 02:57:43 +00:00
UbitUmarov
bc2590c82d fix typo 2023-02-06 19:31:32 +00:00
UbitUmarov
9472ec630c fix typo 2023-02-06 19:26:31 +00:00
UbitUmarov
fd2b97fc66 update script syntax 2023-02-06 18:55:29 +00:00
UbitUmarov
44b4fe523b add llLinkAdjustSoundVolume, llLinkPlaySound and llLinkStopSound 2023-02-06 18:55:06 +00:00
UbitUmarov
2bc07111c4 update script syntax 2023-02-06 18:49:46 +00:00
UbitUmarov
797ba85b35 add llLinkAdjustSoundVolume, llLinkPlaySound and llLinkStopSound 2023-02-06 18:47:39 +00:00
UbitUmarov
a0bb4a252e don't delete too much on online cache at tp out 2023-02-03 21:03:25 +00:00
UbitUmarov
3858cc945c we do need to ship the cached friends around on teleports (friends must come from grid) 2023-02-03 17:17:02 +00:00
UbitUmarov
a7b8ce9cfd try improve profiles online indication a bit more 2023-02-01 21:09:20 +00:00
UbitUmarov
e2d71afc10 cosmetics 2023-02-01 19:14:54 +00:00
UbitUmarov
b327224b74 try improve profiles online indication a bit more 2023-02-01 18:56:08 +00:00
UbitUmarov
a9cc7594e2 reduce possible trigger of Changed.POSITION just due to noise 2023-02-01 18:45:11 +00:00
UbitUmarov
5ac93aaf2f update api version and script syntax 2023-01-31 17:17:33 +00:00
UbitUmarov
6a2d9e8ec3 mantis 9056: add llReplaceSubString() 2023-01-31 17:16:33 +00:00
UbitUmarov
4d84d4b116 update api version and script syntax 2023-01-31 17:07:44 +00:00
UbitUmarov
9edba5582e mantis 9056: add llReplaceSubString() 2023-01-31 16:58:09 +00:00
UbitUmarov
9e60afbb68 change that message a bit 2023-01-27 00:04:41 +00:00
UbitUmarov
dec215e438 try to make a Yengine error message more usefull 2023-01-26 21:02:17 +00:00
UbitUmarov
86706f45af a few changes to friends module 2023-01-26 18:53:33 +00:00
UbitUmarov
4358ab54b0 add automatic copy of System.Drawing.Common.dll for the current platform, that is still needed 2023-01-26 18:52:02 +00:00
UbitUmarov
61cde32562 update script syntax 2023-01-26 16:55:28 +00:00
UbitUmarov
306df20003 update script syntax 2023-01-26 16:55:08 +00:00
UbitUmarov
ff9211a39c update script syntax 2023-01-26 16:41:58 +00:00
UbitUmarov
0eb22bbc96 fix old bug just ported to new function 2023-01-26 15:14:00 +00:00
UbitUmarov
86f34a73be fix old bug just ported to new function 2023-01-26 15:07:09 +00:00
UbitUmarov
4feb6dc2d6 minor cosmetics 2023-01-26 14:56:37 +00:00
UbitUmarov
7e15ff2894 minor change to unixtime conversion 2023-01-26 14:48:25 +00:00
Jeff Kelley
1e3cbd42ba add llGetInventoryAcquireTime
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-01-26 14:48:01 +00:00
UbitUmarov
1e58b71813 minor change to unixtime conversion 2023-01-26 14:41:09 +00:00
Jeff Kelley
f3b2b4eed6 add llGetInventoryAcquireTime
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2023-01-26 14:28:22 +00:00
UbitUmarov
da59cb659b fix typo 2023-01-26 12:11:26 +00:00
UbitUmarov
42ec116e27 try to improve profiles online indication. This ofc just fais on HG 2023-01-26 12:07:59 +00:00
UbitUmarov
de1c662532 update libomv 2023-01-25 21:26:14 +00:00
UbitUmarov
e106a8aa60 fix typo 2023-01-25 19:44:38 +00:00
UbitUmarov
575c338d1c try to improve profiles online indication. This ofc just fails on HG 2023-01-25 19:42:19 +00:00
UbitUmarov
4596c72318 missing change 2023-01-25 17:38:47 +00:00
UbitUmarov
6e1a196974 more cosmetics 2023-01-25 17:35:25 +00:00
UbitUmarov
eea5d14ec6 more cosmetics 2023-01-21 15:49:46 +00:00
UbitUmarov
3011368fd0 FIRE-32583: change [Const] PrivatePort default to 9000, since the default config is for standalone mode 2023-01-14 13:07:23 +00:00
UbitUmarov
1afe46d611 FIRE-32583: change [Const] PrivatePort default to 9000, since the default config is for standalone mode 2023-01-14 13:04:58 +00:00
UbitUmarov
76072311b2 cosmetics 2023-01-13 14:40:55 +00:00
UbitUmarov
1b95449f9d cosmetics 2023-01-13 14:36:02 +00:00
UbitUmarov
4503f4075c cosmetics 2023-01-13 14:04:44 +00:00
UbitUmarov
c62e756160 cosmetics 2023-01-12 17:17:08 +00:00
UbitUmarov
7902a94113 cosmetics 2023-01-12 17:10:59 +00:00
UbitUmarov
d8edbe7391 cosmetics 2023-01-12 16:14:17 +00:00
UbitUmarov
4563e1cdbc cosmetics 2023-01-12 13:53:58 +00:00
UbitUmarov
dc754b22d5 bullet low level seems to ignore MaxCollisionsPerFrame, in some cases. Thanks Beq Janus 2023-01-12 13:08:31 +00:00
UbitUmarov
cfc1170ea4 bullet low level seems to ignore MaxCollisionsPerFrame, in soem cases. Thanks Beq Janus 2023-01-12 13:04:21 +00:00
UbitUmarov
45a3b118cd mantis 9050: replace mysql.data 8.0.31 with one with checks for those dbnull values 2023-01-11 15:39:45 +00:00
UbitUmarov
995d414ab9 mantis 9050: replace mysql,data with one with checks for those dbnull values 2023-01-11 14:09:41 +00:00
UbitUmarov
e2f59e72c5 fix bad merges 2023-01-09 12:48:35 +00:00
UbitUmarov
8946cb9f1c cosmetics 2023-01-09 12:42:46 +00:00
UbitUmarov
c821ef25cb robust: add login block by ID0. Note that like by mac this may even block wrong users; cosmetics 2023-01-09 12:39:42 +00:00
UbitUmarov
8ba1441eb1 robust: add exclude by id0; pre compile some regex searchs. not that user block by id0 or mac is not very effective and may even block wrong users! 2023-01-08 19:10:50 +00:00
UbitUmarov
8d16d0b0ba minor cosmetics 2022-12-30 00:16:37 +00:00
UbitUmarov
c2fbd10f89 fix llstopanimation patch, as i did on master 2022-12-29 21:53:33 +00:00
UbitUmarov
8cb18e9eb2 fix a typo that was breaking lsl http service, and other things 2022-12-28 19:05:48 +00:00
UbitUmarov
3422ae3be1 minor cleanup 2022-12-27 18:24:06 +00:00
UbitUmarov
2c2b340afe mantis 4092: apply patch, wit a change, to llstopanimation 2022-12-27 18:14:13 +00:00
lickx
60d4724284 Mantis 9042 allow llStopAnimation with overridden animations
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-12-24 00:01:42 +00:00
UbitUmarov
bfce91556b update native bullet dll for mac, Thx cuga 2022-12-23 20:26:50 +00:00
UbitUmarov
bf952817fa cosmetics, cleanup and other things 2022-12-17 22:04:03 +00:00
UbitUmarov
3607da13e0 cosmetics 2022-12-17 18:51:44 +00:00
UbitUmarov
38ddb92cc3 cosmetics 2022-12-16 19:38:10 +00:00
UbitUmarov
763c04873f fix a bad test 2022-12-16 04:54:34 +00:00
UbitUmarov
333c5091b6 revert a incomplete tests fix that was not supposed to be commited today 2022-12-16 04:38:55 +00:00
UbitUmarov
f52099433d item needs owner ... 2022-12-16 04:19:20 +00:00
UbitUmarov
5afbf8e8a8 items need owner 2022-12-16 02:31:09 +00:00
UbitUmarov
89a5f6139f fix 2 bugs caused by nonsense xinventory fieldnames 2022-12-16 02:10:37 +00:00
UbitUmarov
9d9d8e3305 missing changes on tests 2022-12-15 23:36:12 +00:00
UbitUmarov
e471df72d8 missing changes 2022-12-15 23:33:50 +00:00
UbitUmarov
1f6dcedafb a few more changes to Xinventory service 2022-12-15 23:30:08 +00:00
UbitUmarov
e88e93a34a a few changes on attachment module and Xinventory service 2022-12-15 23:17:59 +00:00
UbitUmarov
41b718626f cosmetics 2022-12-15 22:19:09 +00:00
UbitUmarov
b62280617d maybe this is a better way... 2022-12-10 19:26:36 +00:00
UbitUmarov
922f4ca66c add another needed config file 2022-12-10 18:46:01 +00:00
Vincent Sylvester
86333de434 Document old fsassets format, only use if required, may cause issues
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-12-09 17:15:55 +00:00
Vincent Sylvester
8ecf31eb67 Document old fsassets format, only use if required, may cause issues
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-12-09 17:13:13 +00:00
UbitUmarov
27c4503b23 update libomv with a few more lines of useless SIMD 2022-12-09 16:33:49 +00:00
UbitUmarov
365dc30297 Merge branch 'dotnet6' of ssh://opensimulator.org:/var/git/opensim into dotnet6 2022-12-06 01:16:04 +00:00
UbitUmarov
f7849ee72d another one; use arm64 instead of aarch 2022-12-06 01:09:02 +00:00
UbitUmarov
b297a9a7f9 another one: use arm64 instead of aarch 2022-12-06 01:03:44 +00:00
UbitUmarov
ac750305ff remove redundant ntive libs 2022-12-06 00:58:38 +00:00
UbitUmarov
14b71d2023 .. and yes missing files 2022-12-05 20:32:37 +00:00
UbitUmarov
878ce39924 update native libs for apple silicon, see https://github.com/cuga-rajal/opensim_apple_arm64 for more info abotu opensim on that. Thx Cuga 2022-12-05 20:30:03 +00:00
UbitUmarov
ee58a2c92e mantis 9043: update libomv, let UUID still have a Guid field, or ms binarySerializer may fail as reported. 2022-12-05 00:50:29 +00:00
UbitUmarov
d6e9d4f131 fix openjpeg dylib for intel osx 2022-12-01 00:45:17 +00:00
UbitUmarov
b135e84d94 add a bit more simd to uuid in libomv 2022-11-26 20:16:24 +00:00
UbitUmarov
fa6e4f6c22 move openjpeg native libs back to lib folders 2022-11-25 15:56:52 +00:00
UbitUmarov
036c284e38 runprebuild.bat also deletes addin-db-004 folder 2022-11-25 15:41:02 +00:00
UbitUmarov
b7f4867f8f update libomv 2022-11-25 15:37:50 +00:00
UbitUmarov
df68efa4bd add some native libs for apple silicon Thx Cuga Rajal mantis 9041 2022-11-24 18:37:04 +00:00
UbitUmarov
aaeeee33cf update libomv with a a few more lines of SIMD on uuid 2022-11-24 15:57:36 +00:00
UbitUmarov
4565281d41 changes so mono.data.sqlite use dllmap 2022-11-24 15:11:56 +00:00
UbitUmarov
a133a0c7ac change bullet to use dllmap 2022-11-24 10:55:42 +00:00
UbitUmarov
6e8029d351 make dllmap paths relative to execution entry folder 2022-11-24 00:57:30 +00:00
UbitUmarov
cebbd32215 fix some x flags 2022-11-23 23:16:04 +00:00
UbitUmarov
266c64f41e fix ubode targets 2022-11-23 22:43:49 +00:00
UbitUmarov
50ad1034dd add a needed reference - runprebuild 2022-11-23 22:22:11 +00:00
UbitUmarov
1e49330904 update libomv with new dllmapconfiguration helper. This will read again files *dll.config to setup dllmaps, but does need to be called by hand on respective assemblies. It will also set dllmaps for windows. Change ubode to use it. (cross fingers) 2022-11-23 22:16:43 +00:00
UbitUmarov
e5386fba6f use NativeLibrary.TryLoad() instead of dllimported load 2022-11-22 22:22:44 +00:00
UbitUmarov
dad22a822e use possible hardware accelerated System.Numerics.BitOperations.Log2(n) 2022-11-22 22:19:24 +00:00
UbitUmarov
56ab72f8b2 oops 2022-11-18 03:55:14 +00:00
UbitUmarov
c25175dee2 let runprebuild.sh also do the temporary needed System Drawing dll copy 2022-11-18 03:54:01 +00:00
UbitUmarov
8ce243354b let runprebuild.sh also create simple compile.sh for release mode 2022-11-18 03:48:55 +00:00
UbitUmarov
de418e9596 mantis 9039: do not lose runtime permitions on llAttachToAvatarTemp 2022-11-18 03:38:58 +00:00
UbitUmarov
6b4dfcde84 mantis 9039: do not lose runtime permitions on llAttachToAvatarTemp 2022-11-18 03:36:35 +00:00
UbitUmarov
22652d3e56 fix unit of time on contexttimeout control. Thanks _cslcm_ 2022-11-16 18:19:36 +00:00
UbitUmarov
fcc067a49e fix unit of time on contexttimeout control. Thanks _cslcm_ 2022-11-16 18:11:39 +00:00
UbitUmarov
8685ebe655 try fix osx detection than ms keeps breaking 2022-11-16 00:20:37 +00:00
UbitUmarov
18e20d6fdd more cosmetics on object serialization 2022-11-13 03:19:08 +00:00
UbitUmarov
a4752eb051 ossl cosmetics; change some string comparer to ordinal 2022-11-13 00:05:31 +00:00
UbitUmarov
209b6babb5 mantis 9036: do not allow ForceAttachToAvatarFromInventory to attach coalesced inventory assets 2022-11-12 19:35:45 +00:00
UbitUmarov
04c4a707e5 mantis 9036: do not allow ForceAttachToAvatarFromInventory to attach coalesced inventory assets 2022-11-12 19:31:38 +00:00
UbitUmarov
86a8b68e01 mantis 9036: do not allow attach of coalesced inventory assets 2022-11-12 18:59:36 +00:00
UbitUmarov
48d26f8925 mantis 9036: do not allow attach of coalesced inventory assets 2022-11-12 18:50:09 +00:00
UbitUmarov
aded837983 cosmetics 2022-11-12 03:27:11 +00:00
UbitUmarov
7aa83ee6a7 cosmetics 2022-11-12 03:05:58 +00:00
UbitUmarov
d9380c9b83 clean some spurius chars and a few other things. Thanks Vincent Sylvester 2022-11-12 02:49:01 +00:00
UbitUmarov
472c243362 add some null refs checks on script removal 2022-11-10 16:10:47 +00:00
UbitUmarov
52d8c6204e a few changes to xinventory connector 2022-11-10 14:13:50 +00:00
UbitUmarov
d967dfbf0e update xmlrpc.dll 2022-11-10 13:30:57 +00:00
UbitUmarov
022ea478d1 ... cosmetics 2022-11-10 11:29:30 +00:00
UbitUmarov
4cac42ab98 remove a lock on hginventorybroker; cosmetics 2022-11-10 09:44:36 +00:00
UbitUmarov
3f0fcbf3c6 a few more changes missing on prebuild source 2022-11-10 09:37:05 +00:00
UbitUmarov
007b295269 missing file 2022-11-10 09:33:54 +00:00
UbitUmarov
f4e1bf798a update prebuild; remove duplicated Debug compile define 2022-11-10 09:24:56 +00:00
UbitUmarov
07deaa4746 some more cosmetics on oshttpserver 2022-11-10 01:45:19 +00:00
UbitUmarov
70e50a4769 some more cosmetics on http server 2022-11-10 01:11:17 +00:00
UbitUmarov
7ef28ede29 remove old ode (OpenDynamicsEngine) module. Thnaks to all that worked on it, in fact it was the basis for other modules like Bullet and ubOde 2022-11-09 02:33:43 +00:00
UbitUmarov
89b13e1db2 for fix old ode for linux and others by using again same unmanaged lib as ubode. Otherwise mono will just use the wrong one, since they have same api, and are both always loaded by mono 2022-11-09 01:54:16 +00:00
UbitUmarov
d0a7a4fd0e for fix old ode for linux and others by using again same unmanaged lib as ubode. Otherwise mono will just use the wrong one, since they have same api, and are both always loaded by mono 2022-11-09 01:35:12 +00:00
UbitUmarov
4ec3fce8f1 ode modules: rename native api classes 2022-11-08 18:18:07 +00:00
UbitUmarov
c060ce1c9c several cosmetic on physics 2022-11-08 03:56:11 +00:00
UbitUmarov
87cf092666 ubode do ray-avatar collision in managed space 2022-11-08 03:51:30 +00:00
UbitUmarov
dc5a07fdb4 do not close a response still in use 2022-11-06 00:12:50 +00:00
UbitUmarov
9e58f0f489 do not close a response still in use 2022-11-05 23:54:52 +00:00
UbitUmarov
d790ea4868 do not waste time sending a message back to client on DeactivateClientDueToTimeout..., that most likely will fail 2022-11-05 14:30:50 +00:00
UbitUmarov
3ef7d3d8df do not waste time sending a message back to client on DeactivateClientDueToTimeout..., that most likely will fail 2022-11-05 00:26:34 +00:00
UbitUmarov
2f3cf5260c try mk huggers a bit better 2022-11-04 22:45:53 +00:00
UbitUmarov
0d76b04ad4 update libomv as need by previus commit 2022-11-04 21:47:42 +00:00
UbitUmarov
3931400d7f ubode: several changes to avatar-avatar collisions. Replace some unmanaged by managed code 2022-11-04 21:45:44 +00:00
UbitUmarov
fd6edf81d9 remove some xengine code; remove OSSLPrim, whatever that was 2022-11-01 01:23:04 +00:00
UbitUmarov
9559b402e9 LSL fix a vector lslvector cast 2022-10-30 21:17:50 +00:00
UbitUmarov
61527e82ff LSL fix a vector lslvector cast 2022-10-30 20:47:09 +00:00
UbitUmarov
0af9aee004 update building.md for dotnet6 2022-10-30 20:37:47 +00:00
UbitUmarov
6d10bef6a1 update building.md for dotnet6 2022-10-30 20:14:22 +00:00
UbitUmarov
327fad2a6e ubode: fix physical prims space destroy 2022-10-29 03:49:53 +01:00
UbitUmarov
3a628c335e ubode: fix physical prims space destroy 2022-10-29 03:47:45 +01:00
UbitUmarov
ec793ae7d3 cosmetics 2022-10-29 01:20:37 +01:00
UbitUmarov
fb9eade129 ubode: revert raycasts timeout to older value 2022-10-28 21:37:43 +01:00
UbitUmarov
c3107713f4 ubode: revert raycasts timeout to older value 2022-10-28 21:32:18 +01:00
UbitUmarov
0dd88c4ec7 add some missing default group owner powers on xmlrpc groups module 2022-10-28 20:10:39 +01:00
UbitUmarov
aa572df663 add some missing default group owner powers on xmlrpc groups module
plus more dotnet6 code style changes
2022-10-28 20:08:54 +01:00
UbitUmarov
496deb92d4 cosmetics 2022-10-25 04:18:01 +01:00
UbitUmarov
720bae7b73 update libomv 2022-10-25 02:34:43 +01:00
UbitUmarov
be5fc7344c search a prim inventory matching both name and asset type, on some LSL and OSSL functions 2022-10-24 02:15:56 +01:00
UbitUmarov
5d420346cb search a prim inventory matching both name and asset type, on some LSL and OSSL, other functions 2022-10-24 02:12:15 +01:00
UbitUmarov
ff0422cbd7 search a prim inventory matching both name and asset type, on some LSL and OSSL 2022-10-24 01:37:01 +01:00
UbitUmarov
0289011442 cosmetics on ubder meshing 2022-10-23 21:10:36 +01:00
UbitUmarov
f5883d8ce6 revert introduction of some in arguments 2022-10-23 21:00:56 +01:00
UbitUmarov
d89a3bb17c update script syntax 2022-10-23 03:30:59 +01:00
UbitUmarov
37844d22ea update script syntax 2022-10-23 03:29:34 +01:00
UbitUmarov
992ef26f07 update libomv 2022-10-23 02:46:41 +01:00
UbitUmarov
d27516ac01 cosmetics 2022-10-22 22:51:55 +01:00
UbitUmarov
5a7157efc8 update libomv 2022-10-22 22:42:38 +01:00
UbitUmarov
a28c875ce4 add llSHA256String() same as osSHA256 2022-10-22 14:10:07 +01:00
UbitUmarov
06f5933187 missing using statement 2022-10-22 13:49:29 +01:00
UbitUmarov
ee243b8ad4 add llSHA256String() same as osSHA256 2022-10-22 13:42:17 +01:00
UbitUmarov
016ff2fb11 add llObjectGetLinkKey(...) 2022-10-22 13:19:13 +01:00
UbitUmarov
0d35531200 add llObjectGetLinkKey(...) 2022-10-22 12:13:44 +01:00
UbitUmarov
7fd99bc6ae Merge branch 'dotnet6' of https://bitbucket.org/opensimulator/opensim into dotnet6 2022-10-22 12:11:45 +01:00
UbitUmarov
4adcbe6288 a few changtes to ubode 2022-10-22 12:06:51 +01:00
UbitUmarov
47e485e19b a few changtes to ubode 2022-10-20 01:35:29 +01:00
UbitUmarov
cd037cd2ea a few changtes to ubode 2022-10-19 23:22:21 +01:00
UbitUmarov
7a3ff3b210 few changes on ubode collisions 2022-10-19 04:17:44 +01:00
UbitUmarov
0ead627fd5 more code stype changes and other things 2022-10-19 02:29:14 +01:00
UbitUmarov
523f7cc1dc more code stype changes 2022-10-19 02:23:15 +01:00
UbitUmarov
fddb3761a0 use some shared char arrays on string split 2022-10-19 01:38:25 +01:00
UbitUmarov
11005b24e9 update warp3d for net6 2022-10-17 13:47:02 +01:00
UbitUmarov
65925027f1 c# things on physics; remove unused file (runprebuild) 2022-10-16 22:36:09 +01:00
UbitUmarov
bce31bda7d c# sugar 2022-10-16 19:21:54 +01:00
UbitUmarov
0df9802aa3 use 'in' on PollService event args 2022-10-16 17:36:17 +01:00
UbitUmarov
8895577c80 use Random.Shared 2022-10-16 15:06:36 +01:00
UbitUmarov
0f3d7f45d9 mantis 9032: update HGInventoryServicePlugin entry, shutup if old format 2022-10-16 13:20:43 +01:00
UbitUmarov
e5fd020b97 mantis 9032: actually shutup if old format 2022-10-16 13:12:36 +01:00
UbitUmarov
5cd4dcdebe mantis 9032: update HGInventoryServicePlugin entry, shutup if old format 2022-10-16 13:10:17 +01:00
UbitUmarov
fa3975b4e8 more useless changes on some oar/iar files 2022-10-15 21:10:15 +01:00
UbitUmarov
bf1feaa616 more useless changes 2022-10-15 19:11:59 +01:00
UbitUmarov
020df45772 some use of in parameters and other sugar; change object sandbox position limitation a bit 2022-10-15 19:06:32 +01:00
UbitUmarov
0a83f8ba6e fix bullet config for mac osx, this does nothing on dotnet6. TODO, for now libs ofr each platform may need to be copied out of lib64 to bin by hand, with possible rename, so loader finds them 2022-10-15 18:18:53 +01:00
UbitUmarov
0069c9fef3 fix bullet config for mac osx 2022-10-15 18:11:52 +01:00
UbitUmarov
47e120a1de fix a typo 2022-10-15 03:13:31 +01:00
UbitUmarov
3a02bf077d let log4net find its configuration with Robust also 2022-10-15 03:06:29 +01:00
UbitUmarov
053dfdd13d use new c# features(sugar) on scene 2022-10-15 02:34:08 +01:00
UbitUmarov
98551a5856 use new c# features(sugar) on uuidgather 2022-10-15 02:13:16 +01:00
UbitUmarov
b4b4d904fe add missing future asset def 2022-10-15 01:59:21 +01:00
UbitUmarov
84f39d04d1 cosmetics 2022-10-14 02:51:28 +01:00
UbitUmarov
3b40bb4586 fix a typo 2022-10-09 22:27:27 +01:00
UbitUmarov
302da0b61f the changes to prebuild sources to compile for dotnet6 2022-10-09 20:43:56 +01:00
UbitUmarov
4678611a44 remove a xengine project from prebuild.xml 2022-10-09 20:12:00 +01:00
UbitUmarov
8b49ce4aaa replace prebuild by dotnet version 2022-10-09 20:10:33 +01:00
UbitUmarov
c510e29e14 a bit more c# sugar... 2022-10-08 17:24:42 +01:00
UbitUmarov
ac65a5903e c# sugar... 2022-10-08 03:28:27 +01:00
UbitUmarov
5c3d86937f c# sugar... 2022-10-08 02:25:07 +01:00
UbitUmarov
8ca82b2282 c# sugar... 2022-10-08 00:28:28 +01:00
UbitUmarov
919ffee0d3 oh a typo! 2022-10-07 23:36:47 +01:00
UbitUmarov
57060a8efa c# sugar... 2022-10-07 23:33:39 +01:00
UbitUmarov
4cf9c9b24f update libomv6 may smoke if not recompiled 2022-10-07 21:32:58 +01:00
UbitUmarov
d2161872e0 fix typo/bug on ubode 2022-10-07 19:12:21 +01:00
UbitUmarov
a4300c227a fix typo/bug on ubode 2022-10-07 19:09:49 +01:00
UbitUmarov
cb706f7058 c# sugar on lsl timers code 2022-10-07 17:30:00 +01:00
UbitUmarov
79135494d3 cosmetics 2022-10-07 17:28:29 +01:00
UbitUmarov
5b3758cbbd update libomv6.0 2022-10-07 14:09:53 +01:00
UbitUmarov
e4a158327a some use of interpolated strings 2022-10-05 01:53:24 +01:00
UbitUmarov
6422b3f04f a few changes to readme.md 2022-10-04 22:15:47 +01:00
UbitUmarov
9fb436b214 the changes to prebuild source.. 2022-10-04 21:15:38 +01:00
UbitUmarov
c10b4e8760 remove list of source files where the folders structure does allow for dotnet automatic includes, ie simple flat folders per project 2022-10-04 21:00:19 +01:00
UbitUmarov
bf257a937b change runtime information log, add processor arch to ossl/lsl sim version 2022-10-03 22:43:58 +01:00
UbitUmarov
79b3157d0b a little use of MathF 2022-10-03 18:43:52 +01:00
UbitUmarov
b87ba5449c a little use of MathF 2022-10-03 16:29:22 +01:00
UbitUmarov
d6a2541179 use some more new c# sugar ( possible breaking it all :P ) 2022-10-03 16:16:36 +01:00
UbitUmarov
50bb58f884 use some c#9 style sugar plus cosmetics 2022-10-03 14:35:30 +01:00
UbitUmarov
ac8c69ba1a use some c#9 style sugar plus cosmetics 2022-10-03 14:33:20 +01:00
UbitUmarov
ea83284c87 avoid null ref 2022-10-02 23:45:57 +01:00
UbitUmarov
5b4c3c9f33 try another way... 2022-10-02 23:39:09 +01:00
UbitUmarov
d459bec18d set System.Globalization.UseNls. new ICU is a stupid breaking change on string.indexof, etc 2022-10-02 22:54:02 +01:00
UbitUmarov
51970c6f28 dotnet claims sslv2 and 3 are not supported 2022-10-02 20:51:40 +01:00
UbitUmarov
cf26e5ed8d add some runtime configuration settings 2022-10-02 20:19:35 +01:00
UbitUmarov
9d3e5e4ee3 update libomv(dotnet6) with a bug fix 2022-10-02 17:26:25 +01:00
UbitUmarov
b687a3604c change the platform strings to DotNet 2022-10-02 15:34:51 +01:00
UbitUmarov
1a548390b5 cosmetics 2022-10-02 15:09:10 +01:00
UbitUmarov
40ca47e28e a few changes to building, vs2022 is optional, etc 2022-10-02 15:03:03 +01:00
UbitUmarov
33d30e6859 cosmetics 2022-10-02 13:36:17 +01:00
UbitUmarov
34aa667096 missed a lib 2022-10-02 13:00:44 +01:00
UbitUmarov
94fbbd8f78 dotnet does not do 32bit 2022-10-02 12:47:06 +01:00
UbitUmarov
d95c88a359 dotnet does not do 32bit 2022-10-02 12:46:13 +01:00
UbitUmarov
c5d987049a dotnet does do 32bit 2022-10-02 12:44:59 +01:00
UbitUmarov
ea9428f566 dotnet does not find libs as mono did. Temp workaround 2022-10-02 12:44:14 +01:00
UbitUmarov
ae96e283bd cosmetics 2022-10-02 12:29:32 +01:00
UbitUmarov
143ef3addd cosmetics 2022-10-02 12:25:10 +01:00
UbitUmarov
034994ecfe remove wrong vector null test 2022-10-02 12:18:50 +01:00
UbitUmarov
c29b241a92 update the building steps 2022-10-02 12:16:00 +01:00
UbitUmarov
b02c65280e remove wrong uuid null tests 2022-10-02 12:10:41 +01:00
UbitUmarov
2346af0715 smartThreadPool changes 2022-10-02 12:03:44 +01:00
UbitUmarov
eeacd39d25 fix one of many typos 2022-10-02 11:55:28 +01:00
UbitUmarov
015176fd30 still some cookies code, and take more tests out of the way 2022-10-02 11:51:27 +01:00
UbitUmarov
3224ab2d80 few minor changes on warp3dMap 2022-10-02 11:49:06 +01:00
UbitUmarov
62d56df5b4 few minor changes on physics 2022-10-02 11:46:03 +01:00
UbitUmarov
b1bde3c8f1 timezone code changed 2022-10-02 11:44:43 +01:00
UbitUmarov
d81ed97e5d still some xengine .. 2022-10-02 11:43:29 +01:00
UbitUmarov
cce98b18c0 betterrandom was not that better 2022-10-02 11:42:07 +01:00
UbitUmarov
2112665133 http cookies are gone 2022-10-02 11:40:29 +01:00
UbitUmarov
6ff8ecaae0 appdomains are gone. XEngine does not make much sense without them 2022-10-02 11:38:50 +01:00
UbitUmarov
f6a47a9f47 thread.abort is gone. Coment out so things compile 2022-10-02 11:30:41 +01:00
UbitUmarov
fc3543c24a performance counters are windows only, we are not, so .. gone 2022-10-02 11:24:39 +01:00
UbitUmarov
990831c373 add back local console hack 2022-10-02 11:22:04 +01:00
UbitUmarov
e811c8b56e update some of the other libraries 2022-10-02 11:18:49 +01:00
UbitUmarov
7634a75ede add dotnet compatibility libraries. For now Drawing needs to be copied by hand for win or linux runtimes at install 2022-10-02 11:13:34 +01:00
UbitUmarov
173ac39d71 change prebuild files as needed to compile and run under dotnet 6.0 2022-10-02 11:09:27 +01:00
UbitUmarov
5ea28ff530 a few more changes to console; revert a change possible only needed on future .net, at lest we did live without it till now (for real now) 2022-09-30 11:47:44 +01:00
UbitUmarov
03a4287658 a few more changes to console; revert a change possible only needed on future .net, at lest we did live without it till now 2022-09-30 11:46:14 +01:00
UbitUmarov
506d8a5f74 update prebuild 2022-09-25 20:43:27 +01:00
UbitUmarov
66113831dd mantis 9028: check for for a null (should not be needed) 2022-09-25 15:41:56 +01:00
UbitUmarov
5ef7878613 cosmetics 2022-09-24 17:14:46 +01:00
UbitUmarov
8fd4781c02 fix llcreatelink test 2022-09-23 23:33:48 +01:00
UbitUmarov
e3091033c0 llcreatelink permission must be granted by owner 2022-09-23 20:26:56 +01:00
UbitUmarov
88f4e5eed9 do not let *createlink run on attachments or link nonmod objects 2022-09-23 19:26:38 +01:00
UbitUmarov
58f20c6d6e replace obsolete code 2022-09-20 21:40:56 +01:00
UbitUmarov
31fa8b45df minor cleanup 2022-09-20 21:32:10 +01:00
UbitUmarov
086fcc7ff7 mantis 9025: reduce latency a bit 2022-09-18 20:38:36 +01:00
UbitUmarov
b4c057c80c cosmetics 2022-09-18 14:07:53 +01:00
UbitUmarov
87ba2d7b43 a few changes to local console; add pooling of Console.KeyAvailable instead of waiting on keyread, that has treading issues. Thanks ALicia for some ideas on this 2022-09-18 05:21:07 +01:00
UbitUmarov
0505fd54e4 simplify CleanString a bit more 2022-09-14 18:41:13 +01:00
UbitUmarov
772cce51b6 avoid a future dotnet bug they will not fix 2022-09-13 22:52:09 +01:00
UbitUmarov
1d7acb7bcb avoid a null ref 2022-08-30 02:52:58 +01:00
UbitUmarov
91b76da1e2 a few more useless to unsafe sections 2022-08-29 19:42:21 +01:00
UbitUmarov
817e2bbd71 scripts httprequest: try to make a redir to a server local uri work 2022-08-29 03:31:09 +01:00
UbitUmarov
91435dff8b oooops missed one pointer ++ 2022-08-29 00:40:53 +01:00
UbitUmarov
a8baeae468 a few more useless changes 2022-08-29 00:31:33 +01:00
UbitUmarov
9b0d8d13bf update libomv 2022-08-29 00:28:44 +01:00
UbitUmarov
ed1648e931 a few more changes on udp zeroencoder 2022-08-28 05:33:07 +01:00
UbitUmarov
348920ebe7 a few changes on zeroencoder 2022-08-28 03:29:40 +01:00
UbitUmarov
f9a420f038 a bit more unsafe terseupdates 2022-08-28 01:49:28 +01:00
UbitUmarov
aab6c2d4ee update libomv 2022-08-28 01:45:11 +01:00
Ubit Umarov
e5642aa58e Update msbuild48.yml 2022-08-27 04:16:52 +01:00
Ubit Umarov
3cbf062dd3 Update msbuild48.yml 2022-08-27 04:07:39 +01:00
Ubit Umarov
3086415d98 Update msbuild48.yml 2022-08-26 21:41:06 +01:00
UbitUmarov
97cabd1574 default to no asset (uuidZero) on new inventory items creation with no provided data 2022-08-26 21:38:52 +01:00
Ubit Umarov
db174946d9 Update msbuild48.yml 2022-08-26 16:36:45 +01:00
Ubit Umarov
428d230203 Update msbuild48.yml
only build ion *cs file changes
2022-08-26 16:23:28 +01:00
UbitUmarov
d12080d65a a few few ns 2022-08-25 21:54:37 +01:00
Ubit Umarov
5d4903327e Update msbuild48.yml 2022-08-25 05:52:53 +01:00
UbitUmarov
1614785729 remove old hg file 2022-08-25 05:40:31 +01:00
UbitUmarov
f9e03009e4 Merge branch 'master' of https://github.com/opensim/opensim 2022-08-25 03:19:11 +01:00
Ubit Umarov
e745693bb9 Update msbuild48.yml
incluce license.txt on lastbuild
2022-08-25 03:04:22 +01:00
UbitUmarov
643372146f Merge branch 'master' of https://github.com/opensim/opensim 2022-08-25 02:34:37 +01:00
Ubit Umarov
b03765288d Update msbuild48.yml 2022-08-25 02:32:05 +01:00
Ubit Umarov
edc90fd434 Update msbuild48.yml
Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml

Update msbuild48.yml
2022-08-25 02:32:02 +01:00
Ubit Umarov
bb3735f941 again
Update msbuild48.yml

try again
Update msbuild48.yml

try add a github last build artifact
Update msbuild48.yml

fix git action solution name
Create msbuild48.yml

add github test action
2022-08-25 02:31:37 +01:00
Ubit Umarov
ed8b205b9f Update msbuild48.yml 2022-08-25 02:16:52 +01:00
Ubit Umarov
d7dd655ff9 Update msbuild48.yml 2022-08-25 02:12:44 +01:00
Ubit Umarov
99b87a2d4e Update msbuild48.yml 2022-08-25 02:11:55 +01:00
Ubit Umarov
c83680a20a Update msbuild48.yml 2022-08-25 02:04:43 +01:00
Ubit Umarov
0c7d637e78 Update msbuild48.yml 2022-08-25 01:31:17 +01:00
Ubit Umarov
09bcd93637 Update msbuild48.yml 2022-08-25 01:22:43 +01:00
Ubit Umarov
d00dd1b4f9 Update msbuild48.yml 2022-08-25 01:11:18 +01:00
Ubit Umarov
d642b2dbc9 Update msbuild48.yml 2022-08-25 01:06:55 +01:00
Ubit Umarov
79ab11343d Update msbuild48.yml 2022-08-25 01:06:33 +01:00
Ubit Umarov
f7ef76c085 Update msbuild48.yml 2022-08-25 00:57:38 +01:00
Ubit Umarov
fc5413d438 Update msbuild48.yml 2022-08-25 00:44:58 +01:00
Ubit Umarov
1cfcb6f6fe Update msbuild48.yml 2022-08-25 00:44:13 +01:00
Ubit Umarov
f9c6b48664 Update msbuild48.yml 2022-08-24 23:23:51 +01:00
Ubit Umarov
3505b9ea9c again 2022-08-24 23:14:26 +01:00
Ubit Umarov
b5a51c767e Update msbuild48.yml
try again
2022-08-24 23:10:52 +01:00
Ubit Umarov
25483d9c61 Update msbuild48.yml
try add a github last build artifact
2022-08-24 23:08:19 +01:00
Ubit Umarov
116a1ecd5f Update msbuild48.yml
fix git action solution name
2022-08-24 21:19:49 +01:00
Ubit Umarov
b063ee1f54 Create msbuild48.yml
add github test action
2022-08-24 21:14:40 +01:00
UbitUmarov
b850efe873 remove obsolete a bit of and unused code 2022-08-24 18:55:07 +01:00
UbitUmarov
36f2172b8f add gitattributes 2022-08-23 22:51:36 +01:00
UbitUmarov
38cb0fd6cf change robust assets contenttype when answer is xml 2022-08-23 22:00:22 +01:00
UbitUmarov
184a2eaf75 update ScriptSyntax 2022-08-23 18:45:01 +01:00
UbitUmarov
d545506efc add a few more parameters to llGetObjectDetails(); add intger log2(uint) 2022-08-23 17:27:02 +01:00
UbitUmarov
1456f43bc3 ubode: change managed/unmanaged contacts shared memory again 2022-08-21 05:00:27 +01:00
UbitUmarov
20c12e195b make a xengine test happier 2022-08-20 19:17:33 +01:00
UbitUmarov
3a201f7e3d terrain height math 2022-08-20 12:53:38 +01:00
UbitUmarov
6be01a8815 missed a file 2022-08-20 00:37:17 +01:00
UbitUmarov
71fedaaafe the extra lines got back, take out 2022-08-20 00:10:50 +01:00
UbitUmarov
eed88fd3c3 define a new default script asset instead of reusing the old one 2022-08-20 00:08:24 +01:00
UbitUmarov
9cf4b5e696 fix Welcome notecard entry on library 2022-08-19 23:36:01 +01:00
UbitUmarov
a8bbde011d put back the Welcome notecard 2022-08-19 23:20:11 +01:00
UbitUmarov
1a06660963 remove extra lines on default script 2022-08-19 23:03:29 +01:00
UbitUmarov
bc7321bdbf somethings we may need, or not 2022-08-19 22:37:53 +01:00
UbitUmarov
0603667627 use shared assets for new empty notecard and defualt script. Grids not using core asset services may need the 2 new ones 2022-08-19 22:26:00 +01:00
UbitUmarov
4727aaa475 show stats with one more decimal place in timing 2022-08-19 15:49:48 +01:00
UbitUmarov
d37bed10c9 ubode things 2022-08-19 14:49:41 +01:00
UbitUmarov
a578bfd2ac ubode: small change on ray/terrain 2022-08-18 00:56:12 +01:00
UbitUmarov
756a5605e9 missing changed file 2022-08-18 00:35:41 +01:00
UbitUmarov
6ab38ab964 CharsSpace no longer in use 2022-08-18 00:32:48 +01:00
UbitUmarov
81193e2a16 abuse of AggressiveInlining 2022-08-18 00:27:17 +01:00
UbitUmarov
6ebcae4885 several changed to ubode rays; remove some test probes not usefull, etc 2022-08-18 00:23:38 +01:00
UbitUmarov
4fae19164d update libomv 2022-08-17 19:53:30 +01:00
UbitUmarov
da7d00f834 oops bug fix 2022-08-15 20:44:13 +01:00
UbitUmarov
f7e7e9c054 ubode things 2022-08-15 19:31:59 +01:00
UbitUmarov
2ba53faa5c ubode: try ot make mono happy again 2022-08-14 20:43:34 +01:00
UbitUmarov
b763428ede ubode: do part of avatar/avatar broadband collision phase in managed code plus cosmetics 2022-08-14 19:05:14 +01:00
UbitUmarov
aad0c3c60e map image service: always try to delete a map tile, before saving a new one; ubode cosmetics that where on disk" 2022-08-14 00:24:27 +01:00
UbitUmarov
7b334bc7d8 main terrain does not need a ode space 2022-08-11 23:17:36 +01:00
UbitUmarov
c241ecd0f8 update ubode unmanaged libs for win32, win64, linnxu 64 and mac ox intel 64b. Thanks Gavin for the mac compile 2022-08-11 18:22:52 +01:00
UbitUmarov
a8932b9beb let viewers pre cache materials, again 2022-08-09 20:19:06 +01:00
UbitUmarov
0f052f775d a few changes to ubode managed/umanaged interface 2022-08-08 23:34:29 +01:00
UbitUmarov
1b928c9fbd a few changes to ubode; update unmanaged for windows and linuxx86-64. Mac and other os need some nice people contribution. As usualy this can be very bad (BSOD even) 2022-08-07 18:20:38 +01:00
UbitUmarov
7a710f09c0 fix llRequestInventoryData lm math 2022-07-19 20:24:54 +01:00
UbitUmarov
a3d517b8f2 mants 9012: update libomv with more buffer len checks. posislbe mono 179 stopped doing the (irritating) array bounds check even in unsafe code?? 2022-07-19 10:27:53 +01:00
UbitUmarov
31689e965e minor cosmetics 2022-07-15 22:23:16 +01:00
UbitUmarov
6c77932d61 mantis 9015 fix silly bug 2022-07-15 15:51:14 +01:00
UbitUmarov
80dc993087 fsassets: only read SecondaryInstance option on per process mmain instances 2022-07-11 20:22:55 +01:00
UbitUmarov
8db18bb54a update libomv 2022-07-05 20:38:01 +01:00
UbitUmarov
37e11f6cab use uuid.IsNotZero is a few more places 2022-07-02 16:33:39 +01:00
UbitUmarov
4665b45a4c ofc, forgot a file 2022-07-02 16:25:08 +01:00
UbitUmarov
91ceb181b5 mantis 9013: add sound to list of assets to save on OAR 2022-07-02 16:22:20 +01:00
UbitUmarov
3261f38fcf fix typo 2022-06-23 19:01:06 +01:00
UbitUmarov
3bdae01b8f remove some garbage 2022-06-23 18:45:33 +01:00
UbitUmarov
799a351e5f minor change on regionReady message 2022-06-23 17:52:32 +01:00
UbitUmarov
4d06a8e841 remove useless class listennersManager 2022-06-21 06:47:31 +01:00
UbitUmarov
e3636de572 .. another 2022-06-21 02:42:45 +01:00
UbitUmarov
858e00d578 still some files missing 2022-06-21 02:40:28 +01:00
UbitUmarov
e6cdb0bd5d some changes needed i wanted later if ever.. well.. 2022-06-21 02:29:39 +01:00
UbitUmarov
16d5d7d7fc direct post listen events on chat, bypassing intermediate storage and timed pooling. ( code still dirty) 2022-06-21 02:18:38 +01:00
UbitUmarov
86dc93ec3b remove confusing UserProfileData.cs (run prebuild) 2022-06-21 00:49:51 +01:00
UbitUmarov
c581658337 do flush all avatar profile props cache 2022-06-21 00:29:50 +01:00
UbitUmarov
6566837f3b use UserProfileProperties instead of obsolete UserProfileData 2022-06-21 00:03:12 +01:00
UbitUmarov
f085d5b3c1 remove 32bit dylibs for macOS, now obsolete as sugested by Gavin (mantis 9010) 2022-06-20 21:35:45 +01:00
UbitUmarov
e6687f3f0a Updated ubODE dylib for macOS (mantis 9010). Thanks Gavin 2022-06-20 21:31:20 +01:00
UbitUmarov
0d594e4c42 a few changes cosmetic changes around OSChatMessage... 2022-06-20 06:49:43 +01:00
UbitUmarov
9af568307e a few changes on chat and dialog from udp/client 2022-06-19 16:03:38 +01:00
UbitUmarov
2d1e5eb5ac use them on lslapi 2022-06-19 13:26:38 +01:00
UbitUmarov
b7d33b41de use them on dialog module 2022-06-19 13:25:06 +01:00
UbitUmarov
90a45494ab add sop getownername so group owned case is handle correctly 2022-06-19 12:48:06 +01:00
UbitUmarov
cfa3487b4f improve lldialog and lltextbox owner processing (still bad) 2022-06-19 12:29:41 +01:00
UbitUmarov
40b9ea6638 uuid notzero checks 2022-06-19 12:28:15 +01:00
UbitUmarov
e37475203b add usermanagement bool GetUserName(UUID uuid, out string FirstName, out string LastName) 2022-06-19 11:47:29 +01:00
UbitUmarov
e08ba5bbd0 do not let llOwnerSay send to a group 2022-06-19 02:22:34 +01:00
UbitUmarov
1128942062 fix listeners count 2022-06-19 01:43:30 +01:00
UbitUmarov
adf818370a mke sending to listeners code a bit more confusing 2022-06-19 01:22:03 +01:00
UbitUmarov
6e1aa77416 oops create listeners active on all paths 2022-06-18 22:57:27 +01:00
UbitUmarov
c972c23d2e try simplify lsl listen code a bit 2022-06-18 22:40:01 +01:00
UbitUmarov
ade2ceb098 simplify lsl CreateLink 2022-06-18 19:52:48 +01:00
UbitUmarov
3d4abfb218 trigger some parcel changed events lost on last commit 2022-06-18 18:04:26 +01:00
UbitUmarov
06f2ec0097 several changes on lslapi like add uuid zero checks, etc 2022-06-18 18:01:50 +01:00
UbitUmarov
77dab36866 do no try to teleport to a long gone avination region on llTeleportHome 2022-06-18 16:16:27 +01:00
UbitUmarov
fa2da18c5f minor lsl changes like direct call DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg, Vector3 sourcePosition) 2022-06-18 16:08:17 +01:00
UbitUmarov
470ab9199c mantis 9008: add extra lock on FSassets initialization, to be sure only one thread does run main spool thread. Add config option 'SecondaryInstance' to do the same in multiple process instances cases. If there are more than one spool thread there may be file assess collisions that may cause robust crash and or loss of assets. I could not test this. Please to so, and report on mantis 9008, Thanks. 2022-06-09 14:42:41 +01:00
UbitUmarov
9aeb52e3d1 mantis 8907: fix *Min names 2022-06-03 22:00:39 +01:00
UbitUmarov
53270bbaee update libomv with minor changes 2022-06-02 02:29:10 +01:00
UbitUmarov
d6760ec0ef a few changes for mantis 9006 attachment moveToTarget() 2022-05-27 16:04:38 +01:00
UbitUmarov
26d49f3af1 mantis 8996. a few minor changes to llCastRay, but also add a missing sqrt(), that does have large impact on the performance issue, (if len < region size). Main unmanaged lib still needs improvement 2022-05-24 18:30:44 +01:00
UbitUmarov
68cb17cb2f oops, use the right file 2022-05-22 23:42:57 +01:00
UbitUmarov
bbdcaf7508 update Prebuild.exe with fix on its option excludir 2022-05-22 23:37:48 +01:00
UbitUmarov
33f748a978 can be a tiny bit more complex 2022-05-22 19:37:25 +01:00
UbitUmarov
184de0bbb8 osGetPrimitiveParams(key prim, list rules) also silent refused if owner of script and prim has no modify rights on that prim 2022-05-22 19:15:19 +01:00
UbitUmarov
fef8743548 osSetPrimitiveParams(key prim, list rules) silent refused if owner of script and prim has no modify rights on that prim 2022-05-22 19:04:49 +01:00
UbitUmarov
fc8dbb11d9 clean some more useless casts 2022-05-22 17:23:54 +01:00
UbitUmarov
3160ad0cd5 fix last patch 2022-05-22 17:11:15 +01:00
Vincent Sylvester
7168fa0031 llGet projector info
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-05-22 16:59:57 +01:00
UbitUmarov
398fe1ffe6 change again, on disable leave parameters as they where; add values check to osSetProjectionParams 2022-05-22 16:54:19 +01:00
UbitUmarov
c843cc2b16 minor change... 2022-05-22 16:07:45 +01:00
lickx
7809eb5ba0 Support PRIM_PROJECTOR
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-05-22 15:13:47 +01:00
UbitUmarov
bac942562a mantis 8998: guard potencial null ref 2022-05-15 04:50:00 +01:00
UbitUmarov
c03505dfdf update libomv,, fixing a potencial issue on osdjson 2022-05-14 23:19:20 +01:00
UbitUmarov
fa02512c20 change handling of option ExportSupported again 2022-05-13 01:50:24 +01:00
UbitUmarov
ed120a572d add missing changes for hide title option 2022-05-12 02:23:41 +01:00
UbitUmarov
61085cc25e add proper way for viewers to request mute of collision sounds by setting flag 0x80 on agent update Flags (const U8 AU_FLAGS_MUTECOLLISIONS = 0x80;). Their current method of comparing sound UUIDS is just BROKEN, even at SL. 2022-05-10 14:14:33 +01:00
UbitUmarov
f1f6c2094e suport avatar hide title option 2022-05-10 04:21:34 +01:00
UbitUmarov
c5f1b09cbe minor retouch on collision sounds 2022-05-10 00:06:20 +01:00
UbitUmarov
baf6917a46 fix parse type of ExportSupported option 2022-05-06 01:38:42 +01:00
UbitUmarov
68539cf3e6 can improve a tiny bit, thanks Plugh 2022-05-04 19:59:30 +01:00
UbitUmarov
df03e64f5c try improve lsl list compare with null, hopefuly not looping for ever 2022-05-04 19:24:16 +01:00
UbitUmarov
a1e32e37da mantis 8995: try work around the issue 2022-05-03 06:08:38 +01:00
UbitUmarov
4f42bd150d bug fix: do not let viewer agente update change rotation of sitting avatar (timing issue) 2022-05-02 17:27:05 +01:00
UbitUmarov
6a54992bb9 mantis 8994: fix silly bug on last commit. Well change it all a bit 2022-05-02 14:48:44 +01:00
UbitUmarov
a5e3d11ed8 in griduserservice to into replace most Parse by TryParse 2022-05-01 20:17:04 +01:00
UbitUmarov
a7a40af88c update libraries ubode for win32, win64 and linux64. Cannot compile for linux32 or Mac. Support for those platforms will be dropped u nless someone can compile for them and provide us the files. Sources are at our opensim-libs repo, folder ubODE-OpenSim. 2022-05-01 02:55:33 +01:00
UbitUmarov
5f6ca594f2 fix ubode.dll config file for mono and exec mode on the new libs 2022-05-01 02:07:36 +01:00
UbitUmarov
7ed4fb978c let ubode use own unmanaged libraries, so they can change without impact on old ode module. Add those libraries, for now just copies of the ode ones 2022-05-01 01:47:29 +01:00
UbitUmarov
4f7b293c5e add comandline option excluddir to Prebuild, to make easier to use older xml files that did not excluse folders like obj from the project 2022-04-30 14:57:51 +01:00
UbitUmarov
e0a33297dd change sp delayed stop 2022-04-26 03:05:53 +01:00
UbitUmarov
d39cf47bb8 change again sp update throttle 2022-04-26 00:20:35 +01:00
UbitUmarov
c9c9b57c37 add missing initialization 2022-04-25 00:13:21 +01:00
UbitUmarov
1e5881386e fix agent_id on FetchLibDesc.. this is just a formal fix, viewers seem to just ignore it. 2022-04-23 23:27:47 +01:00
UbitUmarov
250a2605a6 minor change on uuid hash 2022-04-23 20:58:57 +01:00
UbitUmarov
d1b5e7a981 some cleaup 2022-04-23 16:41:18 +01:00
UbitUmarov
43a184477a enable the new caps by default. Should have no side effects 2022-04-23 14:53:03 +01:00
UbitUmarov
c57d56773a let default sun be on library since moon is 2022-04-23 04:28:04 +01:00
UbitUmarov
7acc3096f4 now the first section of Libraries.xml should only contain entry RootVersion to define the Opensim library version. THis should eb incremented when there are changes on ny library entry 2022-04-23 04:04:43 +01:00
UbitUmarov
8b6f9bfa0a fix missing ! in getassetsModule, several changes on libraryService,
folder opensimlibrary as no meaning, all are child of one with that name
already"
2022-04-23 00:33:42 +01:00
UbitUmarov
6984902610 don't lose version... 2022-04-22 23:10:12 +01:00
UbitUmarov
a6172a70d3 change Libray version 2022-04-22 22:43:54 +01:00
UbitUmarov
adc9318bee missing files 2022-04-22 20:20:26 +01:00
UbitUmarov
0bf394efde a few changes 2022-04-22 20:06:45 +01:00
UbitUmarov
0138a43d3c add back cap FetchLib2 and add cap FetchLibDescendents2. Still disabled, Most viewers do not support them. Alchemy is working on it 2022-04-22 19:49:16 +01:00
UbitUmarov
71f856bfa8 put back updated FetchLib2 cap. Still no viewer uses it, disabled 2022-04-22 16:16:04 +01:00
UbitUmarov
7a10cd9959 minor changes to inventory library, Thx Tampa 2022-04-21 16:57:14 +01:00
UbitUmarov
5289b5c6bf minor change on collision account 2022-04-21 01:12:26 +01:00
UbitUmarov
2928daff61 strip out strings from ode for linux libs 2022-04-21 00:56:43 +01:00
UbitUmarov
e5af49a161 some cleanup 2022-04-21 00:22:32 +01:00
UbitUmarov
3c5d148cac retouch sp terseupdates throttle again 2022-04-20 15:45:10 +01:00
UbitUmarov
04dafe4313 some cleaup; simplify some animations code 2022-04-20 14:12:45 +01:00
UbitUmarov
c7253d8bf9 send all animations to self again... 2022-04-20 01:37:25 +01:00
UbitUmarov
d919441fb2 oops lost a tiny bit 2022-04-18 23:12:56 +01:00
UbitUmarov
578c0f36ce more cosmetics 2022-04-18 23:08:56 +01:00
UbitUmarov
7c3ad0699f remove unused datasnapshoot unused option 2022-04-17 22:35:47 +01:00
UbitUmarov
d9fb48cdcf ok add 2 much, so now the rest 2022-04-17 22:26:41 +01:00
UbitUmarov
fdf79a3775 missing c&p 2022-04-17 22:16:13 +01:00
UbitUmarov
208a9af53c cosmetics 2022-04-17 22:13:33 +01:00
UbitUmarov
af658625ed fix a test 2022-04-17 02:56:31 +01:00
UbitUmarov
d45f739ca4 ofc broke fast run, again... 2022-04-17 02:39:51 +01:00
UbitUmarov
5452dacee6 cosmetics 2022-04-17 02:26:26 +01:00
UbitUmarov
aa862fa658 current FS sends a flood of AGENT_CONTROL_FINISH_ANIM 2022-04-16 18:13:34 +01:00
UbitUmarov
d785dc50e6 more variations on same thing 2022-04-16 17:35:00 +01:00
UbitUmarov
a4fa491ea8 add old sp.AddNewMovement with one argument, for possible external code 2022-04-16 13:42:52 +01:00
UbitUmarov
dea7b7b1a7 remove effect of avatar mass, so all jump similar height 2022-04-16 13:41:31 +01:00
UbitUmarov
1bf5ccedec need to process all mv flags for now 2022-04-16 03:30:46 +01:00
UbitUmarov
b8e0aaa7b3 scale bullet avatar jump to more or less match ubOde 2022-04-16 02:51:25 +01:00
UbitUmarov
a49c08dfb3 viewers control end of some landing animations. Broken on current fs 2022-04-16 02:19:40 +01:00
UbitUmarov
72b5ae809c remove debug log messages 2022-04-15 23:58:38 +01:00
UbitUmarov
3bfc2a71b0 ubode collision with objects was disabling push freemove when standing on a prim 2022-04-15 23:51:45 +01:00
UbitUmarov
a7e189a53d missed one line 2022-04-15 22:23:48 +01:00
UbitUmarov
3e734c5f57 will pre-jump now work ( will anythign work ?) disable viewers (fs) quickjump to check 2022-04-15 22:21:35 +01:00
UbitUmarov
329440695c missing file and a bit more wiring 2022-04-15 21:52:29 +01:00
UbitUmarov
6d701b6759 add AvatarJump to phsycis engines. This is just a push in Z direction, Still needs scaling so engines to match. This new scaling is needed so does not impact old push ones 2022-04-15 21:47:38 +01:00
UbitUmarov
91167c47ea add to llGetParcelDetails parameter 65 to get land claim date (unix time) 2022-04-15 19:51:42 +01:00
UbitUmarov
fba442097b add some more things to llGetParcelDetails. Thanks Tampa for some initial code. 2022-04-15 17:57:40 +01:00
UbitUmarov
ac1cbf28bd oops 2022-04-15 02:47:57 +01:00
UbitUmarov
7e40be3bcb missed another broken test 2022-04-15 02:41:16 +01:00
UbitUmarov
e8395daea0 missed another spot on the test 2022-04-15 02:25:59 +01:00
UbitUmarov
b854acf9ed fix a test 2022-04-15 02:10:11 +01:00
UbitUmarov
d3ec735283 clamp/limit a few things; a few cosmetics on animation control 2022-04-15 02:01:54 +01:00
UbitUmarov
d0d71317e0 fix a http SRestObjReq log message, thx Tampa (also a libomv update) 2022-04-14 22:28:57 +01:00
UbitUmarov
37ab7afed9 update libomv adding NotEqual to vectors and quats; more cosmtics on ubode 2022-04-13 23:57:20 +01:00
UbitUmarov
772b33bfef cosmetics on ubode character code 2022-04-13 19:38:57 +01:00
UbitUmarov
d7a391efbb cosmetics on ubode character code 2022-04-13 19:36:38 +01:00
UbitUmarov
76165fe054 changes on converting agent movement flags to physics target velocity. 2022-04-13 17:22:18 +01:00
UbitUmarov
b5fa51d05b a few more 'useless changes' like telling compiler to do inlining 2022-04-12 23:05:26 +01:00
UbitUmarov
1a183339f7 make parcel size unit a global constant, plus several 'useless changes' 2022-04-12 15:31:56 +01:00
UbitUmarov
40a6c60932 minor code simplification on landobject 2022-04-12 03:51:39 +01:00
UbitUmarov
d5dca5972d if osParcelSubdivide does match the entire original parcel, just do nothing 2022-04-12 01:16:41 +01:00
UbitUmarov
eee0a1be36 fix description of default sun texture 2022-04-11 12:43:25 +01:00
UbitUmarov
1cc6a52e87 add another eep texture tp default assets 2022-04-11 02:06:02 +01:00
UbitUmarov
883c857ae0 a few changes to simulatorFeatures cap 2022-04-09 16:49:57 +01:00
UbitUmarov
6a404c98de a few changes to simulatorFeatures cap 2022-04-09 15:57:51 +01:00
UbitUmarov
aed7810d2a fs sends a useless texture alos ok skirt, when using universal 2022-04-09 02:58:58 +01:00
Robert Adams
6aba7135da Default ProjectNode.Files to be empty list. Fixes exception on NAnt builds.
Updated Prebuild.exe
2022-04-06 13:48:53 -04:00
Robert Adams
bc86a0f286 Update Prebuild/src/Prebuild.csproj to be recent library versions
and framework 4.8.
2022-04-06 10:56:47 -04:00
Robert Adams
6d21e45ce1 Add 'forceFrameworkVersion' parameter to Project node which overrides
the overrides passed down by the command line or the Solution node.
This specifies that this particular Project requires the given framework.
2022-04-06 10:54:56 -04:00
UbitUmarov
fa6049f32d fix runprebuild48.sh +x again 2022-04-06 02:21:35 +01:00
UbitUmarov
28f99ce3b5 a few mostly cosmetics to map connectors and handlers. the .../map url will also remove map if data field is not present, ../removemap is just pollution in urls space, if fact both remove map are useless, since they are api for regions and regions can not do it, keeping just because.. 2022-04-03 16:01:27 +01:00
UbitUmarov
b140e9d2e9 seems null strings may reach Parse*UniversalUserIdentifier 2022-04-02 16:47:45 +01:00
UbitUmarov
44e0d238ec remove legacy Clouds module no longer supported by most viewers 2022-04-02 16:20:15 +01:00
UbitUmarov
4ebc639669 terrain: change how initial all not in view patchs are send 2022-04-02 01:41:08 +01:00
UbitUmarov
bea0f4d18b terrain bug fix: setfalse does not mean write true 2022-04-01 22:58:30 +01:00
UbitUmarov
c3332713d0 remove TRACE define from release mode 2022-03-31 15:16:52 +01:00
UbitUmarov
bf6885607e add parameters frameworkVersion and forceFrameworkVersion to the prebuild solution. First sets the version if not defined on projects, alternatively the second does override those. The comandline can still override all. Use command line override to compile for 4.8 so remove 4.4 xml and simplify main xml, still defaulting to 4.6 2022-03-30 18:44:54 +01:00
UbitUmarov
0b19ce979c let prebuild add framework version conditional define automaticly 2022-03-30 16:27:30 +01:00
UbitUmarov
6073d1a9c3 add TLS 1.3 to OSHttpListener default ssl protocols if compiling in .net4.8 2022-03-30 15:13:20 +01:00
UbitUmarov
a68b8acba3 add compiler define NET48 to the .net4.8 xml 2022-03-30 15:02:18 +01:00
UbitUmarov
667a18161b some cosmetics, like npcs down eat terrain 2022-03-30 01:15:31 +01:00
UbitUmarov
3f30f17187 add TerrainTaintsArray, a specialized BitArray for terrain taints. Start using it 2022-03-29 22:18:28 +01:00
UbitUmarov
c11827e1e2 add a bit more info to robust grid_info replies and do cache them 2022-03-29 20:48:02 +01:00
UbitUmarov
1df00ca5cc limit osTerrainFlush calls to one per minute with silent ignore 2022-03-29 16:36:46 +01:00
UbitUmarov
fd61be4147 simplify uuid FromDB a bit. Note only 32 or 36 chars formats accepted if string. File is wrongly named DCGuids, since it is only about UUID 2022-03-28 17:40:59 +01:00
UbitUmarov
497262e452 also revert ParseUniversalUserIdentifier to its original form, possivle making a useless Substring 2022-03-27 23:51:33 +01:00
UbitUmarov
68c75cc343 make uuid from string parsing also look to end of string only acceptions spaces, like guid does. This needed waste for bad HG UUI detection code code, all over the place 2022-03-27 23:43:10 +01:00
UbitUmarov
fd7d0128fe other spot 2022-03-27 22:22:44 +01:00
UbitUmarov
c49dcc2fe6 mantis 8985, a forgotten commit 2022-03-27 21:57:37 +01:00
UbitUmarov
6155c202a7 minor cosmetics 2022-03-26 04:58:14 +00:00
UbitUmarov
30b7bb7d45 minor pointers changes 2022-03-26 03:51:42 +00:00
UbitUmarov
e6001fb703 put back yeng mvv command 2022-03-25 18:50:01 +00:00
UbitUmarov
8579cc0d20 mantis 8936: make yeng comand work only on selected (or first that did load, like other comands) region. Add option 'allregions' to some. With this option those comands run on all regions. Do 'yeng help' to list comands. Ofc this assuming i made no typroe/bug ;) 2022-03-25 18:38:04 +00:00
UbitUmarov
21204cb1f5 simplify some console comands a bit 2022-03-25 17:04:01 +00:00
UbitUmarov
b7ed5f109e prebuild for .net6, disable stupid ms imitation of java hotspots 2022-03-23 19:23:08 +00:00
UbitUmarov
247cb70595 a few changes to .net6 prebuild, still needs more work.. 2022-03-23 02:06:01 +00:00
UbitUmarov
22e0c02d05 a few changes to .net6 prebuild, still needs more work.. 2022-03-23 01:04:55 +00:00
UbitUmarov
f36c75c050 add Prebuild improved by MisterBlue 2022-03-22 20:06:02 +00:00
UbitUmarov
63e12c004f Merge branch 'prebuildnet6' 2022-03-22 20:00:38 +00:00
UbitUmarov
1eb74cd6be add content-type to grid info 2022-03-22 19:55:34 +00:00
UbitUmarov
e6059a7ca1 add some headers to llemail emails; cosmetics 2022-03-22 03:09:34 +00:00
UbitUmarov
aba0269fe2 update libomv with changes on UUID parsing from string 2022-03-20 16:19:37 +00:00
UbitUmarov
9bd8e45b30 remove some more of obsolete ninha joints code 2022-03-19 01:06:44 +00:00
UbitUmarov
0b205b91a6 more uuid == 2022-03-18 23:18:38 +00:00
UbitUmarov
21c02fca19 more uuid == 2022-03-18 23:09:53 +00:00
UbitUmarov
7bf6e2e543 more uuid == 2022-03-18 22:48:24 +00:00
UbitUmarov
94f291fd99 missing changes 2022-03-18 19:28:17 +00:00
UbitUmarov
93f292ca39 Emailmodule. Add throttles by sender ownerID, prim or smpt target address and smpt emails per day 2022-03-18 19:24:52 +00:00
UbitUmarov
d06efefb48 Emailmodule. Receive mailbox dependis on prim having email event on scripts; send via smpt or to external prims are now options. The ini section name smtp is not wrong" 2022-03-18 16:15:32 +00:00
UbitUmarov
a2f7a3e34a oops... replace EmailModule with EmailModule2 2022-03-18 13:19:36 +00:00
UbitUmarov
21770a83c1 replace EmailModule with EmailModule2. Note current use of dlls from nuget mailkit2.9.0, mimekit2.9.2 and Portable.BouncyCastle1.9.0 without all nuget useless crap 2022-03-18 13:18:00 +00:00
UbitUmarov
7a67935802 EmailModule2 a few more changes 2022-03-18 04:26:28 +00:00
UbitUmarov
1097145e08 a few more 2022-03-18 02:29:00 +00:00
UbitUmarov
846d2df245 replace util.clip by utils.clamp (from libomv), and a few more cosmetics 2022-03-18 02:20:40 +00:00
UbitUmarov
811b2de565 EmailModule2 (lsl email), support selfsigned server certs, use mailkit email address validation, etc 2022-03-18 00:15:08 +00:00
UbitUmarov
85c6d52e6a a few changes on textures uuid compare etc 2022-03-17 03:10:24 +00:00
UbitUmarov
d5ca0db294 missing file 2022-03-16 23:19:38 +00:00
UbitUmarov
1058fd6a07 minor clean 2022-03-16 23:15:02 +00:00
UbitUmarov
7b34b23d73 entityTransfer is a nonshared module, so lets use its scene, sp ones should be the same, or something is bad 2022-03-16 22:54:26 +00:00
UbitUmarov
42e37d2087 some changes on avatarappearance 2022-03-16 22:27:34 +00:00
UbitUmarov
3d705fefa2 use osutf8 on some http headers parse 2022-03-16 15:56:00 +00:00
UbitUmarov
bfa620ed09 a few changes in presence sit 2022-03-16 15:15:22 +00:00
UbitUmarov
1c45e039eb a few changes in regionsinview and related code 2022-03-16 12:04:00 +00:00
UbitUmarov
f01301392a increase BannedRegionCache expire 2022-03-16 11:12:21 +00:00
UbitUmarov
c044e4d458 change entity transfer BannedRegionCache 2022-03-16 10:33:23 +00:00
UbitUmarov
9528c3631c fix typo, thx Tampa 2022-03-16 00:06:35 +00:00
UbitUmarov
cec838425b mantis 8957: update libomv avoiding null refs on pcampbot appearance 2022-03-15 16:39:17 +00:00
UbitUmarov
15efd8f673 mantis 8976: add a few things to gitignore 2022-03-15 15:56:10 +00:00
UbitUmarov
073098e1b6 a few more changes on universal id 2022-03-15 02:03:06 +00:00
UbitUmarov
a46f0b4fd4 a few changes on universal id 2022-03-15 01:41:49 +00:00
UbitUmarov
7c9099de36 reduce useless log 2022-03-15 01:22:47 +00:00
UbitUmarov
5e1306ea7c cosmetics: indent etc 2022-03-15 01:15:28 +00:00
UbitUmarov
5f687b71ec s few changes to Parse universal id 2022-03-15 00:49:32 +00:00
UbitUmarov
476ea2b51d reduce number of useless strings on get displaynames cap 2022-03-15 00:44:33 +00:00
UbitUmarov
f14055b6a8 minor changes on displaynames cap 2022-03-14 23:45:08 +00:00
UbitUmarov
ad17ce0b51 CameraData is a bit too large to be a struct 2022-03-14 21:39:21 +00:00
UbitUmarov
5728d634b5 cosmetics 2022-03-14 21:12:53 +00:00
UbitUmarov
e1de79dad2 some more == UUID.Zero 2022-03-14 20:47:10 +00:00
UbitUmarov
f5d132175b minor typo 2022-03-14 20:45:49 +00:00
UbitUmarov
2a196190d9 ..Equals() is also not good 2022-03-14 20:21:18 +00:00
UbitUmarov
56c497adf5 ..Equals(String.Empty) is also not good 2022-03-14 20:11:54 +00:00
UbitUmarov
3dcb77c7b7 more source indentation fix 2022-03-14 18:50:53 +00:00
UbitUmarov
3631018a7e more source indentation fix 2022-03-14 18:43:13 +00:00
UbitUmarov
9b85bbd69a look more tabs ans things.. 2022-03-13 13:32:51 +00:00
Vincent Sylvester
13dbbc2683 Remove tabs, indent code properly
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-03-13 13:15:05 +00:00
UbitUmarov
e1ce7408da a few more use array.Empty<byte> 2022-03-13 02:05:56 +00:00
UbitUmarov
e043d8a2eb use array.Empty<byte> 2022-03-12 15:21:24 +00:00
UbitUmarov
5ffa1801d8 avoid a mulithread dictionary values change issue 2022-03-10 14:10:53 +00:00
UbitUmarov
2637656176 almost cosmetics 2022-03-10 13:55:15 +00:00
UbitUmarov
85e7add566 btw take off the extra comma at end.. 2022-03-10 13:37:48 +00:00
Vincent Sylvester
0832d5eefd Write the comma
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-03-10 13:11:53 +00:00
UbitUmarov
60e67e5320 yengine, only send out of heap errors to owner and wigotu stacktrace 2022-03-09 22:03:55 +00:00
UbitUmarov
0e5abf6bc1 a few changes on yengine heap control 2022-03-09 21:04:47 +00:00
UbitUmarov
aa164b1bcb on lsl list size estimation, consider each entry pointer size, plus each char on strings is 2 bytes 2022-03-09 21:01:47 +00:00
UbitUmarov
56892d1bc6 typos 2022-03-09 17:59:11 +00:00
UbitUmarov
48160db046 typos 2022-03-09 16:36:29 +00:00
UbitUmarov
5e9b3b42b2 minor cleanup 2022-03-09 03:55:55 +00:00
UbitUmarov
3f9ffcdf8f update a dll 2022-03-09 03:48:49 +00:00
UbitUmarov
35f04b0def minor cleanup 2022-03-09 03:31:55 +00:00
UbitUmarov
52fdab0c67 add a scripts emailmodule2 that uses MailKit.dll to send email using recent tls. This will replace current, once tested. Note that MailKit and Minekit versions are old to avoid use of ...unsafe.dll. This still will not work with gmail after May22, since only uses simple user:password login 2022-03-08 23:46:35 +00:00
UbitUmarov
22e9f41502 move to version 0.9.2.2 2022-03-01 16:00:52 +00:00
UbitUmarov
11cadf7a9f mantis 6020: change failed compressed message 2022-03-01 11:04:14 +00:00
UbitUmarov
fa45b6cf54 replace utf8 bom encoding by utf8 (no signature) 2022-02-26 13:48:11 +00:00
UbitUmarov
bd3db9eeeb normalize tab as 4spaces 2022-02-26 13:22:42 +00:00
Robert Adams
ad220821c5 Add Project/Configuration/Option/OutDir since VS and Mono seem to have
different destination directory rules.
Pass all set Option parameters through to the csproj.
2022-02-25 15:02:39 -08:00
Robert Adams
35bff141b0 Fix typo in bin/config-include/StandaloneCommon.ini.example which caused INI read errors. 2022-02-24 19:27:50 -08:00
Robert Adams
f069d47370 Fix line endings. 2022-02-24 19:23:33 -08:00
Robert Adams
2e19e41b78 Update prebuild.exe to generate .csproj files for frameworkVersion
equal to "netstandard2_0", "net5_0", and "net6_0".
Add sections for PackageReference and ProjectReference to add inter-project
   connections as well as NuGet packages.
Existing generation of .csproj files for "framework4.*" remains unchanged.
Working for simple projects with *References.
2022-02-24 19:16:33 -08:00
UbitUmarov
9a897683f4 avoid null ref 2022-02-23 13:38:13 +00:00
UbitUmarov
b6874f50ff fix a log message 2022-02-20 04:25:38 +00:00
UbitUmarov
5beffddf2a minor changes on profiles module; add some .trim() to create user avatar
names
2022-02-17 10:54:28 +00:00
UbitUmarov
fd993addc0 udate libomv with changed OSDJson serializer 2022-02-13 21:34:19 +00:00
UbitUmarov
6a85d8fafc update libomv 2022-02-12 10:52:15 +00:00
UbitUmarov
0d48c292e9 update libomv; cosmetics 2022-02-12 08:25:50 +00:00
UbitUmarov
6a0f29f182 mantis 8972: avoid null ref plus cosmetics 2022-02-10 16:37:37 +00:00
UbitUmarov
9d390564a9 avoid a possible null ref; cosmetics 2022-02-09 23:08:58 +00:00
UbitUmarov
38d3346a6a save ns using a cached response on materials 2022-02-09 22:39:53 +00:00
UbitUmarov
aa7ef54d6b bug fix: do not duplicate received ims on several regions per instance case 2022-02-09 21:32:10 +00:00
UbitUmarov
f4ae8d90ef a few changes to materials put cap 2022-02-09 20:30:19 +00:00
Michael Schlenker
9d9a6f0fe8 Add aarch64 openjpeg libs Add libBulletSim and openjpeg for aarch64 aarch64 is armv8 for monos cpu type
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2022-02-08 00:13:22 +00:00
UbitUmarov
57e8cac8cb cosmetics 2022-02-07 20:11:09 +00:00
UbitUmarov
d20dbcb74a cosmetics 2022-02-07 19:37:27 +00:00
UbitUmarov
16b106821d cosmetics 2022-02-07 18:57:56 +00:00
UbitUmarov
771bb0a1a0 mantis 8967: try fix estate regions url for ssl 2022-02-07 18:56:29 +00:00
UbitUmarov
2c898e359b mantis 8966: add SllMode=None also to robust mysql connectionstring example. Change text a bit as sugested. Thanks 2022-02-04 18:32:45 +00:00
UbitUmarov
17b5123f21 cosmetics 2022-02-02 03:45:11 +00:00
UbitUmarov
a85f1792df avid some spurius space on avatar uui 2022-02-02 01:52:33 +00:00
UbitUmarov
e011fb773e cosmetics 2022-01-31 21:30:40 +00:00
UbitUmarov
fc8c08ec8a cosmetics 2022-01-29 18:28:33 +00:00
UbitUmarov
6d595dbccd a few more changes to hg im 2022-01-29 16:31:45 +00:00
UbitUmarov
ca86e47ec3 offline modudle v2 do flag offline ims 2022-01-29 00:02:20 +00:00
UbitUmarov
1c84dee495 a few changes to HGInstantMessageService 2022-01-28 22:35:56 +00:00
UbitUmarov
f997d77075 on HG landmark teleport, check gatekeeper first 2022-01-28 16:25:31 +00:00
UbitUmarov
63b7e2ca15 fix a outdated condition 2022-01-26 21:09:27 +00:00
UbitUmarov
58b114647f alert user if Take copy fails because no permission to take copy. This is needed because HG spargetti code makes it hard to do it right 2022-01-26 20:57:19 +00:00
UbitUmarov
e2c9591fa9 do export landmarks even if OutboundPermission is false 2022-01-26 20:40:49 +00:00
UbitUmarov
dea5b83e8b also revert osMessageAttachments time penalty. It does dispturb current existent action games 2022-01-22 21:27:36 +00:00
UbitUmarov
5c0bd1c279 ubOdeMeshmerizer: try log a bit more information in case of fail to decode a mesh asset header 2022-01-19 00:32:14 +00:00
UbitUmarov
8136f569cf actually rename runprebuild19.* as runprebuild48,* since selection of .net framework 4.8 is more relevant than select VS on windows. (the file ..48.sh may need +x mode added 2022-01-16 16:46:46 +00:00
UbitUmarov
537de0c592 update runprebuild19.bat to find vs2022 2022-01-16 14:46:58 +00:00
UbitUmarov
ddc311910f remove some more log of stackframe on error 2022-01-15 21:54:12 +00:00
UbitUmarov
fbbcc1edd7 == string.Empty is .Lenght == 0 2022-01-13 20:31:52 +00:00
UbitUmarov
6595e3ae26 cosmetics 2022-01-13 13:59:41 +00:00
UbitUmarov
c5f5fa0d2e update libomv with a fix on UUID XML serielization; some changes on low level lludp decode 2022-01-12 04:57:36 +00:00
UbitUmarov
53d7115ee1 uuid does have gethashcode 2022-01-10 21:31:15 +00:00
UbitUmarov
fe6bcd79f5 proper bypass lludp header extra bytes, even if not seen so far 2022-01-10 21:21:23 +00:00
UbitUmarov
9b33ef9c8c a few more changes on vectors etc 2022-01-10 02:21:17 +00:00
UbitUmarov
7d78f62d49 fix some pgsql parameters ( needs checking ) 2022-01-10 01:20:46 +00:00
UbitUmarov
60914c6210 update libomv with a bug fix 2022-01-10 00:08:41 +00:00
UbitUmarov
dd846ffc6c update libomv with vector2 and 3 IsZero() 2022-01-09 23:52:42 +00:00
UbitUmarov
94adb4f86e update libomv with a few changes on uuid 2022-01-09 21:50:14 +00:00
UbitUmarov
70a788170d undo a small change that was not suposed to happen now 2022-01-09 03:36:09 +00:00
UbitUmarov
1545b73e64 remove a spurius space 2022-01-09 03:28:45 +00:00
UbitUmarov
da928d6099 != UUID.Zero is slow 2022-01-09 02:28:51 +00:00
UbitUmarov
7e0fc95c3a == UUID.Zero is slow 2022-01-09 00:33:16 +00:00
UbitUmarov
357f20eb14 == UUID.Zero is slow 2022-01-08 23:35:56 +00:00
UbitUmarov
cb98fb309c UUID == and != are bad 2022-01-08 19:39:35 +00:00
UbitUmarov
06df192510 update libomv with a bug fix 2022-01-08 19:08:00 +00:00
UbitUmarov
13c77e8017 update libomv with changes on bad UUID 2022-01-08 18:48:10 +00:00
UbitUmarov
a0ed214a6e save a few NS (hope not 2 much) 2022-01-07 04:15:58 +00:00
UbitUmarov
0bbcd7bf63 Maximum notecard size is 65,536 bytes, enforce it on osmakenotecard 2022-01-06 21:16:18 +00:00
UbitUmarov
e78caeeac8 add explicit osMakeNotecard(string notecardName, LSL_String contents) so it does not depend on implicit cast from string to list, as before 2022-01-06 20:42:50 +00:00
UbitUmarov
ce5dca5c56 revert the slowdown of osMessageObject. Also reduce the slowdown osMessageAttachments to (100 + 10 *NumberTargetedPrims) miliseconds. Some action games shown a bit of visible negative impact, so lets test 2022-01-06 02:34:14 +00:00
UbitUmarov
2e6790d164 save a few ns on FetchInventoryDescendents llsd response encode 2022-01-04 16:05:41 +00:00
UbitUmarov
7787a16426 and ofc the tests are also wrong.. Fix 2022-01-03 20:01:46 +00:00
UbitUmarov
7677e53dba fix FetchInvDescHandler response categories fields 2022-01-03 19:08:35 +00:00
UbitUmarov
e6528e828d do use listObjToInt() 2022-01-01 18:52:35 +00:00
UbitUmarov
67bdbc02a1 change osMessageAttachments() a bit more 2022-01-01 18:32:54 +00:00
UbitUmarov
0a447d1a9c slowdown osMessageObject a bit. Also slowdown osMessageAttachments by (200 + 10 *NumberTargetedPrims) miliseconds, plus some implementation changes 2022-01-01 18:06:19 +00:00
UbitUmarov
63db74c393 Ooopps.. better call initLSL 2021-12-31 04:20:03 +00:00
UbitUmarov
e3d8450692 throttle osnpcsay as llSay 2021-12-31 04:12:21 +00:00
UbitUmarov
4cfa0650fd gridservice: always merge region flags from config 2021-12-30 21:06:03 +00:00
UbitUmarov
f15ebe9822 (HG)MessageTransferModule: add trivial toAgentID == UUID.Zero check again 2021-12-30 20:43:50 +00:00
UbitUmarov
321d45882b (HG)MessageTransferModule: allow direct send to child agents again 2021-12-30 20:40:11 +00:00
UbitUmarov
d316379984 silly typos 2021-12-30 19:36:12 +00:00
UbitUmarov
b8c907ae87 GenericCommunicationPermission() is still useless, so comment it out 2021-12-30 15:20:15 +00:00
UbitUmarov
eb5912817b getassests cap: be tolerant to mismatch between viewer idea and assets types. we had those very wrong.. 2021-12-23 17:02:28 +00:00
UbitUmarov
1791581650 no point on setting a region as Default and Fallback, change example ini files 2021-12-23 14:56:35 +00:00
UbitUmarov
35d3889e5d simplify some log messages 2021-12-22 15:59:03 +00:00
UbitUmarov
2fa1b1f948 a potencial lock issue 2021-12-22 15:22:29 +00:00
UbitUmarov
021756895e exclude selected things from viewer cache again 2021-12-21 20:17:07 +00:00
UbitUmarov
8557f31f73 minor cpu savings 2021-12-20 17:00:42 +00:00
UbitUmarov
3f584dbf12 add auxiliar httpresponse.Redirect(string url, [HttpStatusCode redirStatusCode = HttpStatusCode.Redirect]) 2021-12-20 11:07:26 +00:00
UbitUmarov
112a86b9e0 clean some white spaces 2021-12-19 02:20:50 +00:00
UbitUmarov
2eb31e718e minor change 2021-12-19 02:18:28 +00:00
UbitUmarov
84c084d652 better NeighbourHandler child agents distances control 2021-12-19 02:05:32 +00:00
UbitUmarov
bc590c2fc4 NeighbourHandler child agents distances control 2021-12-19 01:54:29 +00:00
UbitUmarov
eaadb889d5 fix NeighbourHandler 2021-12-18 10:44:43 +00:00
UbitUmarov
f4db2813e4 change IsViewerCachable conditions a bit 2021-12-15 22:57:36 +00:00
UbitUmarov
a0e039e876 useless ms xml things 2021-12-14 16:04:45 +00:00
UbitUmarov
da4d4149f0 update a few dlls 2021-12-14 14:47:53 +00:00
UbitUmarov
86206432de let ubode bad meshmerizer be again just a error, not a critical region stop. (this is temporarygit push) 2021-12-11 22:46:17 +00:00
UbitUmarov
21896fc8da fix a log message 2021-12-07 02:10:44 +00:00
UbitUmarov
8ea1540492 change flag to false on robust examples 2021-12-07 01:57:46 +00:00
UbitUmarov
025bd73493 make the option visible in ini files 2021-12-07 01:48:48 +00:00
UbitUmarov
b4241d79b6 make fallback login to any region online optional. All but very simple standalones shoult set it to false and define default (and fallback) regions 2021-12-07 01:35:21 +00:00
UbitUmarov
2db2791771 at login, if target region is not found and there are no default of fallback regions, try to send user to a region online. This is similar to what we had before 0.9.2.0, that demands the definition of default region(s) 2021-12-07 01:05:51 +00:00
UbitUmarov
131455b107 add gridservice GetOnlineRegions() 2021-12-07 00:34:40 +00:00
UbitUmarov
8b28668b28 do not consider a hyperlink a fallback region 2021-12-06 23:41:39 +00:00
UbitUmarov
257664d62c minor cpu save on scene allowed client checks 2021-12-06 22:00:18 +00:00
UbitUmarov
c1e3876116 fix typo on a expire time. no impact but save a tiny bit of cpu time 2021-12-06 13:32:12 +00:00
UbitUmarov
573a2432f7 move master to 0.9.2.1 Dev 2021-12-04 23:58:50 +00:00
UbitUmarov
4dbfdbc022 update ScriptSyntax.xml 2021-12-04 22:46:25 +00:00
UbitUmarov
d65546724e make YEngine the default engine 2021-12-04 20:08:50 +00:00
UbitUmarov
b5d67d08a7 ubode version now has form managed-unmanaged versions (osGetPhysicsEngineName()) 2021-12-03 20:31:35 +00:00
UbitUmarov
ee0d6b4507 Invalid physics meshing option is a fatal error 2021-12-02 18:13:47 +00:00
UbitUmarov
249f0fc4c2 mantis 7896 and 7910: fix lsl setting of flexi and impact on prim type 2021-11-30 16:29:04 +00:00
UbitUmarov
9f88613f7e simplify ubOdeMeshing a bit 2021-11-28 23:55:39 +00:00
UbitUmarov
6007f97a41 some ubOde CO2 2021-11-28 19:16:52 +00:00
UbitUmarov
c16b9cbb6a update libomv (tiny CO2 things) 2021-11-28 17:23:56 +00:00
UbitUmarov
463c66d256 try save some zeptogram of CO2 2021-11-28 16:02:45 +00:00
UbitUmarov
1902ddc9df some lsl settings on [xengine] are needed on [yengine]. 2021-11-28 15:39:49 +00:00
UbitUmarov
52cd923c2e fix typos 2021-11-23 17:54:32 +00:00
UbitUmarov
b8bea0bd69 mantis 8944: do not trigger moving_end if kfm is alreadu stopped 2021-11-23 17:50:02 +00:00
UbitUmarov
fe62a15720 remove obsolete lighshare option 2021-11-22 12:00:27 +00:00
UbitUmarov
4229b08741 put back global locking on PriorityQueue 2021-11-22 01:22:56 +00:00
UbitUmarov
c3fca42983 cosmetics 2021-11-21 02:37:02 +00:00
UbitUmarov
b022ae0898 cosmetics 2021-11-21 02:20:59 +00:00
UbitUmarov
c786571c2f mantis 7341: change asset creatorid size to 128 on pgsql to match mysql 2021-11-20 19:32:39 +00:00
UbitUmarov
68f3fbd8c6 fix yengine timer event ... 2021-11-20 06:19:45 +00:00
UbitUmarov
52d21bd38a mantis 8943: fix alpha wearable save 2021-11-20 05:38:02 +00:00
UbitUmarov
852245d81c a few more changes on script running flag 2021-11-20 04:39:29 +00:00
UbitUmarov
ed22f6ab10 cosmetics 2021-11-20 04:07:22 +00:00
UbitUmarov
743f3af745 force yengine scripts recomp 2021-11-20 03:54:03 +00:00
UbitUmarov
ca3525bf0a mantis 3315: change the control of script flag running (needs testing) 2021-11-20 03:24:34 +00:00
UbitUmarov
1692254e3f cosmetics 2021-11-20 02:46:07 +00:00
UbitUmarov
ca7b6e7deb fix llRemoteLoadScriptPin permissions 2021-11-20 02:32:00 +00:00
UbitUmarov
846d955e26 do not enqueue changed_region on a new script 2021-11-20 02:28:12 +00:00
UbitUmarov
a4bd8a91c5 cosmetics 2021-11-20 01:58:08 +00:00
UbitUmarov
a145453ba0 cosmetics 2021-11-17 13:16:24 +00:00
UbitUmarov
17c32e6058 possible null ref 2021-11-17 12:08:04 +00:00
UbitUmarov
c0fdd2a80b cosmetics 2021-11-15 20:59:46 +00:00
UbitUmarov
74d1500133 change PriorityQueue locking and add some try/catch 2021-11-13 20:54:01 +00:00
UbitUmarov
6ed4f4050e some static declarions missing 2021-11-12 00:42:32 +00:00
UbitUmarov
7663d92242 minor safeguard 2021-11-03 01:52:13 +00:00
UbitUmarov
2e8ec93386 do set a default script of not provided; minor safeguard 2021-11-03 01:49:26 +00:00
UbitUmarov
f542026282 fix last commit 2021-11-02 18:58:36 +00:00
UbitUmarov
b08ffb622f try save a tiny bit of CO2 2021-11-02 17:25:29 +00:00
UbitUmarov
0a2f9ff6e1 fix bad format string 2021-11-02 15:32:33 +00:00
UbitUmarov
8c16034bef change to llTargetOmega. If gain == 0 make viewer stop and reset rotation. NOT AS SL (but as its spec) - MAY DEPEND ON VIEWER. as before on physical only works on rootprim, ignored on child ones 2021-10-26 23:08:01 +01:00
UbitUmarov
162454bdc0 cosmetics 2021-10-26 18:51:32 +01:00
UbitUmarov
b50b088dba simplify combat module 2021-10-24 21:49:54 +01:00
UbitUmarov
74a0bb3837 simplify combatmodule npc kill check 2021-10-24 21:06:42 +01:00
UbitUmarov
3db0bf7996 mantis 7952: kill npc if health gone (original patch by Mandarinka Tasty with small change) 2021-10-24 21:03:55 +01:00
UbitUmarov
3f3a5da3a9 mantis 6199 and 6872: Yengine will now error at compile tme if state name not found. Was doing it at runtime only. Xengine stays as it was 2021-10-23 23:27:31 +01:00
UbitUmarov
1bfd2ae1d8 mantis 6783: change coment text 2021-10-23 22:46:18 +01:00
UbitUmarov
bc7f9b9d68 mantis 5596: do override terrain raw file like other formats seem to do, just for coerence 2021-10-20 02:03:08 +01:00
UbitUmarov
39f0343069 mantis 8935: do send animesh animations of rezobject 2021-10-20 00:04:08 +01:00
UbitUmarov
65bdaec4d6 increase yengine compiled_version. This wil force automatic recmpile of scripts 2021-10-18 20:44:04 +01:00
UbitUmarov
3423e53043 fix osRequest*URL return type and threat level name 2021-10-18 20:42:28 +01:00
UbitUmarov
d48aaee5d9 change filename to robuststartuplogo.txt on last commit, also in code 2021-10-17 23:51:25 +01:00
UbitUmarov
4c76d42a04 change filename to robuststartuplogo.txt on last commit 2021-10-17 23:39:15 +01:00
Vincent Sylvester
ac83b0244a Load startuplogo_server.txt as logo for Robust
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2021-10-17 23:29:31 +01:00
UbitUmarov
60c99756ed add some missing using(... 2021-10-14 18:17:28 +01:00
UbitUmarov
7dc9f14aef same on XEngine, those need to be together so crossing and tp cases can be easy detected 2021-10-14 16:01:38 +01:00
UbitUmarov
a3479e8c99 YEngine changed region and teleport are sent together 2021-10-14 14:37:14 +01:00
UbitUmarov
104ea0518e minor changes on lludp updates send control 2021-10-12 18:10:40 +01:00
UbitUmarov
c71181ff51 possible multithreading issues 2021-10-12 18:08:49 +01:00
UbitUmarov
042c49385f mantis 7941: change llCollisionFilter code 2021-10-07 17:52:08 +01:00
UbitUmarov
9ee704e3bd mantis 8933: Yengine allow bool to float implicit cast 2021-10-07 16:14:46 +01:00
UbitUmarov
5592f818c9 mantis 8933: Yengine allow the case integer *= float 2021-10-07 15:47:59 +01:00
UbitUmarov
a6868c4166 mantis 8933: disable some YEngine excessive implicit cast 2021-10-07 15:46:39 +01:00
UbitUmarov
68efbfc603 add llOrd, llChar llHash 2021-10-02 14:17:11 +01:00
UbitUmarov
a5b417fca1 dont let llInsertString break a surrogate pair 2021-10-02 01:04:26 +01:00
UbitUmarov
030dabe2ab some cleanup usimb libomv utf8 stringtobytes 2021-10-01 17:24:12 +01:00
UbitUmarov
c55d508333 update libomv 2021-10-01 03:17:47 +01:00
UbitUmarov
a7ba50b9de cosmetics 2021-09-30 22:28:51 +01:00
UbitUmarov
d58dd334e9 add a missing hack on temp attachments 2021-09-30 22:16:42 +01:00
UbitUmarov
a8a85ebb91 a few checks for deleted presence 2021-09-21 03:21:42 +01:00
UbitUmarov
85a0e4243c remove a forgotten checkthreatlevel on a osSetProjectionParams variant 2021-09-20 18:09:24 +01:00
UbitUmarov
12ad2358a0 temporary attachments can not do llTeleport* 2021-09-17 02:21:51 +01:00
UbitUmarov
151350467f TPs are root agents only 2021-09-17 01:55:24 +01:00
UbitUmarov
1e85f54275 TPs are root agents only 2021-09-17 01:48:16 +01:00
UbitUmarov
2d7437cd31 region handle things on tp to landmark 2021-09-17 01:04:54 +01:00
UbitUmarov
e8735b6997 region handle things 2021-09-16 18:39:32 +01:00
UbitUmarov
6acf368f5b let osTeleportAgent(key agent, vector position, vector lookat) try teleport to a nearby region is position is outside current region (TEST) 2021-09-16 17:36:38 +01:00
UbitUmarov
916e981214 precision issues 2021-09-16 17:28:03 +01:00
UbitUmarov
441ab99087 typos, ofc 2021-09-15 23:33:53 +01:00
UbitUmarov
55fb69f8e0 a few changes on teleport lookat 2021-09-15 23:01:01 +01:00
UbitUmarov
a3ab4db5fc several changes to llTeleport so it does HG lms 2021-09-15 21:05:00 +01:00
UbitUmarov
06c8893357 some changes on oshttp send control 2021-09-15 15:14:12 +01:00
UbitUmarov
fb66053083 save/read some missing parcel flags on oar 2021-09-15 15:12:59 +01:00
UbitUmarov
b658f9bb13 BUG: silly stack overflow bc typo 2021-09-15 13:56:17 +01:00
UbitUmarov
e32734bb3b similar for osAvatarName2Key 2021-09-15 01:43:33 +01:00
UbitUmarov
2cc8b97a2e osKey2Name: first look if the avatar is on region already 2021-09-15 01:28:27 +01:00
UbitUmarov
b89f7eca35 oops BUG fix: do not modify shared list of scene presences 2021-09-14 18:02:58 +01:00
UbitUmarov
7ea0821704 model upload: do create inventory texture entries by default (was do not) 2021-09-14 01:40:18 +01:00
UbitUmarov
acf02563f2 some cleanup 2021-09-14 01:35:32 +01:00
UbitUmarov
11f9f67453 parcel dwell: viewers shoul done see parcel fakeID 2021-09-14 00:55:02 +01:00
UbitUmarov
fe871a3e30 update libomv 2021-09-10 22:22:16 +01:00
UbitUmarov
3c6d5a9b10 counted process threads may not be all active, so remove the 'active' word' 2021-09-09 22:35:42 +01:00
UbitUmarov
288cc5ef46 delegate.BeginInvoke is a dead end 2021-09-09 20:01:46 +01:00
UbitUmarov
ef26527ac6 Ooops.. better not have a thread lease time of 3ms 2021-09-09 19:39:17 +01:00
UbitUmarov
b3f9217d27 delegate.BeginInvoke is a dead end 2021-09-09 19:23:24 +01:00
UbitUmarov
095b46d193 cosmetics 2021-09-09 18:48:06 +01:00
UbitUmarov
29e3cc3bd9 delegate.BeginInvoke is a dead end 2021-09-09 18:27:16 +01:00
UbitUmarov
c1a39589f6 remove dead code ( from Megas) 2021-09-09 18:11:17 +01:00
UbitUmarov
da3a1981ff delegate.BeginInvoke is a dead end 2021-09-09 17:58:12 +01:00
UbitUmarov
7789eb5107 delegate.BeginInvoke is a dead end 2021-09-09 17:46:45 +01:00
UbitUmarov
9d60ceb85f update libomv 2021-09-08 21:03:04 +01:00
UbitUmarov
076c87914d save a few ns on ubode 2021-09-08 17:52:11 +01:00
UbitUmarov
1e4799604f add suspendflow option to workmanager startthread 2021-09-07 02:51:08 +01:00
UbitUmarov
b0814951bd stop sending god as estate owner 2021-09-06 15:55:54 +01:00
UbitUmarov
f085e9a5e8 cosmetics 2021-09-05 20:25:36 +01:00
UbitUmarov
8769abcd72 remove TAP also from rastclient 2021-09-05 19:53:03 +01:00
UbitUmarov
34b6998cfd a few more changes on oshttp response 2021-09-05 14:18:10 +01:00
UbitUmarov
affaacb279 a few more changes to oshttp send 2021-09-04 14:49:42 +01:00
UbitUmarov
52753972ee oshttp send: modern TAP is still just a complex wrapper of 'obsolete' APM hidding at IL level, so just use the 'obsolete' 2021-09-04 13:55:56 +01:00
UbitUmarov
1e1ec44707 smartthreadpool: do not start a thread before register it 2021-09-03 14:54:54 +01:00
UbitUmarov
94d1cf1205 smartthreadpool: replace its locked dictionary 2021-09-03 14:36:57 +01:00
UbitUmarov
30c479db94 remove a noisy stack trace from LAND CONNECTOR log 2021-09-02 21:56:23 +01:00
UbitUmarov
aa796bb443 'cosmetics' 2021-09-02 21:36:28 +01:00
UbitUmarov
f047cdc5ee 'cosmetics' 2021-09-02 20:58:57 +01:00
UbitUmarov
e89900949d silly typo 2021-09-02 17:41:19 +01:00
UbitUmarov
9b840f1f9e change the GetFallbackRegions sort code 2021-09-02 17:22:59 +01:00
UbitUmarov
58df13587f reduce map spam block time 2021-09-02 05:01:33 +01:00
UbitUmarov
f5e0459e08 test changes on oshttpserver responses send 2021-09-02 04:49:22 +01:00
UbitUmarov
af4dacee53 a few typos 2021-09-01 16:37:28 +01:00
UbitUmarov
c77fa98640 make MAXCONTENTLENGHT a constant 2021-09-01 15:51:18 +01:00
UbitUmarov
98afe851ee jsonSimStats: fix null ref when region not found; limite http content lenght; cosmetics 2021-09-01 15:45:23 +01:00
UbitUmarov
b363d1f9ee sqlite estatestore: stop using sqlite autoincrement on estateID, look for max value in USE instead. This is slow, but the db should be small; fix min value to 101 ( we should allow special lower values, but not now ) 2021-08-27 16:21:03 +01:00
UbitUmarov
5a5c89bc49 minor log string changes 2021-08-27 12:40:09 +01:00
UbitUmarov
68f3b4aef8 reduce LogFailedXML dump to console to just 250 chars. 2021-08-26 21:48:58 +01:00
UbitUmarov
4aa9c882ec show http comand: do list http query method handlers 2021-08-20 21:24:18 +01:00
UbitUmarov
eeb6e67802 MapAddServerConnector: revert last commit. Those checks can fail just because map upload still happens at the wrong time on region start 2021-08-18 18:19:59 +01:00
UbitUmarov
5439b072bc MapAddServerConnector: do abort on severe error 2021-08-18 18:09:57 +01:00
UbitUmarov
c4a92f3a8b groups V2: improve messages sent on eject a bit 2021-08-18 01:09:43 +01:00
UbitUmarov
a99f09df92 duhhh argument name is direction_RootToChild not the oposite (just a rename to keep coerency with code logic) 2021-08-15 19:57:23 +01:00
UbitUmarov
4afc1e3909 catch possible null refs 2021-08-13 21:36:55 +01:00
UbitUmarov
cc86bdddcf oar load: do a block check for assets presence on grid services, instead of one by one 2021-08-10 17:02:27 +01:00
UbitUmarov
554ef1b3fd mantis 8927: fix xmlrpcgroups group notice im 2021-08-10 16:13:05 +01:00
UbitUmarov
ee77f26db5 why not keep both... 2021-08-09 17:26:48 +01:00
UbitUmarov
5e6ca31cfd git IS bad to me 2021-08-09 17:13:59 +01:00
UbitUmarov
fdc4acde4c git it bad to me 2021-08-09 17:10:51 +01:00
UbitUmarov
cca62b15a8 add our rainbow back with flipped colors 2021-08-09 17:04:54 +01:00
UbitUmarov
3de3a53b1f viewers imported stupid ll code that does invert order of rainbow colors in code. remove ours 2021-08-09 17:03:54 +01:00
UbitUmarov
9bd9a38be9 flotsam cache: and fache expire now should expire everything not detected as in use 2021-08-09 14:51:22 +01:00
UbitUmarov
5f7446e3ee flotsam cache: do not expire baked textures in use 2021-08-09 14:49:46 +01:00
UbitUmarov
94ec05bbf5 flotsam cache: revert from using Task Async. That uses alot more resources than a simple thread for pool and to be slower 2021-08-09 14:48:52 +01:00
UbitUmarov
0ffa225fc2 make dynamic textures only use asset cache explicitly 2021-08-06 22:58:35 +01:00
UbitUmarov
a8b37363b6 mantis 8925: avoid log noise due to bad http requests 2021-08-06 16:38:57 +01:00
UbitUmarov
3e17d911be handle a old defective creatordata host, on caching the creators of objects in region 2021-08-04 14:21:52 +01:00
UbitUmarov
413d5a81f1 there should be no need to copy the scenepresence list again.. 2021-07-29 20:05:50 +01:00
Thomas Mettam
59ffcade55 Can't negate bool
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2021-07-28 15:38:56 +01:00
UbitUmarov
dc09b56bba move BulkUpdateInventoryItem from lludp to eventqueue message 2021-07-25 03:52:11 +01:00
UbitUmarov
912777612a change the expiringcache on xinventory connector 2021-07-24 23:56:46 +01:00
UbitUmarov
eca42166e3 some viewers need SendBulkUpdateInventory on moving inventory itmes around 2021-07-24 23:48:31 +01:00
UbitUmarov
3903d3e6b0 Xinventory: invalidate items cache on some ops 2021-07-24 23:45:27 +01:00
UbitUmarov
5170272557 new viewers may lose our legacy HG landmarks name and descritions hacks 2021-07-24 22:04:47 +01:00
UbitUmarov
8f5b40b35a right name is UpdateInventoryItem not UpdateInventoryItemAsset (at those locations) 2021-07-24 22:02:24 +01:00
UbitUmarov
547ac80a19 fix standalone grid deregister wrong return value 2021-07-24 12:29:43 +01:00
UbitUmarov
b1051417e0 Yengine: a few more changes on the global variables nulls 2021-07-23 16:18:11 +01:00
UbitUmarov
ae49b540c1 Yengine: comment out some debug debug exec state 2021-07-23 07:13:30 +01:00
UbitUmarov
d8dccc7570 mantis 8913: avoid some null on Yengine Xengine state deserielizer 2021-07-23 06:41:09 +01:00
UbitUmarov
ccc3578b54 mantis 8913: avoid some nulls on Yengine state deserielizer 2021-07-23 06:39:35 +01:00
UbitUmarov
5ef462cb13 show npc count in jsonsimstats 2021-07-23 03:55:23 +01:00
UbitUmarov
3dfa3263da recalc agents on a test 2021-07-23 03:37:56 +01:00
UbitUmarov
8c037b6295 pesty warning 2021-07-23 03:19:22 +01:00
UbitUmarov
ac96c3fb41 future code did get in, take out 2021-07-23 03:13:10 +01:00
UbitUmarov
6d47ec571a add another stat 2021-07-23 03:04:59 +01:00
UbitUmarov
d9d8dceb93 oops lost a stat 2021-07-22 20:52:49 +01:00
UbitUmarov
c62055bd5f show total number of process threads on show stats and json.. 2021-07-22 20:34:59 +01:00
UbitUmarov
3ab30e05e9 pesty warning 2021-07-22 20:05:35 +01:00
UbitUmarov
31683b13ea several changes to statistics. How they are stored, passed around, referenced; do some fixes for multi regions per instance,... 2021-07-22 19:57:11 +01:00
UbitUmarov
fddb667dd8 try to fix Strong Name issues on mysql connector run runprebuild and
recompile!!!
2021-07-22 16:17:12 +01:00
UbitUmarov
9640d30266 mantis 8919 update mysql connector to 6.9.11 modified with the sugested fix for mariadb 10.6 utfmb3 report 2021-07-21 18:00:01 +01:00
UbitUmarov
b4fea2f343 remove module BinaryLoggingModule. It did store the region statistics sent to viewers, using its own binary format ( derived from openmetaverse idea of the respective viewers llupd packet ), not only hard to use but also limited 2021-07-21 16:33:28 +01:00
UbitUmarov
5073d7dedd remove commas sep from number format on stats ProcMem 2021-07-21 09:41:20 +01:00
UbitUmarov
5e26ede0f1 add missing changes 2021-07-16 03:12:03 +01:00
UbitUmarov
a01046c24f a few changes to get assets 2021-07-16 03:08:31 +01:00
UbitUmarov
cdcf468e5c Enable NPCs by default. They are a major opensim feature 2021-07-16 02:04:37 +01:00
UbitUmarov
39a649e768 add missing change 2021-07-16 01:53:42 +01:00
UbitUmarov
fbc10387c8 add a optional limit on number of npcs per scene default = 40 2021-07-16 01:52:03 +01:00
UbitUmarov
03239dfbca cosmetic change a argument name 2021-07-16 01:25:48 +01:00
UbitUmarov
011868adc7 mantis 8909: take number of npcs out of avatars limit check 2021-07-16 01:14:51 +01:00
UbitUmarov
9e7f77135d minor cosmetics 2021-07-16 00:17:59 +01:00
UbitUmarov
2408ce790a mantis 8908: use the prim idea of running animations, (by name or by key) on llStopObjectAnimation(), ignoring the prim inventory (unlike sl?) 2021-07-15 22:05:31 +01:00
UbitUmarov
cf0b1b1840 let script EPS be visible on sim stats 2021-07-05 06:12:49 +01:00
UbitUmarov
69616e2792 touch assets was still not that good.. 2021-07-05 05:40:36 +01:00
UbitUmarov
323fa0ddf2 bug fix 2021-07-05 05:25:51 +01:00
UbitUmarov
2b6a8698c1 flotsam cache: reduce number of calls to File.SetLastAccessTime, (if that option is enabled ) 2021-07-04 03:13:43 +01:00
UbitUmarov
2c9f299687 add replacement fs tpose animations 2021-07-03 01:45:13 +01:00
UbitUmarov
f5ff4e0745 replace texture´'blank' 2021-07-01 18:15:44 +01:00
UbitUmarov
b27b931147 fix scripts start on user rez from a prim inventory 2021-06-27 18:22:49 +01:00
UbitUmarov
b6a846f2c2 missing file change 2021-06-27 17:01:01 +01:00
UbitUmarov
eb441ea4e4 fix owner on user rez from a prim inventory to ground 2021-06-27 16:55:36 +01:00
UbitUmarov
598caf46cc add another missing animation 2021-06-26 03:31:04 +01:00
UbitUmarov
ab956586e2 a bit more cosmetics in lsl api 2021-06-22 13:33:03 +01:00
UbitUmarov
f29e177902 add other animation asset 2021-06-17 18:40:20 +01:00
UbitUmarov
688bf4ab46 add some animation assets 2021-06-17 03:20:09 +01:00
UbitUmarov
73ad7584aa put back a lludp received buffers queue for usecircuit processing 2021-06-07 15:50:17 +01:00
UbitUmarov
aab89f66fe fix osGetGridNick() i did break on recent commit 2021-06-03 16:39:03 +01:00
UbitUmarov
867ac0b5d7 fix AgentFOV gen 2021-06-02 14:29:52 +01:00
UbitUmarov
21da22b6ec lludp remove obsolete pending queue 2021-06-02 14:28:47 +01:00
UbitUmarov
a473cbe128 cosmetics like change empty string compares 2021-06-02 11:07:56 +01:00
UbitUmarov
98ff4b230d cosmetics 2021-06-01 23:43:05 +01:00
UbitUmarov
cd74acc16b remove threat checks from osGetGridNick and osGetGridName 2021-06-01 23:04:46 +01:00
UbitUmarov
75dac827fa mantis 8896: triggersound does not stop loopsound 2021-06-01 21:54:08 +01:00
UbitUmarov
96cb47e80f anf ofc i forgot a file 2021-05-31 18:13:56 +01:00
UbitUmarov
4855e11346 a few more changes to lsl list; add osListSortInPlace(LSL_List src, LSL_Integer stride, LSL_Integer ascending), does the sort directly on src, avoiding creation on a new list when that is not needed 2021-05-31 18:12:33 +01:00
UbitUmarov
afaa181676 a few more changes to lsl list 2021-05-31 16:36:20 +01:00
UbitUmarov
3e948d8c57 a few more changes to lsl list 2021-05-31 15:12:37 +01:00
UbitUmarov
8bcebf0190 missed a file 2021-05-31 01:42:23 +01:00
UbitUmarov
96be3a27ca some changes to llListSort() 2021-05-31 01:39:21 +01:00
UbitUmarov
4e8c87fbd1 set Expect100Continue false again 2021-05-29 23:19:40 +01:00
UbitUmarov
ee530d438f cosmetics 2021-05-29 15:39:01 +01:00
UbitUmarov
a23bf4eb1b mantis 8890: waste CPU checking if asset id == Zero on get; several changes on region Asset connector 2021-05-29 15:08:22 +01:00
UbitUmarov
5c99e94b79 fix llDeleteSubList() in the case start > end, so it is as spec ie keeps [end + 1, start - 1]. This may break some scripts made for previus broken way ie removed that range. Case start <= end should be as before, just a bit faster (after previus commit) 2021-05-29 02:04:57 +01:00
UbitUmarov
5056b125e9 small change on lsl lists DeleteSublist() 2021-05-29 00:08:37 +01:00
UbitUmarov
1b9cea02b2 fix script events on crossings in same instance. MemberWiseClone on part.clone is bad 2021-05-12 21:37:39 +01:00
UbitUmarov
22c343f9fd fix a typo 2021-05-04 23:57:02 +01:00
UbitUmarov
294ca5db2c add STATS_SCRIPT_TIME constant. On last commit add ..LPS wasa typo, it was add STATS_SIM_SLEEP, the index to value LPS was pointing till now 2021-05-04 21:02:29 +01:00
UbitUmarov
87b806bd20 fix STATS_SCRIPT_LPS (obsolete), add STATS_SCRIPT_LPS ( what LPS did actually return) and STATS_SCRIPT_EPS to the list of some indexes to the list returned by osGetRegionStats 2021-05-04 20:43:24 +01:00
UbitUmarov
b72676bae9 let osGetRegionStats return a list with all the avaiable values (43 currently) 2021-05-04 20:39:52 +01:00
UbitUmarov
c816c220af scripts line per second is no longer used and was wrong 2021-04-22 13:33:00 +01:00
UbitUmarov
84027166c8 mantis 8520: make YEngine tick script events per second stat 2021-04-22 00:40:45 +01:00
UbitUmarov
1dc568749f missing file 2021-04-21 16:29:19 +01:00
UbitUmarov
15d0b02ba9 add LSL_Integer osAvatarType(string firts, string last) 2021-04-21 16:25:58 +01:00
UbitUmarov
9d1bd02d12 add LSL_Integer osAvatarType(LSL_Key avkey) 2021-04-21 15:52:09 +01:00
UbitUmarov
1b9a77f08d actually change scripts timers, to the ini setting AsyncLLCommandLoopms ( default 100, 50 a more reasonable value that just eats a bit more cpu looping around 2021-04-21 14:15:12 +01:00
UbitUmarov
b925704eb9 mantis 8881: change llHTTPRequest allowed headers control 2021-04-21 14:07:50 +01:00
UbitUmarov
88defb4d90 change scripts timers, etc check rate to 50ms 2021-04-21 13:50:31 +01:00
UbitUmarov
4198dcdf86 change script touchs linknumber handling 2021-04-21 13:48:25 +01:00
UbitUmarov
277c4f1433 mantis 8887: fix timing issue 2021-04-15 19:54:56 +01:00
UbitUmarov
e08b96bfe8 add a another log message on parcel change 2021-04-15 18:55:05 +01:00
UbitUmarov
b8432d86bc add a log message on send parcel data 2021-04-15 18:29:09 +01:00
UbitUmarov
9e5556e334 fix typos 2021-03-31 22:53:41 +01:00
UbitUmarov
bb304794bb Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim 2021-03-18 19:34:30 +00:00
UbitUmarov
c295deb262 Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim 2021-03-18 18:45:28 +00:00
Oren Hurvitz
4445bc1222 Fixed unit tests for Load OAR 2021-03-18 12:55:40 +02:00
Oren Hurvitz
73619763b9 Added textures to the OpenSim library: Default Moon, Default Water Normal 2021-03-18 10:35:57 +02:00
Oren Hurvitz
af6b618629 Added "Default Water" item to the OpenSim library 2021-03-18 10:35:57 +02:00
Oren Hurvitz
0260168b5d Added cloud textures to the OpenSim Library 2021-03-18 10:35:57 +02:00
Oren Hurvitz
8d8a7347f7 Renamed a couple of the Settings Library subfolders to "Skies" and "Days", to match the names used in Second Life 2021-03-18 10:35:57 +02:00
Oren Hurvitz
5f7736ba1d Have the "Settings Library" folder use the same icon as the user's own "Settings" folder 2021-03-18 10:35:57 +02:00
Oren Hurvitz
c92c1f985e Renamed "Default Daycycle(3/1)" to "Default Daycycle (More Daylight)"
This makes it easier for users to understand the difference between this asset
and the asset called "Default Daycycle".
2021-03-18 10:35:57 +02:00
Oren Hurvitz
e082892cf1 When migrating Windlight region settings to EEP, store the EEP settings immediately.
Previously the migration was done only in memory, but the settings in the database weren't modified.
They would only get updated in the database the first time the user made any change to the EEP settings.

Also, added better error logging: include the full stack trace.
2021-03-18 10:35:57 +02:00
Oren Hurvitz
bcbfba5149 Added osReplaceRegionEnvironment to ScriptSyntax.xml 2021-03-18 10:35:55 +02:00
Oren Hurvitz
1237b71d63 Added osNpcLookAt to ScriptSyntax.xml 2021-03-18 10:35:29 +02:00
Oren Hurvitz
3d208dd690 osNpcLookAt() should only work on NPC's, not on regular users 2021-03-18 10:35:29 +02:00
Oren Hurvitz
521754ba84 Save a couple of estate settings in OAR files.
The settings that are saved are:
* AllowDirectTeleport - required in order to make Telehubs work
* AllowEnvironmentOverride - required in order to allow parcels to have different EEP settings from the region
2021-03-17 17:47:06 +02:00
Oren Hurvitz
c1a3185df3 HTTP Request Handlers: log the responses (previously we only logged the requests).
Note that this is separate from WebUtil, which we use to *send* HTTP requests: that
class always logged both the request and the response. In contrast, this commit
handles HTTP requests that are sent to OpenSim's web server.
2021-03-17 16:42:08 +01:00
Oren Hurvitz
a96ebc952b Log HTTP requests that arrive for SimpleStreamHandler's 2021-03-17 16:40:27 +01:00
UbitUmarov
74d86adc51 make invalid llhttpRequest custom header a hard error 2021-03-15 15:40:47 +00:00
UbitUmarov
68f3e64370 potencial issue on some http header packets 2021-03-15 15:28:15 +00:00
UbitUmarov
b56f1c2b7e fix mantis 8879 2021-03-13 20:20:58 +00:00
UbitUmarov
abf11627f2 duplicate configuration entries on sextion XEngine that are also valid for YEngine since are not even engine related, and should be on own section, one day 2021-03-12 00:43:22 +00:00
UbitUmarov
50669c8d41 minor cleanup 2021-03-12 00:04:51 +00:00
UbitUmarov
60868fe975 vs2017 debug seems to get very confused with our script class called Timer (run runprebuild) 2021-03-11 23:54:34 +00:00
UbitUmarov
8712c7100e reduce a jobengine thread hold time; not using packet pool on receive; 2021-03-11 23:42:06 +00:00
UbitUmarov
e24dd01bda mantis 8870: do look on all script engines for http requests done 2021-03-01 15:34:36 +00:00
UbitUmarov
915bc74ab4 remove a extra _ 2021-02-16 12:35:31 +00:00
UbitUmarov
8c7bd5fe8d add constants for npclookat types 2021-02-16 12:24:11 +00:00
UbitUmarov
1c29f3378d mantis 8865: add experimental osNpcLookAt 2021-02-16 03:16:54 +00:00
UbitUmarov
e3aca7b6ce don't try to remove caps on a npc (minor, just stop logs about it) 2021-02-15 23:22:11 +00:00
UbitUmarov
f13836b846 try tune keepalive on region agent create 2021-02-13 11:59:38 +00:00
UbitUmarov
187db1efd0 mk sure some info is removed on close agent 2021-02-12 15:26:53 +00:00
UbitUmarov
273d2220cc bad bad ubit... 2021-02-12 14:56:55 +00:00
UbitUmarov
db11710600 change where we check for region full of avatars 2021-02-12 14:48:35 +00:00
UbitUmarov
31f7d47663 minor cosmetics 2021-02-12 13:29:41 +00:00
UbitUmarov
ae66db0430 minor cosmetics 2021-02-12 13:04:07 +00:00
UbitUmarov
1610c3f741 mantis 8862: do cancel negative cache on valid store 2021-02-09 18:53:24 +00:00
UbitUmarov
af8ce58130 change those tests a bit 2021-02-09 04:52:50 +00:00
UbitUmarov
3a7f675087 work around broken tests 2021-02-09 04:31:43 +00:00
UbitUmarov
95ffc8721c mantis 8861: seems we can't trust save rotations 2021-02-09 03:57:50 +00:00
UbitUmarov
bb6f31039e mantis 8855 fix the cast, avoiding the tostring 2021-02-06 18:42:02 +00:00
UbitUmarov
caddb8ac97 let osteleportobject work with phantom prims (still not kfm ones)(at least until i remember why not..) 2021-02-01 21:07:44 +00:00
UbitUmarov
2266483ce7 also do it grid side, like original commit, so older regions get the fix 2021-01-30 02:01:57 +00:00
UbitUmarov
6bdaef4e04 mk sure at least one maturity is set on classified update sent by viewer 2021-01-30 01:16:38 +00:00
UbitUmarov
7a05a9af48 oops, fix the bit mask 2021-01-30 00:47:00 +00:00
UbitUmarov
ffaa862254 mantis 8856: test a simpler fix 2021-01-30 00:27:06 +00:00
UbitUmarov
a3a499d69e mantis 8854: fix the typos and rearrange code a bit. AGAIN PassTouches (and PassCollisions) are as old SL, not current 2021-01-25 14:07:08 +00:00
UbitUmarov
dcbf89963b HttpRequestModule: changed from shared module to non shared module with static shared elements; make it use JobEngine, etc 2021-01-18 19:24:43 +00:00
UbitUmarov
d525286b0f smartthreadpool: do informcomleted under locks 2021-01-18 18:18:30 +00:00
UbitUmarov
545e196226 do init new acd circuit code + cosmetics 2021-01-17 15:07:35 +00:00
UbitUmarov
2f79009d32 avoid a null ref on hg useragentservice 2021-01-14 20:23:20 +00:00
UbitUmarov
1db6a541bd more changes to smartthreadpool 2021-01-13 16:23:49 +00:00
UbitUmarov
ec56517c7c simplify groups v2 cache 2021-01-13 11:16:32 +00:00
UbitUmarov
6660e1c842 fix groups v2 notices 2021-01-13 10:39:51 +00:00
UbitUmarov
e25b05a454 remove the expire argument from os[Link]ParticleSystem.. expire is controled by maxage != 0 2021-01-12 16:12:44 +00:00
UbitUmarov
c215204e22 .. and another misisng change 2021-01-12 15:46:20 +00:00
UbitUmarov
ee4fd87463 good idea to commit the actual code.. 2021-01-12 15:41:14 +00:00
UbitUmarov
72f7009b10 add os[Link]ParticleSystem with expire option. If expire true and system MaxAge > 0, the system will be be (lazy) removed from the prim after that MaxAge 2021-01-12 15:38:10 +00:00
UbitUmarov
9f8473caae another ... 2021-01-12 13:20:57 +00:00
UbitUmarov
10b5375679 missing change 2021-01-12 12:45:59 +00:00
UbitUmarov
4cac0ea759 let udp output refill engine release its thread on iddle 2021-01-12 12:43:29 +00:00
UbitUmarov
6f6c3f9e08 simplify JobEngine a bit 2021-01-12 12:36:54 +00:00
UbitUmarov
30176673e3 move scripts dataserver threads to objectjobengine 2021-01-11 16:23:32 +00:00
UbitUmarov
517d2e136b move floatsam write thread to objectjobengine 2021-01-11 15:18:01 +00:00
UbitUmarov
07e02ec7e6 fix test to ignore such flags also 2021-01-11 12:44:15 +00:00
UbitUmarov
b596a36369 fix previus commit, not storing script related flags on dbs like all 0.9.x. this must be regen on scripts rez 2021-01-11 12:18:07 +00:00
UbitUmarov
13a7ce38ee do not try to pass touch events to root prim if it does not have them 2021-01-11 01:33:32 +00:00
UbitUmarov
06dececb03 reset flags relative to script events touch, money and allowdrop. Seems several do have them set in inventories even without scripts 2021-01-11 01:32:23 +00:00
UbitUmarov
48060e1c38 move poll service work threads to objectjobengine, mb not that good, except iddle regions ofc 2021-01-09 14:00:50 +00:00
UbitUmarov
7405e89afb move inventory fetch work threads to objectjobengine 2021-01-09 13:18:29 +00:00
UbitUmarov
54135029e7 move getassets work threads to objectjobengine 2021-01-09 12:59:45 +00:00
UbitUmarov
d3c87d12ba move regionassetcoonector get threads to objectjobengine 2021-01-08 17:54:51 +00:00
UbitUmarov
2abea09e83 comment out code for map deregister, still not done 2021-01-08 16:14:11 +00:00
UbitUmarov
2e98ccbe46 missing change on objectjobengine 2021-01-08 16:09:45 +00:00
UbitUmarov
78d38aa832 move map itens to objectjobengine 2021-01-08 16:07:44 +00:00
UbitUmarov
ec216a3877 use ObjectJobEngine on ubOde mesh worker 2021-01-08 14:40:14 +00:00
UbitUmarov
172a915aac add ObjectJobEngine. This is a job engine for jobs (or pool workitems) with same action method but diferent arguments 2021-01-08 14:38:35 +00:00
UbitUmarov
1fbf8b44b4 ubOde mesh work does not need a thread all the time 2021-01-08 11:15:41 +00:00
UbitUmarov
70e00a00ec fix creators user cache 2021-01-07 21:52:41 +00:00
UbitUmarov
6bcba59439 forget to flag local users 2021-01-07 21:15:22 +00:00
UbitUmarov
91bfc2f62c reduce (again) number of http requestes on getdisplaynames 2021-01-07 20:37:44 +00:00
UbitUmarov
a3b26255dd add vector variant of osSlerp; update script syntax 2021-01-06 16:32:51 +00:00
UbitUmarov
be649ee7e5 YEngine: remove obsolete appdomain code (still in use elsewhere) 2021-01-06 14:45:51 +00:00
UbitUmarov
7ead51b613 update npc animation at end of movetotarget; decrease default stop position error to 0.5m 2021-01-06 14:43:58 +00:00
UbitUmarov
feba9a70c4 do not send parcel environment changes to npcs 2021-01-06 14:39:33 +00:00
UbitUmarov
2a70c8c5c2 mantis 8848: fix typo, Thanks Chris Weymann 2021-01-06 14:02:22 +00:00
UbitUmarov
fa26f37a17 http server receiver: go back to simpler and lighter Beginread/endread. async/await is still just a slower wrapper around it, with more unpredictable side effects 2021-01-05 22:14:51 +00:00
UbitUmarov
582ce9e380 Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim 2021-01-05 09:29:04 +00:00
Alicia Raven
d38606f695 Remove unused variable from EstateLoaderFileSystem 2021-01-05 07:43:33 +00:00
UbitUmarov
bfb2b3a23e revert changing the http server control thread. The main.net pool one cames with tons of crap on stack 2021-01-04 20:53:11 +00:00
UbitUmarov
aff1593b2b mantis 8844: fix PARCEL_MEDIA_COMMAND_URL with empty string parameter 2021-01-03 13:02:13 +00:00
UbitUmarov
d72f19111c smartthreadpool: place a global throttle on threads creation if pool as less than min number of threads ( 20/s versus .net 1/s in all cases) 2021-01-02 12:38:25 +00:00
UbitUmarov
4b7502c1dc smartthreadpool: remove workitems priority. Its lack of fairness could cause issues hard to debug if we tried to use it (we don't) (runprebuild) 2020-12-31 14:29:36 +00:00
UbitUmarov
b61df051db smartthreadpool: suport callback delegates with no return value (WaitCallBack), use it on our fireandforget (other places later) 2020-12-31 13:04:44 +00:00
UbitUmarov
960a0fa360 smartthreadpool: add pool option SuppressFlow and test it on main smart?? pool (may go bad) 2020-12-31 02:46:38 +00:00
UbitUmarov
0389c02fd5 smartthreadpool: ofc missed the relevant file 2020-12-31 02:01:39 +00:00
UbitUmarov
923d6437b8 smartthreadpool: replace thread context code to use ExecutionContext 2020-12-31 01:57:22 +00:00
UbitUmarov
64fd819b81 still some windows code 2020-12-30 22:07:42 +00:00
UbitUmarov
09933dc589 smartthreadpool: replace custom linkedlist based quueue by .net queue 2020-12-30 14:43:52 +00:00
UbitUmarov
b667bff8bb smartthreadpool: httpcontext will be gone (we dont use it) 2020-12-30 11:53:46 +00:00
UbitUmarov
4ab792cd13 smartthreadpool: remove old windows(like CE) support, remove tabs.. (do runprebuild) 2020-12-30 11:38:18 +00:00
UbitUmarov
d6747f872d test: change http send control to a main pool thread 2020-12-29 23:53:09 +00:00
UbitUmarov
3be98bdb35 mantis 8840: add say ranges to llGetEnv 2020-12-29 18:23:46 +00:00
UbitUmarov
f79ebcc10f oops better really to the upper case version 2020-12-29 14:45:59 +00:00
UbitUmarov
71065f19ad add another form of bytesToHexString(byte[] bytes, bool lowercase) 2020-12-29 14:41:41 +00:00
UbitUmarov
0e8ea0486d better also add llXorBase64 to lsl api 2020-12-29 13:38:19 +00:00
UbitUmarov
8fa28d96f5 clean tabs from osSHA256 patch (mantis 8839) 2020-12-29 13:31:08 +00:00
UbitUmarov
5acf56d20e add missing lsl stub for llXorBase64 2020-12-29 13:24:04 +00:00
Mike Higgins
0da43a8ef5 added a new function string=osSHA256(string)
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-12-29 13:17:29 +00:00
UbitUmarov
5361045641 add a debug message on agenthandlers processRequest 2020-12-29 04:27:20 +00:00
UbitUmarov
d2fd6d3d0f update libomv 2020-12-29 03:32:26 +00:00
UbitUmarov
0957317790 xbakes, we even avoid another array copy since httpRequest.InputStream is a memorystream with origin = 0 2020-12-29 02:05:44 +00:00
UbitUmarov
5ecc264082 simplify xbakes service a bit more 2020-12-28 21:44:26 +00:00
UbitUmarov
e169b1b074 simplify xbakes service 2020-12-28 21:05:26 +00:00
UbitUmarov
453855bd20 save a few ns 2020-12-28 20:00:55 +00:00
UbitUmarov
0217e39445 update libomv 2020-12-28 19:59:59 +00:00
UbitUmarov
b69d84cd4c assetbase: comment out log messages 2020-12-28 18:41:54 +00:00
UbitUmarov
0c87215c13 no keepalive on gridinfo 2020-12-28 14:55:59 +00:00
UbitUmarov
81e13df897 fix a recent bug on login service hg inventory 2020-12-26 14:19:54 +00:00
UbitUmarov
98e69d9015 simplify RestGetGridInfoMethod a bit more 2020-12-26 03:58:22 +00:00
UbitUmarov
18402bc667 simplify GridInfoHandlers a bit 2020-12-26 03:34:07 +00:00
UbitUmarov
8316b9ff35 simplify HeloServiceInConnector a bit 2020-12-26 03:12:08 +00:00
UbitUmarov
7a07e1ac73 remove a spurius ; and change another string empty check 2020-12-26 02:38:22 +00:00
UbitUmarov
f5e6159c22 comment out direct HG tp at login option that just does not work 2020-12-26 00:10:33 +00:00
UbitUmarov
a0d0bbacb2 move servicesGodAgentID to Constants.cs 2020-12-25 22:48:42 +00:00
UbitUmarov
696a7a4edc cosmetics 2020-12-25 00:46:35 +00:00
UbitUmarov
7b5fc5c8bd silly null ref 2020-12-25 00:37:00 +00:00
UbitUmarov
d3e5b3d769 changes on some robust map, connectors, map file read, etc 2020-12-24 00:06:10 +00:00
UbitUmarov
8c0994a367 Ooops, agentposthandler as a variable path 2020-12-23 15:54:53 +00:00
UbitUmarov
3732677972 changes on agenthandlers: simplify HG only agentposthandler, etc 2020-12-23 15:36:51 +00:00
UbitUmarov
d0ade39641 a few changes to getregion(s)byName() 2020-12-22 14:27:01 +00:00
UbitUmarov
ad1587b041 similar change on StorePrimInventory 2020-12-22 04:10:47 +00:00
UbitUmarov
098f86f5e0 remove replaced code 2020-12-22 03:33:17 +00:00
UbitUmarov
e4d602b7ec improve stringbuilder needed size estimation 2020-12-22 03:16:18 +00:00
UbitUmarov
b046b38e69 a few changes on mysql RemoveObject() 2020-12-22 03:02:44 +00:00
UbitUmarov
31d7ae0697 osReplaceAgentEnvironment change error -9 to -5 so it is identical to others 2020-12-21 19:47:40 +00:00
UbitUmarov
b4b1c4551f send GridStatus and GridStatusRSS urls to viewers in opensimextras (and grinfinfo?), for viewers that may care in future. This can be set on section GridInfoService of robust.ini or standalonecommon.ini 2020-12-18 17:18:28 +00:00
UbitUmarov
874808522f also check the url on llHTTPRequest before doing anything with garbage 2020-12-18 13:11:55 +00:00
UbitUmarov
5859862162 mantis 8836: llLoadURL, prim cannot be group owned, url must be a valid url (and include http(s)://) reduce time penalty to 1s 2020-12-18 12:57:26 +00:00
UbitUmarov
567418d7cd start JonEngines without any thread, first job enq will add it 2020-12-17 21:51:25 +00:00
UbitUmarov
1d528727db simplify mapsearchmodule, do not block client requests while one is in progress puting it back on client secondary exec thread job (this may cause issues, to see later) 2020-12-17 21:49:40 +00:00
UbitUmarov
b514bac6c2 a few changes 2020-12-17 03:35:37 +00:00
UbitUmarov
2a1e518495 update mapsearch 2020-12-16 23:56:51 +00:00
UbitUmarov
8e40eaaa23 fix RegionURI set IsLocalGrid if url has no host 2020-12-16 22:55:20 +00:00
UbitUmarov
28c43011bc changes to map search parsing (may still be bad) 2020-12-16 22:21:21 +00:00
UbitUmarov
51e69e8b4f a few more tables that may blowup on utf8mb4 and need no more than latin1 2020-12-16 01:46:11 +00:00
UbitUmarov
f7597adcfb a few changes to ossl get grid uris and name 2020-12-15 20:34:59 +00:00
Alicia Raven
a969797512 Allow estate config files to specify a specific EstateID. Defaults to 0 if not specified which uses auto increment id as current behaviour. 2020-12-15 17:05:30 +00:00
UbitUmarov
73d33aee32 a few changes to llXorBase64 and llXorBase64StringsCorrect 2020-12-13 18:30:57 +00:00
UbitUmarov
96d2ec16c4 mantis 8831: add a version of llXorBase64 a bit based on the patch. kept the other as they are so to no break opensim scripts possible based on them. Thanks CasperWarden 2020-12-13 16:53:07 +00:00
UbitUmarov
bbb42f96e9 cosmetics 2020-12-12 20:54:18 +00:00
Alicia Raven
ce9f8804b6 initial commit of experimental Estate config file (Estate.ini) allowing new simulators to create estates from ini file and bypass command prompts. (funding provided by Zetamex Network) 2020-12-12 19:21:53 +00:00
UbitUmarov
5bb21ff982 fix another texture needed for uglysky 2020-12-12 14:26:17 +00:00
UbitUmarov
59b1eca138 fix a texture needed for uglysky 2020-12-12 13:20:09 +00:00
UbitUmarov
a8b4c359d9 do not start log before knowing where to log 2020-12-12 02:48:44 +00:00
UbitUmarov
c289030858 robust: change detection of option logfile 2020-12-12 02:21:54 +00:00
UbitUmarov
bbb24b95fb oops get my trees back on map (warp3d.dll) 2020-12-11 01:19:33 +00:00
UbitUmarov
582e9250ad update warp3d.dll; let prims have a bit higher LOD 2020-12-11 00:12:21 +00:00
UbitUmarov
b830b6cc96 update warp3d.dll 2020-12-10 19:19:16 +00:00
UbitUmarov
90e441e805 mantis 8800: update warp3d.dll; fix export-map 2020-12-10 17:12:46 +00:00
UbitUmarov
25c9e66906 a few changes to lsl http headers 2020-12-09 18:04:10 +00:00
UbitUmarov
90ef92158a several changes to lsl http urlmodule; X-SecondLife-Region change is in global coords not grid, etc, mantis 8823 sould be fixed at least untly next viewers changes 2020-12-09 14:46:55 +00:00
UbitUmarov
4293ba9dd3 allow osStopSound to work on more than one prim Acording to provided LINK_* paramenter 2020-12-09 13:47:32 +00:00
UbitUmarov
489849ed8d SanitizeXml() save a few ns 2020-12-07 20:59:58 +00:00
UbitUmarov
221ec742bd SanitizeXml() go back to previus potencially heavy code, still needed, until a lighter method is created 2020-12-07 15:34:17 +00:00
UbitUmarov
5665bdb72d temporary(?) fix 2020-12-07 01:59:48 +00:00
UbitUmarov
a758fc9d33 remove duplicated call 2020-12-04 16:51:27 +00:00
UbitUmarov
2285ced73a merge LocalGridServicesConnector and LemoteGridServicesConnector into just RegionGridServicesConnector, with more clear code path and less useless modules loading. runprebuild and note the need changes in config-include files 2020-12-04 15:07:07 +00:00
UbitUmarov
3e113b4aec xmlrpc http hander: remove another temporary string 2020-12-01 13:17:54 +00:00
UbitUmarov
ff1302f8c8 update xmlrpc.dll with a fix for empty base64 case 2020-12-01 13:09:53 +00:00
UbitUmarov
4f4a48cf60 let urlmodule pool request do some work ( missing from last commit) 2020-11-29 12:35:02 +00:00
UbitUmarov
4ad892e090 reenable keepalive local override, + cosmetics 2020-11-29 12:29:18 +00:00
UbitUmarov
5552716724 xmlrpc handler, remove a useless tmp string, that can be large, and implicit convertions to utf-16 and back to utf-8, make the serielization be already utf8 2020-11-28 20:52:05 +00:00
UbitUmarov
81873a5419 handle missing entries on GridUserData 2020-11-27 01:08:10 +00:00
UbitUmarov
4f2936259d ofc i forgot a file 2020-11-26 23:54:20 +00:00
UbitUmarov
6d77f65aa3 comment out robust HandleWebSocketLoginEvents listenner and handler, Tell us if you use it, bc its candidate to total removal 2020-11-26 23:52:25 +00:00
UbitUmarov
a101d58a5c missing files 2020-11-26 12:23:40 +00:00
UbitUmarov
9d0d82ab6e split usermanagement adduser into simpler per case methods 2020-11-26 12:14:00 +00:00
UbitUmarov
fe33ace3b2 change sqlitesimulationdata locks a bit 2020-11-24 22:58:48 +00:00
UbitUmarov
d008654ae0 mantis 8819: fix ParcelPropertiesRequest bounds check 2020-11-24 21:47:23 +00:00
UbitUmarov
cf193f99cf fix lm fetch on HG 2020-11-23 09:02:23 +00:00
UbitUmarov
28f5bfeb20 mantis 8816: missed a few spots 2020-11-21 23:47:41 +00:00
UbitUmarov
d07f47a177 mantis 8816: change it again. Slash will be there or not acording to the local path 2020-11-21 23:12:37 +00:00
UbitUmarov
db94395c62 mantis 8816: change handling of uri end slash 2020-11-21 23:06:58 +00:00
UbitUmarov
42cfd8a8b2 mantis 8815: update libomv 2020-11-21 14:52:16 +00:00
UbitUmarov
502878e01d verify user service urls with same rules 2020-11-21 03:30:06 +00:00
UbitUmarov
14ee7012f4 add cache to PresenceService 2020-11-21 02:28:54 +00:00
UbitUmarov
37aa142eac fix a test 2020-11-21 00:46:34 +00:00
UbitUmarov
2fbd14722d change usermanagement user homeurl verification and local grid detection, using new GridInfo and OSHHTPHost 2020-11-21 00:36:47 +00:00
UbitUmarov
2f66a82cbe mantis 8802 and 6744: change how griduserservice handles duplicated entries, trying to use the most recent. Add cache to compensate the very low performance of the search the db engine is force to do. WARNING this is not compatible with current Diva Wifi. that will replace this code or not run at all 2020-11-21 00:15:21 +00:00
UbitUmarov
822f381145 mantis 8621: improve one error message a bit, thanks Tampa 2020-11-19 15:29:16 +00:00
UbitUmarov
c34d6adcd7 send GridURLAlias even if empty, so viewers can tell this region does support it 2020-11-17 20:59:06 +00:00
UbitUmarov
0b3ad74774 add a missing ')' on dialogs unknown owner name 2020-11-17 20:54:42 +00:00
UbitUmarov
3ef11e7dec stop looking for things in dic twice; cover all true cases from stupid DBs 2020-11-16 21:23:38 +00:00
UbitUmarov
4b929a83da mantis 8809: fix local grid agent language (hg still not supported) 2020-11-16 21:01:40 +00:00
UbitUmarov
da28aada2c avoid a null ref in lsl 2020-11-15 13:45:34 +00:00
UbitUmarov
9533217d82 change some mysql tables and columns character sets, this is close to patch at mantis 8707, but that is not correct. This should have no impact on current dbs. Many of those are now too large to do this change automaticl,, but they should. Some columns as utf8 (4 bytes in future) are pure waste of space, in fact some are used as indexes and can violate max index size. Namelly on groups V2, reason why we are forced to use utf8mb3 mostly likely to be dropped by new mysql/maria versions 2020-11-14 17:21:10 +00:00
UbitUmarov
7063013694 keep economy (currency-base-uri) a local region setting for now, to avoid some potencial issues where grid side may override local modules 2020-11-14 01:31:13 +00:00
UbitUmarov
977dc0e31f fix some typos 2020-11-13 19:57:28 +00:00
UbitUmarov
6f943ecdda simple money module: do not override economy setting if defined 2020-11-13 18:03:00 +00:00
UbitUmarov
a4f8df246d robust: look for grid name and nick on another section 2020-11-13 15:35:08 +00:00
UbitUmarov
06d669d9c7 fix oshttphost compare 2020-11-13 12:07:01 +00:00
UbitUmarov
19b26811c8 send it to regions 2020-11-12 04:27:39 +00:00
UbitUmarov
66af978208 add GatekeeperURIAlias to robust gatekeeper 2020-11-12 03:56:45 +00:00
UbitUmarov
80feaf1c41 improve some erro log information 2020-11-12 01:26:49 +00:00
UbitUmarov
4439f31b7e remove end slash from gridUrl 2020-11-12 00:40:26 +00:00
UbitUmarov
20695be8cd several changes to simulatorfeatures, special url ones. Centralize those on scene gridinfo. Do host and dns checks, etc. Grid can override local settings, but currently same old mess. Grid login and info fecth should happen before loading anything in scene, specially modules 2020-11-12 00:30:20 +00:00
UbitUmarov
ddc1083383 small changes 2020-11-10 05:49:13 +00:00
UbitUmarov
5d8378dd0b on getownername, be more concret comparing to UnknownUMM2 2020-11-10 05:32:13 +00:00
UbitUmarov
08b06ec670 lludp textures.. do not try to decode meshes and other things ( imprudence plague at LBSA) 2020-11-10 01:24:13 +00:00
UbitUmarov
99f5787878 same for inworld kicks 2020-11-09 23:30:58 +00:00
UbitUmarov
cb1faeec04 kick npcs the right way 2020-11-09 23:16:35 +00:00
UbitUmarov
8b952b7a3b mantis 8798: avoid null ref 2020-11-09 23:03:28 +00:00
UbitUmarov
0cb83154e0 mantis 8797: show group name on group owned prims.. ( code a bit dif from the patch.. thx anyways 2020-11-09 22:13:30 +00:00
UbitUmarov
0252c5fa1b another silly bug gezz 2020-11-09 20:01:07 +00:00
UbitUmarov
2dfd8de0c2 fix typo 2020-11-09 10:39:25 +00:00
UbitUmarov
f25b1283b9 llRequestAgentData: let presence cache expire or fast requestes may block eventual updates 2020-11-07 01:39:58 +00:00
UbitUmarov
c168e55589 update libomv (issue with gatheruuids) 2020-11-07 01:15:02 +00:00
UbitUmarov
81474d6959 add post displacement clip on oar load 2020-11-06 22:18:31 +00:00
UbitUmarov
c47eeb1372 need change on another place also 2020-11-06 21:40:12 +00:00
UbitUmarov
3d91ae031d make oar load default clip box Z match current simulation limit of -100 to 50000 2020-11-06 21:30:44 +00:00
UbitUmarov
197650ed0b do remove previus parcels (as known at the moment) when loading oar 2020-11-06 19:35:50 +00:00
UbitUmarov
3f07834c0c do delayed script starts on load oar 2020-11-06 19:33:34 +00:00
UbitUmarov
62b7ee96bd fix llGetLinkKey 2020-11-06 19:14:01 +00:00
UbitUmarov
9f9335bcb6 fix runprebuild.bat compile.bat creation for release mode 2020-11-04 20:32:44 +00:00
UbitUmarov
85b631bf6b fix a bug on estateinfocap, to be active again when new fs and other viewers are release with its use fixed 2020-11-04 20:04:03 +00:00
UbitUmarov
f69f0281cf add some broken assets check/log, so i don't try to fix other code using one 2020-11-03 18:45:54 +00:00
UbitUmarov
9642453f9e viewers do send broken http range start, then flag good assets as bad, another try 2020-11-03 17:56:24 +00:00
UbitUmarov
b4681b8584 try to reduce chance of viewer timeouts 2020-11-03 17:39:41 +00:00
UbitUmarov
dfe33bdafd look for GridName and gridname 2020-11-03 17:36:43 +00:00
UbitUmarov
5437fca647 viewers do send broken http range start, then flag good assets as bad 2020-11-03 15:16:09 +00:00
UbitUmarov
41171e7955 and remove it.. it colides with mono 2020-11-02 19:44:28 +00:00
UbitUmarov
5ac4132f1e updated it a bit... 2020-11-02 18:48:25 +00:00
UbitUmarov
f55e19e0bc add Mono.Security.dll that seems needed for Npgsql.dll 2020-11-02 18:41:02 +00:00
UbitUmarov
77082148ab mantis 8793: break link even if it is the script prim; adicialy standup all avatars as spec. Don't like this standup it is fundamentaly silly done on all cases, may review this later 2020-11-01 19:56:36 +00:00
UbitUmarov
2b72df84de missed one 2020-10-31 13:10:00 +00:00
UbitUmarov
1c29ea1c44 a few changed on avatar stand cases 2020-10-31 12:44:17 +00:00
UbitUmarov
adc943c6d6 remove a forgotten warning about YEngine 2020-10-31 00:31:00 +00:00
UbitUmarov
a34813cbba fix local grid assetservice on standalone.ini 2020-10-30 18:46:21 +00:00
UbitUmarov
9c1c656fe1 flotsam: fix full cached file replacement, do default assets caching with replacement on startup 2020-10-30 16:25:07 +00:00
UbitUmarov
4e23806967 clean up opensim library scripts. This are suposed to be usefaul, or at least have some didactic use 2020-10-30 16:18:32 +00:00
UbitUmarov
8320f6e972 add some bento pose animations for future firestorm and others. Courtesy of Beq Janus and authors Miro Collas and Chaser Zaks 2020-10-30 02:45:12 +00:00
UbitUmarov
6827ce35aa change asset fetch on uuidgatherer 2020-10-30 02:40:14 +00:00
UbitUmarov
1eb05d10ba add prim scale limits to OpenSimExtras simulator features, for viewers that may care.. 2020-10-29 02:31:56 +00:00
UbitUmarov
054c8aec4e bug fix: wrong parameters order 2020-10-28 22:54:24 +00:00
UbitUmarov
e22b3bfa35 mantis 8787: cleanup some references to simian on OpensimDefault.ini 2020-10-28 12:58:48 +00:00
UbitUmarov
7b106564fa in some cases store a hg asset on local grid is just waste 2020-10-28 12:12:08 +00:00
UbitUmarov
52c86e543f yeack, it may be better to use cache on the most used get 2020-10-28 10:07:03 +00:00
UbitUmarov
1f09e40756 other missing file 2020-10-28 09:56:27 +00:00
UbitUmarov
9db6109430 other missing file 2020-10-28 09:54:16 +00:00
UbitUmarov
818108bba5 missing file 2020-10-28 09:51:23 +00:00
UbitUmarov
e4a922012a change region asset connectors again. The new ini files must be used (should update automaticly). All region modes back, but testing needed, as usual. Left out automatic grid store retry, that needs better consideration (like on payed uploads). runprebuild, clearaot etc needed 2020-10-28 09:16:36 +00:00
UbitUmarov
e86bd042bb dont let webrequests keep copies of all put/post. should not, but may impact some connections like redirection 2020-10-28 00:09:32 +00:00
UbitUmarov
3d5d4333dd fix llGetLinkKey to support LINK_* constants 2020-10-26 14:26:57 +00:00
UbitUmarov
3b2ff758b1 minor change to last patch 2020-10-26 14:24:45 +00:00
StolenRuby
fa4c84feb8 Fixed undo positions for attachments
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-10-26 14:02:19 +00:00
UbitUmarov
abe7a31952 some more changes; HG standalones broken (at least) 2020-10-24 22:31:59 +01:00
UbitUmarov
7c822d3fbf fix a test 2020-10-24 18:18:24 +01:00
UbitUmarov
cdd5dba5b0 some changes; let regions have own assets connector, make the services connector one be like ther older simpler one (as 0.8x). still not good 2020-10-24 17:39:30 +01:00
UbitUmarov
3ec5d46a2f some changes Still BAD 2020-10-23 23:32:11 +01:00
UbitUmarov
b3893b9dc5 make AssetServicesConnector do HG work (HGAssetServicesConnector should no not be in used now); change HGAssetBroker to be a extended derivative of it. WARNING TESTgit push origin master possible still very broken 2020-10-23 19:43:31 +01:00
UbitUmarov
56d3e1cdc9 add TestsAssetCache using .net MemoryCache to tests only 2020-10-22 16:51:16 +01:00
UbitUmarov
5d2f27a02c remove CoreAssetCache assets cache module. Thanks to all that worked on it. Memory cache does not work well with current Garbage collect (not even .net native one) (cleanaot, if used and runprebuild) 2020-10-22 15:47:04 +01:00
UbitUmarov
acea30aa74 remove Cenome assets cache module. Thanks to all that worked on it. Memory cache does not work well with current Garbage collect (not even .net native one) 2020-10-22 15:36:32 +01:00
UbitUmarov
b299df0464 update libomv 2020-10-20 04:25:27 +01:00
UbitUmarov
3049658aaa hide --ffast-math mono option.. stay within IEEE754 2020-10-17 16:09:49 +01:00
UbitUmarov
2ac8c495ca add some aot options 2020-10-17 14:06:31 +01:00
UbitUmarov
6ba169e7ad fix typos and update opensim.sh 2020-10-17 13:43:31 +01:00
UbitUmarov
bb48f75570 add makeaot.sh and cleanaot.sh for linux suicidal player. opensim should be started with -O=all option also. Forgetting to run cleanaot when needed may cause fun smoke. (files may need the exec (-x) flag due to creation in windows) 2020-10-17 13:34:44 +01:00
UbitUmarov
9075c3fd08 mantis 8781: fix 2020-10-16 18:48:58 +01:00
UbitUmarov
b09b0e6476 make some changes 2020-10-16 17:38:36 +01:00
UbitUmarov
28ee0816d4 make some changes 2020-10-16 17:37:52 +01:00
UbitUmarov
7f1b85d9e6 make some changes 2020-10-16 17:35:29 +01:00
UbitUmarov
872d9e22df make some changes 2020-10-16 17:32:35 +01:00
Skyler Clark
c71ea23bf5 adds OpenSim.ini to the gitignore and updates build instructions
Signed-off-by: Skyler Clark <wgahnagl@protonmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-10-16 17:06:10 +01:00
UbitUmarov
ba46b5bf8b libomv 2020-10-14 20:44:17 +01:00
UbitUmarov
64464891bc fix oar assets save 2020-10-14 12:19:06 +01:00
UbitUmarov
3358c1d32d replace more llsd xml fw encoder 2020-10-13 23:17:05 +01:00
Melanie
bd92b2f8ad Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2020-10-13 17:40:34 +01:00
Melanie
4105bf350e Improve handling of slow asset requests which previously could be successful but still be ignored 2020-10-13 17:36:54 +01:00
Melanie
5b70cdef11 Trying some things to get the console client working again 2020-10-13 17:36:03 +01:00
UbitUmarov
c70904418a replace llsd xml fw encoder 2020-10-13 16:20:55 +01:00
UbitUmarov
1fc6f84790 send those limits to any viewer that may care in OpensimExtras simulator features 2020-10-12 23:33:57 +01:00
UbitUmarov
9773ff42c2 define constants for simulation height (-100,50000m) and terrain heightmap (-100,4000). No option. compile time decision. use them at ubOde 2020-10-12 23:20:37 +01:00
UbitUmarov
c7c82773d0 restore original RecyclePackets default 2020-10-12 20:59:47 +01:00
UbitUmarov
930f57b4f3 another libomv change ( yes just one file) 2020-10-12 19:28:14 +01:00
UbitUmarov
31f0290e7d coff cofff cofff 2020-10-12 19:00:10 +01:00
UbitUmarov
7a2c6a8afa update libomv (cross fingers harder) 2020-10-12 17:36:29 +01:00
UbitUmarov
7d87555288 update libomv (cross fingers) 2020-10-12 15:02:39 +01:00
UbitUmarov
3e5813a0c3 viewers do caps before knowing where they are. Tell them to take a walk and try later on 2 cases 2020-10-11 17:56:20 +01:00
UbitUmarov
511012dc50 mantis 8780: possible tmp work around 2020-10-11 17:44:09 +01:00
UbitUmarov
df42be0614 register getassets to caps and not directly to http server 2020-10-11 15:41:53 +01:00
UbitUmarov
7e99db34c8 check new agent access before creating other things 2020-10-11 10:31:14 +01:00
UbitUmarov
6e3f0a140c handle a sp null ref better 2020-10-11 06:55:35 +01:00
UbitUmarov
c6b27cc02a silly bug on llSetText exec 2020-10-11 04:00:35 +01:00
UbitUmarov
c2879f9f83 disabpe lludp packetpool 2020-10-10 20:41:12 +01:00
UbitUmarov
9c01e8b0c4 change cap eventqueue to use some of those useless changes 2020-10-10 20:29:12 +01:00
UbitUmarov
473580652b duuhhhh... 2020-10-10 19:17:59 +01:00
UbitUmarov
c7d61737fb make use of some of those on inventory caps; fix some set of sp osutf8 fields 2020-10-10 19:11:37 +01:00
UbitUmarov
8c4ef84b25 update libomv with llsd micro opt 2020-10-10 18:02:39 +01:00
UbitUmarov
1c07d0c37a stop sending parcel info totally out of time 2020-10-10 17:56:43 +01:00
UbitUmarov
d437808ba4 add INVENTORY_SETTING lsl constant; cosmetics 2020-10-09 12:42:28 +01:00
UbitUmarov
128e0be382 add GetFullGroupPowers(agentID, groupID) to groups modules. This returns the 'sum' of powers of all agent roles on that group, apply it to some OSSL (mantis 8777). It May be needed elsewhere 2020-10-09 00:20:34 +01:00
UbitUmarov
89ccd601b1 osInviteToGroup: mk sure avatar is really in same region; return value 2 if avatar is already member of the group 2020-10-08 22:24:10 +01:00
UbitUmarov
c136bcef6e osInviteToGroup: dont invite if already member (returns TRUE in this case) 2020-10-08 21:45:33 +01:00
UbitUmarov
52b16c34a2 add a little missing space 2020-10-08 21:15:02 +01:00
UbitUmarov
1acac074ec cosmetics on ossl 2020-10-08 20:55:07 +01:00
UbitUmarov
f4db2f4b93 clean up; CODE SEEMS USABLE AGAIN 2020-10-06 22:26:27 +01:00
UbitUmarov
a2268160a8 some changes 2020-10-06 20:24:05 +01:00
UbitUmarov
41c6ff0cd7 WARNING CURRENTLY BROKEN. wait for fix 2020-10-06 19:34:27 +01:00
UbitUmarov
e894b4cafc update libomv and apply necessary related changes 2020-10-06 17:29:01 +01:00
UbitUmarov
e218c2110d update script syntax 2020-10-05 20:28:33 +01:00
UbitUmarov
af9d4af50a update libomv 2020-10-04 22:29:17 +01:00
UbitUmarov
65afd3e3d9 update libomv 2020-10-04 22:03:56 +01:00
UbitUmarov
83562db1b7 yes, yes... missing file 2020-10-04 21:18:05 +01:00
UbitUmarov
b1f73603d0 and... missing file 2020-10-04 21:16:35 +01:00
UbitUmarov
794aa7a4f8 missing file 2020-10-04 21:13:26 +01:00
UbitUmarov
5e86c33c9d update libomv and consequent changes 2020-10-04 21:10:42 +01:00
UbitUmarov
4e6240f982 throttle lludp revoke permissions 2020-10-04 01:24:02 +01:00
UbitUmarov
ae79ebc48d disable coreprofiles if ProfileServiceURL is not set 2020-10-01 03:13:54 +01:00
UbitUmarov
bc1ea2ef3a cleanup 2020-10-01 02:10:32 +01:00
UbitUmarov
df29d687ae write a newline at end 2020-09-30 03:05:11 +01:00
UbitUmarov
3c3f81dfd5 duhh of course it does nothing... 2020-09-30 02:41:30 +01:00
UbitUmarov
69e12f537f test: try handle cntr-c another way 2020-09-30 02:28:40 +01:00
UbitUmarov
51c654fb70 nm, bad idea 2020-09-28 21:13:23 +01:00
UbitUmarov
03b8b6757b let profile module hold processing thread for a while 2020-09-28 20:48:14 +01:00
UbitUmarov
aa9fcf47a3 remove bad code left behind 2020-09-28 19:19:49 +01:00
UbitUmarov
194658815c a few changes to GridInfo and its use 2020-09-28 19:16:47 +01:00
UbitUmarov
fff815eef9 typos... 2020-09-26 22:58:55 +01:00
UbitUmarov
856a301649 region ini files: gatekeeper MUST be defined at Hypergrid section (or startup), not on per service entry 2020-09-26 14:33:08 +01:00
UbitUmarov
e6d14ad303 gridinfo and ossl 2020-09-26 14:25:36 +01:00
UbitUmarov
6b97367ed0 try to fix lm about on large regions, again... 2020-09-26 00:10:55 +01:00
UbitUmarov
e2a68e0369 encode parcel flag group Owned 2020-09-25 21:49:30 +01:00
UbitUmarov
77e963506b delete tabs that keep getting in 2020-09-25 21:15:16 +01:00
UbitUmarov
8b62b7d2fd on regions config make HomeURIAlias visible 2020-09-25 21:13:56 +01:00
UbitUmarov
409665c86a on regions define HomeURI only at [Hypergrid], stop having it all over, and worse overriding that, a region is only member of one grid at a time 2020-09-25 20:59:44 +01:00
UbitUmarov
b468ac3814 more on GridInfo, and inventory 2020-09-25 20:48:36 +01:00
UbitUmarov
4319f451e6 more on GridInfo, and profiles 2020-09-25 13:38:59 +01:00
UbitUmarov
25ccb2595f more on GridInfo, fix HasHGConfig 2020-09-25 11:49:48 +01:00
UbitUmarov
9734a86489 more on GridInfo 2020-09-25 11:45:02 +01:00
UbitUmarov
a2534dc378 stop using yengine math inlines, this have cast issues, just use lsl api, plus cosmetics 2020-09-25 02:38:00 +01:00
UbitUmarov
c919b07642 shutup a log and fix a small bug 2020-09-25 00:51:02 +01:00
UbitUmarov
7979028b28 replace incoerent UserAgentsService config 2020-09-24 05:01:29 +01:00
UbitUmarov
30d73f3477 use it on entitytransfer also 2020-09-24 04:08:51 +01:00
UbitUmarov
3e05e8d6b6 add HomeURI to GridInfo 2020-09-24 03:49:46 +01:00
UbitUmarov
9a6eeaeb9a cosmetics 2020-09-23 23:36:56 +01:00
UbitUmarov
354c79168b give more use to GridInfo for gatekeeper url 2020-09-23 22:21:57 +01:00
UbitUmarov
d0d1ab9f2a cosmetics 2020-09-23 21:07:07 +01:00
UbitUmarov
f1e9d5a878 let Util.GetHostFromDNS do its job if name is a ip 2020-09-23 19:52:23 +01:00
UbitUmarov
c36b9bfef6 let tests get a serverURI 2020-09-23 19:38:33 +01:00
UbitUmarov
e07ae505d3 minor cleanup 2020-09-23 19:30:24 +01:00
UbitUmarov
eb37cd5481 add a class to store and process some grid information. For now just gatekeeper url 2020-09-23 19:22:52 +01:00
UbitUmarov
d2e7c711b4 actually make yExceptionMessage and yExceptionTypeName avaiable 2020-09-21 21:40:24 +01:00
UbitUmarov
e6e4e2129b add a comment to YEngine NumThreadScriptWorkers 2020-09-21 16:25:51 +01:00
UbitUmarov
e4c7679e16 do not die tring to rez a item with a asset with uuid.Zero 2020-09-20 22:19:27 +01:00
UbitUmarov
d256b29511 rename Yengine option ScriptBasePath as ScriptEnginesPath to match Xengine 2020-09-20 03:21:43 +01:00
UbitUmarov
aefff34013 let yengine understand scriptexception 2020-09-20 01:57:22 +01:00
UbitUmarov
0877c00658 change the map image asset to be global by default, as before. Local storage breaks several things so can only be used on some cases 2020-09-19 17:47:12 +01:00
UbitUmarov
40e333d122 lose less updates from pool 2020-09-19 17:12:49 +01:00
UbitUmarov
e644212663 update some eq events encoding 2020-09-19 16:39:30 +01:00
UbitUmarov
1cea3181dc make it ugly 2020-09-19 02:30:22 +01:00
UbitUmarov
fcb349bc5e remove replaced code 2020-09-18 23:17:11 +01:00
UbitUmarov
2f82203c3b use a dedicated MinHeap for updates priority 2020-09-18 22:56:32 +01:00
UbitUmarov
d0606d5d5b add option to only store map image asset on local cache. Note this will break viewers v1 map, osGetRegionMapTexture(), etc 2020-09-17 23:16:44 +01:00
UbitUmarov
b9d97e4ee5 waste memory on a loss pool. Update resends need work. 2020-09-17 20:18:56 +01:00
UbitUmarov
8183945d5f ObjectPropertiesUpdate is now just entityupdate 2020-09-17 18:06:04 +01:00
UbitUmarov
864b14126a udp updates: remove a intermediat struct; move files around so clean solution before pull, or pull on clean folder 2020-09-17 16:42:44 +01:00
UbitUmarov
6b8338f49c fix npc userdata expire 2020-09-15 01:01:56 +01:00
UbitUmarov
9f39dc872e do not let viewers see unknown names (again) 2020-09-14 18:04:04 +01:00
UbitUmarov
b929a20045 ubOde resize a avatar without recreating it 2020-09-13 05:47:05 +01:00
UbitUmarov
4273519197 fix silly bugs on osReplaceRegionEnvironment() 2020-09-12 20:10:45 +01:00
UbitUmarov
64fea8f20c mantis 8770: let osGetSunParam(day_length) return the same as llGetDayLength() ie day length at prim location 2020-09-12 16:14:14 +01:00
UbitUmarov
7c44bb1780 update bulletXNA, just compiled for .net4.6 removing another use of .net3.5 still lost around 2020-09-11 02:39:05 +01:00
UbitUmarov
a3afc075b0 add a few test things for .net48 target 2020-09-11 00:22:07 +01:00
UbitUmarov
5a694ebbaf update prebuild 2020-09-10 23:59:16 +01:00
UbitUmarov
5e40bc3943 update prebuild 2020-09-10 23:58:21 +01:00
UbitUmarov
c0704af545 fix a bug on the new expiring things 2020-09-09 21:15:03 +01:00
UbitUmarov
a82618f6f6 oops forgot needed integer math 2020-09-09 15:59:21 +01:00
UbitUmarov
7e23c7bb00 missing file 2020-09-09 15:25:28 +01:00
UbitUmarov
719e0d1c61 make main terrain taints also a bitarray 2020-09-09 15:24:51 +01:00
UbitUmarov
8b885a4c7f change some loops/math 2020-09-08 23:49:15 +01:00
UbitUmarov
150ad80f6f on per client terrain taint control replace bad 2d bool array by a bitarray. 1d bool could be another option. bitarray uses a lot less mem but a bit more cpu, except on full set/clear, less mem is also less cpu cache pressure so lets use it, specially on linear scans on X 2020-09-08 21:58:38 +01:00
UbitUmarov
4af5a217b3 remove warning abox xassetservice obsolete, it maybe but fsaasets is not necessary the recomended replacement 2020-09-08 16:27:09 +01:00
UbitUmarov
b0f1e4f0c6 waste some memory on serialized environment caching. we could live without all that locking 2020-09-08 15:28:18 +01:00
UbitUmarov
34befa95ab change ipban module 2020-09-08 02:28:44 +01:00
UbitUmarov
5b5915de72 mantis 8768: fix the empty string case; do the llpasscollions 1 as true, others false; cosmetics 2020-09-08 01:29:22 +01:00
UbitUmarov
da09a897f6 mantis 8766: fix creators names caching 2020-09-08 01:03:17 +01:00
UbitUmarov
650e6bbe55 try reduce number of this webrequest will keep alive anf gc will possible forget to release. this higher numbers should be only relative to robuts, generic connectiosn should have a lot less. But hard to control on current code 2020-09-07 18:08:20 +01:00
UbitUmarov
649e44792b mantis 8762: my coffee was broken again 2020-09-06 16:33:07 +01:00
UbitUmarov
a12f03ece0 mantis 8762: let it be less broken 2020-09-05 19:11:15 +01:00
UbitUmarov
ec54942719 a few changes on sop collision events 2020-09-05 13:43:22 +01:00
UbitUmarov
d9d38ea226 a few changes on sp collision events 2020-09-05 03:37:13 +01:00
UbitUmarov
8852aedca4 on sp its rootprim events mask.. 2020-09-04 17:17:24 +01:00
UbitUmarov
6a5023650f a few changes on collision events 2020-09-04 16:50:04 +01:00
UbitUmarov
d1fcb9c35d filter some changed events at trigger point 2020-09-04 15:31:42 +01:00
UbitUmarov
23de4e3a82 let scriptEvents flags represent all events we have (so change to 64bit ulong) not the need to keep duplicated definitions on main framework and each script engine, namely because Xengine app domain option 2020-09-04 14:22:24 +01:00
UbitUmarov
fcc9b30c1e mantis 8767: update warp3d.dll 2020-09-03 07:37:30 +01:00
UbitUmarov
9a32266382 mantis 8757: LSL casting plague 2020-09-02 16:41:09 +01:00
UbitUmarov
c8cb8a376b ok it is GetLandObjectClippedXY 2020-09-01 21:22:06 +01:00
UbitUmarov
eae2f87cae cosmetics 2020-09-01 18:22:44 +01:00
UbitUmarov
323c0673c2 fix permissions checks on some crossings 2020-09-01 16:30:07 +01:00
UbitUmarov
a1239d2706 Yengine: avoid use of Enum.Parse 2020-08-31 18:46:10 +01:00
UbitUmarov
3c3553d5b1 Xengine: cosmetics 2020-08-31 17:37:15 +01:00
UbitUmarov
7364acf42e Xengine: change allocation of executor events mask map 2020-08-31 17:18:51 +01:00
UbitUmarov
b64e1792ff wt* remove osSetStateEvents, any script using it must just DIE 2020-08-31 15:01:26 +01:00
UbitUmarov
0abb08c6ef replace heavy Enum.HasFlag crap 2020-08-31 14:18:13 +01:00
UbitUmarov
8e2eb983e3 a few changes to last patch 2020-08-31 12:35:39 +01:00
StolenRuby
2ad56bf0aa EEP Defaults
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-08-31 11:48:26 +01:00
UbitUmarov
92e3f424cf cosmetics 2020-08-30 16:05:02 +01:00
UbitUmarov
09f074096f chnage the expire cache on remotegriduser service connector 2020-08-30 16:00:29 +01:00
UbitUmarov
97870cc1b9 a few changes on HGinventoryBroker p+lus cosmetics 2020-08-30 15:58:34 +01:00
UbitUmarov
4b91a93389 missing file 2020-08-28 23:41:34 +01:00
UbitUmarov
90bd42ddc0 cleanup 2020-08-28 01:13:17 +01:00
UbitUmarov
44b7e0c83f try reduce some inv spam re introduced recently.. but something very wrong with suitcase concept 2020-08-27 19:44:37 +01:00
UbitUmarov
5ef66d68a0 several changes to usermanagement and profiles 2020-08-27 18:31:28 +01:00
UbitUmarov
8b63182170 several changes to worldmap 2020-08-27 14:09:54 +01:00
UbitUmarov
00114d2e77 add a global expiring bad urls 2020-08-27 13:59:07 +01:00
UbitUmarov
81c84c867d update scriptsyntax 2020-08-26 21:36:08 +01:00
UbitUmarov
3c52fb3b03 update libomv 2020-08-26 21:17:53 +01:00
UbitUmarov
2bdab18135 cosmetics 2020-08-26 18:43:25 +01:00
UbitUmarov
a78eceec61 cosmetics 2020-08-26 16:39:42 +01:00
UbitUmarov
7dc50c93b8 another.. 2020-08-26 16:09:12 +01:00
UbitUmarov
088a778853 another.. 2020-08-26 15:49:43 +01:00
UbitUmarov
e6c4184680 really?? 2020-08-26 15:27:24 +01:00
UbitUmarov
cf040ab9ad replace the use of a dead end client api. We need one, but never one based on massive dictionary searchs of find basic functions (enought what c# does) and def not based on reflection 2020-08-26 15:18:33 +01:00
UbitUmarov
e7621244c1 add another thing ot iclient 2020-08-26 15:12:31 +01:00
UbitUmarov
1cbf5842a2 and another one 2020-08-26 14:25:52 +01:00
UbitUmarov
e990bb8599 fix bad paste 2020-08-26 14:23:55 +01:00
UbitUmarov
91fc8bbd80 change handling of temporary caps services 2020-08-26 14:15:35 +01:00
UbitUmarov
e9b4bca089 a bit more debug 2020-08-26 01:54:36 +01:00
UbitUmarov
51a0cb72c2 stop move to target on local tps 2020-08-25 23:29:58 +01:00
UbitUmarov
4490877284 cleanup the added debug messages 2020-08-25 23:10:57 +01:00
UbitUmarov
7d225d307b add a missing fakeid copy 2020-08-25 22:37:21 +01:00
UbitUmarov
886317b8c8 also on individual show 2020-08-25 21:44:48 +01:00
UbitUmarov
b7f731d9e9 add parcel fakeID to show land 2020-08-25 21:41:04 +01:00
UbitUmarov
06348469a0 debug other thing... 2020-08-25 21:35:35 +01:00
UbitUmarov
6705ff2d6e debug other thing 2020-08-25 21:26:25 +01:00
UbitUmarov
05be74bedc possible fix the real issue 2020-08-25 20:29:38 +01:00
UbitUmarov
9c47d7e06a add a debug message 2020-08-25 19:58:55 +01:00
UbitUmarov
3bcc313e6f cosmetics 2020-08-25 17:51:09 +01:00
UbitUmarov
12c20b2b89 change scene comms and neighbour 2020-08-25 17:35:54 +01:00
UbitUmarov
3464c6457e mantis 8755: display bad folders owner (if avaiable) but on a single message per request, not per each bad one.(please test, i don't have bad folders 2020-08-25 15:31:39 +01:00
UbitUmarov
39ab8902da add GetRegionByHandle methods 2020-08-25 15:01:55 +01:00
UbitUmarov
b6d26c89e6 let the expiring things purge be a bit more concurrent 2020-08-25 13:11:54 +01:00
UbitUmarov
0ee1e3b2d9 several changes to land handling. Landchannel.cs is just a wrrapper for landmanagementmodule, so let module be it and ignore all code on landchannel.cs, to remove one day; make parcel fakeID more a thing (it is our actual parcel ID. proper globalID cannot be sent to viewers, because HG, etc. 2020-08-24 17:36:57 +01:00
UbitUmarov
e997392ab0 of course it is broken 2020-08-23 23:21:26 +01:00
UbitUmarov
fda873da4a enable cap LandResources that was also added on last commits ( may be bad) 2020-08-23 22:53:19 +01:00
UbitUmarov
e0511240ef duhh things about scripts are for objects with scripts, not all 2020-08-23 22:46:46 +01:00
UbitUmarov
2d62c09292 create a parcel fakeID using a point actually on it 2020-08-23 21:19:14 +01:00
UbitUmarov
efa5f253f2 clip xy on parcels fake id, fix address compare, etc 2020-08-23 17:51:08 +01:00
UbitUmarov
e36619c9f5 duhhhh 2020-08-23 05:38:11 +01:00
UbitUmarov
21a34717dd let cap AttachmentResources show urls 2020-08-23 04:05:58 +01:00
UbitUmarov
c1bf650c12 remove a replaced method 2020-08-23 03:58:11 +01:00
UbitUmarov
0f50b17824 change code for urls usage. Still bad after (un)link 2020-08-23 03:54:44 +01:00
UbitUmarov
1bbc7fd6aa avoid a null ref 2020-08-23 02:14:52 +01:00
UbitUmarov
01022b2939 cosmetics 2020-08-23 02:09:56 +01:00
UbitUmarov
8fc38db13b remove a devel auxiliar string 2020-08-23 01:57:20 +01:00
UbitUmarov
9aa7f41bca add cap AttachmentResources ( no urls, memory account is per yengine mem usage) 2020-08-23 01:46:34 +01:00
UbitUmarov
2575bfc04c mantis 8753; apply patch by hand 2020-08-23 00:13:33 +01:00
UbitUmarov
16ab72a223 break the top thingies 2020-08-22 17:33:38 +01:00
StolenRuby
2f0d2db19d Top Scripts
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-08-22 12:38:35 +01:00
UbitUmarov
1661ee697d fix a typo 2020-08-21 23:21:58 +01:00
UbitUmarov
92ec1a1641 missed one spot 2020-08-21 22:33:11 +01:00
UbitUmarov
fd49254708 more changes on task inventory offers 2020-08-21 22:24:49 +01:00
UbitUmarov
a38624baab let viewer filters on inventory offer work 2020-08-21 18:44:19 +01:00
UbitUmarov
a7a63a25ca mantis 8752: let messages show up 2020-08-21 16:27:09 +01:00
UbitUmarov
0e747f6d4f mantis 8750: several changes to task inventory accept 2020-08-20 20:57:20 +01:00
UbitUmarov
7bf8d35e3b and out tests... 2020-08-20 00:14:55 +01:00
UbitUmarov
71cb7022d8 mantis 8749: viewers are stupid 2020-08-20 00:00:40 +01:00
UbitUmarov
e1ff14663a fix a log message 2020-08-19 20:51:01 +01:00
UbitUmarov
069e8a50ee stop some log abotu parcelinfo find 2020-08-19 20:16:41 +01:00
UbitUmarov
9c378a4fbd change cache on parcel info 2020-08-19 20:08:36 +01:00
UbitUmarov
612632f945 cosmetics 2020-08-19 18:07:40 +01:00
UbitUmarov
0dc925b5c4 missing copypaste 2020-08-17 23:21:51 +01:00
UbitUmarov
d82319f940 more expires; change profile requests from fifo to lifo. this should increase response on what is of current interest 2020-08-17 23:16:58 +01:00
UbitUmarov
c7d07fa40d change another expire and remove a redundant one 2020-08-17 22:53:10 +01:00
UbitUmarov
e9039648da change other expire 2020-08-17 20:10:18 +01:00
UbitUmarov
291c355185 oops 2020-08-17 19:53:38 +01:00
UbitUmarov
387f4d8681 change a timer and expire used types 2020-08-17 19:49:07 +01:00
UbitUmarov
7c1e1a15cc a few more changes on lsl notecards 2020-08-17 16:14:39 +01:00
UbitUmarov
1b9cdbbe40 let expiringcache and expiringkey also have expire update on containskey 2020-08-17 15:51:48 +01:00
UbitUmarov
6dcb4ed7a0 ok change a confusing expire renew of 0 (that does mean that cache min expire time) 2020-08-17 15:11:48 +01:00
UbitUmarov
5bafd97c69 change script notecards cache 2020-08-17 15:06:52 +01:00
UbitUmarov
8939c81297 duhhh silly change things after doing a copypaste 2020-08-17 14:49:09 +01:00
UbitUmarov
767c21b6e4 expiringcacheOS add faster expire renew on sucessfull tryget 2020-08-17 14:35:13 +01:00
UbitUmarov
262d9d30c0 oh forgot the forced sleep.. we can't have that can we.. 2020-08-17 13:23:01 +01:00
UbitUmarov
33bb55581d LSL do ImediatePost on cached note card 2020-08-17 13:07:56 +01:00
UbitUmarov
f6ffa4d191 mantis 8748: fix 2020-08-17 12:37:21 +01:00
UbitUmarov
29e42f2a25 missing bits 2020-08-16 20:04:46 +01:00
UbitUmarov
421cc0c018 change llName2Key and add llRequestUserKey (not the patch on mantis 8369, now utdated). some testing needed.. 2020-08-16 20:01:00 +01:00
UbitUmarov
15f0b1190a it is NULL_KEY const, not UUID.Zero.Tostring() calls 2020-08-16 11:08:41 +01:00
UbitUmarov
5c789466cc mantis 8746 use PrivURL with PrivPort 2020-08-16 09:37:14 +01:00
UbitUmarov
3ddaa3a9e6 change llGivemoney (like last commit, so it runs on a limited threadpool not the main one 2020-08-15 22:25:29 +01:00
UbitUmarov
4bcb3f72a1 change llTransferLindenDollars 2020-08-15 22:02:53 +01:00
UbitUmarov
b394b6ccef duhh why was i storing something to forget?? 2020-08-15 21:07:33 +01:00
UbitUmarov
690cb37767 ahh that bit! 2020-08-15 20:33:38 +01:00
UbitUmarov
7e122b885b more bits? 2020-08-15 20:12:13 +01:00
UbitUmarov
a6782f4c59 missing bit 2020-08-15 20:06:40 +01:00
UbitUmarov
15d600c08a LSL no need for Linq 2020-08-15 20:03:29 +01:00
UbitUmarov
51cb555793 first step to phase out RayCastV3: ignore it, and wait for ppl cry 2020-08-15 19:33:07 +01:00
UbitUmarov
c8be806b9a use them on LSL api 2020-08-15 18:55:52 +01:00
UbitUmarov
bbed225861 modify Dataserver request functions 2020-08-15 18:40:29 +01:00
UbitUmarov
50d1943f83 oops missed a action set 2020-08-15 18:15:09 +01:00
UbitUmarov
ad7c47ee5b make llTargetedEmail async 2020-08-15 18:00:17 +01:00
UbitUmarov
2c8e5c844a make llEmail async 2020-08-15 17:54:31 +01:00
UbitUmarov
d9bccbb7c0 LSL add some local shortcuts to world(scene) variables 2020-08-15 17:46:55 +01:00
UbitUmarov
60ba886b4c add back a lost script delay 2020-08-15 17:27:29 +01:00
UbitUmarov
403a0c9f27 change a few notecard dataserver 2020-08-15 05:15:15 +01:00
UbitUmarov
bce206e6dc change a few more 2020-08-15 04:53:30 +01:00
UbitUmarov
f1cd3aa007 change llRequestDisplayName and llGetDisplayName 2020-08-15 04:21:54 +01:00
UbitUmarov
2350bd9250 missed check 2020-08-15 04:06:58 +01:00
UbitUmarov
991b97db58 change llRequestUsername 2020-08-15 04:05:41 +01:00
UbitUmarov
657b781f2f add some comments about the async dataserver async action 2020-08-15 03:14:06 +01:00
UbitUmarov
a7e8edf104 make llRequestAgentData async 2020-08-15 02:57:23 +01:00
UbitUmarov
144d4a6326 let scripts dataserver do async code actions 2020-08-15 02:33:25 +01:00
UbitUmarov
f7ea5abd3f fix bad c&p 2020-08-14 23:19:38 +01:00
UbitUmarov
05c3bd4b09 change llRequestAgentData caching 2020-08-14 22:56:57 +01:00
UbitUmarov
e054386731 change show users again 2020-08-14 21:23:04 +01:00
UbitUmarov
54ae8d7c5e simplify RegionInfoCache 2020-08-14 02:43:22 +01:00
UbitUmarov
1207f61f79 change tp callback condition 2020-08-14 02:37:07 +01:00
UbitUmarov
a049e37952 go back using File.Exists on flotsam 2020-08-14 01:49:58 +01:00
UbitUmarov
fe28d6b43f change UserAccountCache 2020-08-13 01:01:32 +01:00
UbitUmarov
af9bd993bb more (almost) useless changes on the used expiring thing 2020-08-11 15:33:41 +01:00
UbitUmarov
03a8fdd4e6 change WorldMap module cache, also don't load 2 on HG 2020-08-10 23:54:23 +01:00
UbitUmarov
fc562cbb40 dont load 2 EntityTransfer modules on HG 2020-08-10 21:54:41 +01:00
UbitUmarov
e6acc57e0b a few changes on (HG)EntityTransfer plus a few use of ExpiringcacheOS 2020-08-10 20:50:21 +01:00
UbitUmarov
3043cfd5fb make expiringcacheOS a more direct replacement of the libomv 2020-08-10 16:16:08 +01:00
UbitUmarov
d74a701870 use expiringkey on flotsam negativecache 2020-08-10 16:02:22 +01:00
UbitUmarov
3288b13977 missing file 2020-08-10 14:47:59 +01:00
UbitUmarov
ddf6d26b11 changes on HGInventoryBroker 2020-08-10 14:43:42 +01:00
UbitUmarov
438fc16aee changes on expiringkey, add expiringcacheOS, alternative to libomv on (no slide expire option) 2020-08-10 14:29:13 +01:00
UbitUmarov
2476d711c4 go back to events with wrong signatures, at least while they still work 2020-08-09 17:57:32 +01:00
UbitUmarov
8d0ef07de8 some changes to getassets module and handler 2020-08-09 06:13:35 +01:00
UbitUmarov
a2fe315d94 cosmetics 2020-08-09 01:37:54 +01:00
UbitUmarov
592b94d142 some changes on Dispose 2020-08-09 00:20:50 +01:00
UbitUmarov
996176b125 a few more 'events' 2020-08-08 19:47:08 +01:00
UbitUmarov
8a7913220e missing c&p ... 2020-08-08 18:32:32 +01:00
UbitUmarov
cd5ac2eae9 some cleanup to last patch from Bill Blight and Vincent (mantis 8738) 2020-08-08 18:27:45 +01:00
Vincent Sylvester
4eee476423 osSetParcelMusicURL
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-08-08 18:16:15 +01:00
UbitUmarov
eeef096e94 better a silent return if condition to send creator fails 2020-08-08 17:48:58 +01:00
UbitUmarov
9a2cf15a2e duhh check for non mod is basicly useless 2020-08-08 17:44:17 +01:00
UbitUmarov
baf94f1af5 several changes to llTargetedEmail 2020-08-08 17:37:48 +01:00
StolenRuby
d022891cc1 Added llTargetedEmail
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2020-08-08 15:50:03 +01:00
UbitUmarov
329b919361 try parse url also on llParcelMediaCommandList 2020-08-08 15:46:59 +01:00
UbitUmarov
946423aa2a on parcel set music or media url, at least check it can be parsed as a url 2020-08-08 13:55:19 +01:00
UbitUmarov
a90b1efc7e cosmetics 2020-08-08 00:23:58 +01:00
UbitUmarov
5413e19a5c stop calling events to things that are not events (just a little few) 2020-08-08 00:06:49 +01:00
UbitUmarov
197877b450 unused var 2020-08-07 22:19:52 +01:00
UbitUmarov
fb54ca39d1 cosmetics ( i hope) 2020-08-07 22:10:53 +01:00
UbitUmarov
af3581ba2e fix sqlite 2020-08-07 19:20:14 +01:00
UbitUmarov
6a2058e0ac there is no prim Omega, we call it angular velocity 2020-08-07 18:54:23 +01:00
UbitUmarov
1c53887b5b cosmetics 2020-08-07 18:23:06 +01:00
UbitUmarov
c25d881ebd make sceneobjectpart inherit EntityBase 2020-08-07 18:13:41 +01:00
UbitUmarov
3af36ca26f don't let backup kill script targets 2020-08-06 20:24:29 +01:00
UbitUmarov
b18f1a6a56 cosmetics on newclient, etc 2020-08-05 18:30:59 +01:00
UbitUmarov
a45420cf34 cosmetics on newclient, etc 2020-08-05 17:48:45 +01:00
UbitUmarov
726fc92a2b create selected: avoid a first extra (wrong) packet on create 2020-08-04 21:28:37 +01:00
UbitUmarov
16dc3ee280 minor change on create selected 2020-08-04 20:58:44 +01:00
UbitUmarov
364cf699fb remove forgotten unused variables 2020-08-03 14:03:18 +01:00
UbitUmarov
71e293c925 remove automatic code version detection from old svn repos 2020-08-03 13:58:45 +01:00
UbitUmarov
7c4285511f change show circuits display 2020-08-03 13:04:16 +01:00
UbitUmarov
cda415b8df don't sell objects not for sale 2020-08-01 18:07:58 +01:00
UbitUmarov
fab0748a54 don't sell objects not for sale 2020-08-01 17:53:32 +01:00
UbitUmarov
4f00fb2659 flotsam: minor log message change 2020-07-30 21:18:58 +01:00
UbitUmarov
87b55a0627 flotsam: still bad 2020-07-30 21:14:15 +01:00
UbitUmarov
3b06891252 dont break asset cache folders spread more than needed 2020-07-30 18:10:06 +01:00
UbitUmarov
111c741f1b flotsam: change the changes 2020-07-30 01:40:54 +01:00
UbitUmarov
1c37f357b3 flotsam: more changes 2020-07-30 01:39:04 +01:00
UbitUmarov
c19a0cc21f flotsam: deeper changes on files expire 2020-07-30 00:02:02 +01:00
UbitUmarov
c575c211f9 flotsam: slower... 2020-07-28 21:01:45 +01:00
UbitUmarov
bd2476c61e flotsam: slow it a lot more, make some debug log visible 2020-07-28 04:26:13 +01:00
UbitUmarov
d52b794828 flotsam add a cooldown on files expire/deletes also 2020-07-28 02:57:41 +01:00
UbitUmarov
cbc8974245 duuhhhh what was in my coffe ? 2020-07-27 18:17:09 +01:00
UbitUmarov
e2982fbadc make clear that MaxRegionsViewDistance can be set to zero, disabling nearby regions visibility and crossings 2020-07-27 18:05:38 +01:00
UbitUmarov
c4a0b8fa3f fix the option name on the ini file 2020-07-27 16:39:40 +01:00
UbitUmarov
be5c2bb212 Xengine: remove option CompactMemOnLoad, that wasn't that good; add option AttachmentsDomainLoading to allow attachments to load on own appdomain even if AppDomainLoading is false. Scripts will be slower, use more memory but will be disposed on avatar leave, if gc is in good mood. This may be usefull on regions with a lot of traffic, sure use Yengine even better, 2020-07-27 16:13:09 +01:00
UbitUmarov
0c716cbd73 remove async await no longer used 2020-07-24 19:24:34 +01:00
UbitUmarov
e08ca7402c reduce default http keepalive to just 30s because to viewers connections flood. 2020-07-24 19:19:16 +01:00
UbitUmarov
d9a680703f cosmetics on http server 2020-07-24 17:12:38 +01:00
UbitUmarov
e0aff5e640 avoid some null refs 2020-07-24 13:24:55 +01:00
UbitUmarov
bb56157c92 remove a forgotten gc collect on flotsam cache 2020-07-23 23:11:59 +01:00
UbitUmarov
6fafb7462d avoid ethernal references 2020-07-23 19:39:45 +01:00
UbitUmarov
c077cfdd78 bad c&p 2020-07-23 19:08:25 +01:00
UbitUmarov
c2af3a5474 avoid ethernal references 2020-07-23 19:04:56 +01:00
UbitUmarov
25582af3dc lludpclient: use jobengine again, keeping less ethernal references 2020-07-23 18:35:34 +01:00
UbitUmarov
03e3078a9f add fixed skys to opensim library 2020-07-21 18:17:00 +01:00
UbitUmarov
6e15cf41a4 fix new sky ambient color; Rainbow texture with retouch fro AI Austin (red side gradient) 2020-07-21 17:38:11 +01:00
UbitUmarov
53b9f87da6 change defauld sky cloud D parameter 2020-07-19 21:50:56 +01:00
UbitUmarov
baa95b8707 add/change some assets 2020-07-19 10:45:02 +01:00
UbitUmarov
730c864df8 add another asset. This may not be that good still :( 2020-07-16 23:27:03 +01:00
UbitUmarov
ce92ee1057 cache bad folders requests for 30s. Suitcase can induce a ton of this, and viewers keep requesting 2020-07-16 18:23:17 +01:00
UbitUmarov
7a55f82f74 add a expire cache for simple items that can be a stored on a dictionary key, not value 2020-07-16 18:17:04 +01:00
UbitUmarov
1f822c6077 allow the use of Sky or water from a asset, not just full daycycle. This may need more work 2020-07-15 22:56:09 +01:00
UbitUmarov
f7104a66a5 change parcel env group power check to only parcel environment modify 2020-07-15 22:52:47 +01:00
UbitUmarov
4176e1491e missing file 2020-07-15 19:42:40 +01:00
UbitUmarov
4bc74139a4 dispose prematurely discon sockets 2020-07-15 19:15:11 +01:00
UbitUmarov
402186844c cosmetics 2020-07-15 19:13:22 +01:00
UbitUmarov
6a27f3fb20 useless changes 2020-07-15 05:15:32 +01:00
UbitUmarov
6c5bf4ed25 useless cosmetics 2020-07-15 01:40:53 +01:00
UbitUmarov
f32c0ead05 avoid c# fun things, plus cosmetics 2020-07-14 17:54:58 +01:00
UbitUmarov
b2068fd39f give up calling gc.collect on flotsamcache. Did nothing visible and has negative side effects 2020-07-13 23:26:09 +01:00
UbitUmarov
ba972b50ed disable console command restart, that currently will just break everything ( there is also the restart module that will do the same if used ) 2020-07-13 21:35:50 +01:00
UbitUmarov
fe7d9625aa cosmetics 2020-07-13 06:16:11 +01:00
UbitUmarov
6ba5b78851 check local grid before doing hg fetch asset metadata 2020-07-11 20:48:50 +01:00
UbitUmarov
541cb15751 fix a bug on flotsam getfilename 2020-07-11 20:03:31 +01:00
UbitUmarov
ebf5b69283 mantis 8725: increase channeldigger smooth strength, tanks Datapanic 2020-07-10 20:14:14 +01:00
UbitUmarov
82ccf57533 take some asset classes out of ViewerEnvironment.cs to own files 2020-07-10 19:54:40 +01:00
UbitUmarov
fe5e6d4189 avoid a null ref during shutdown (one of them..) 2020-07-10 19:35:39 +01:00
UbitUmarov
01b4f83421 change the 4 fixed skys for eep viewers again (sorry). This also fixes the issue of viewers not showing the selected fixed sky. Clear viewer cache. On regions use fcache deletedefaultassets so updated grid ones are used. In alternative use fcache cachedefaultassets to override all default assets by the ones on this commit. Note that this hides the grid ones, and this is lost if you clear the region asset cache 2020-07-10 00:12:36 +01:00
UbitUmarov
f334c1206f change Midday asset (uuid 6c83e853-e7f8-cad7-8ee6-5f31c453721c) fixing its water. eep viewers cache needs to be clear, region asset cache needs this entry removed (comand fcache deletedefaultassets will remove default assets from region cache, forcing reload from grid). Normal robust asset services should update it grid side. Otherwise, if already present, you will need to change directly on db 2020-07-09 18:40:48 +01:00
UbitUmarov
107ece1ce0 change default (in code) waterFogDensity 2020-07-09 17:38:31 +01:00
UbitUmarov
af6fa37cc2 mantis 8675: flotsam cache only log missing files if log level >= 2 (thanks mewtwo0641 ) this log will include things that may not even be assets due to how gatherer works; change a bit filename composition 2020-07-09 16:27:11 +01:00
UbitUmarov
28fcbc65f9 add GC.collect to flotsam cache expire. This is ugly but so is GC 2020-07-07 17:35:27 +01:00
UbitUmarov
e5c2bd505c fix a bug on region eep env set permission 2020-06-30 20:23:51 +01:00
UbitUmarov
5b596bb29e update script syntax 2020-06-30 13:29:42 +01:00
UbitUmarov
c4f05016d7 of course merge did messup libomv 2020-06-29 01:30:40 +01:00
UbitUmarov
fb35f31078 fix the merge 2020-06-29 01:29:58 +01:00
UbitUmarov
7cf329c846 Merge branch 'master' into uglysky
# Conflicts:
#	OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
#	bin/OpenMetaverse.Rendering.Meshmerizer.dll
#	bin/OpenMetaverse.StructuredData.dll
#	bin/OpenMetaverse.dll
#	bin/OpenMetaverseTypes.dll
2020-06-29 01:28:33 +01:00
UbitUmarov
1c4300ff91 fix a flag name 2020-06-29 01:16:12 +01:00
UbitUmarov
34fa6abc00 do not trust ms documentation about inner stream dispose 2020-06-29 01:03:00 +01:00
UbitUmarov
d7fb822533 Merge branch 'master' into uglysky 2020-06-27 13:34:49 +01:00
UbitUmarov
16cfb3deab mantis 8717: fix local heap use account (will automatlic recompile scripts) 2020-06-27 13:33:11 +01:00
UbitUmarov
27a81d4909 minor moon rotation change 2020-06-27 13:16:28 +01:00
UbitUmarov
a568b759bc sunphase depends on the env where av is or has 2020-06-26 11:29:31 +01:00
UbitUmarov
71d8bcd90c missed other 2020-06-25 21:47:57 +01:00
UbitUmarov
86bd9ca255 missing changed test files 2020-06-25 21:24:51 +01:00
UbitUmarov
e2ffc17d1f fix sqlite region migrations 2020-06-25 17:44:23 +01:00
UbitUmarov
73754670ca small change on wl converter 2020-06-25 17:20:56 +01:00
UbitUmarov
b7750e52d6 lang env on PGSQL 2020-06-24 11:36:34 +01:00
UbitUmarov
63ae8a09c6 removed the disabled region settings from tests 2020-06-24 08:18:50 +01:00
UbitUmarov
768f506a23 work around sunlight_color mess 2020-06-23 16:07:25 +01:00
UbitUmarov
60da45b715 lang env on sqlite 2020-06-23 14:28:34 +01:00
UbitUmarov
1d42d8ab6e still not good, add more spaghetti 2020-06-22 18:51:10 +01:00
UbitUmarov
f3eb71113e still not good, add more spaghetti 2020-06-22 18:16:48 +01:00
UbitUmarov
7b3ac662dc on load, store the env via the module, so it is stored. This api is still a bit incoerent 2020-06-22 16:47:20 +01:00
UbitUmarov
16c18c0855 actually just go back to extension settings.bin. Actual name it totally irrelevant, as long it is unique 2020-06-22 16:27:21 +01:00
UbitUmarov
eec92454b0 define again asset file extention settings.bin for bw comp 2020-06-22 16:23:49 +01:00
UbitUmarov
8fe2cd6c46 save/load environments to/from oars 2020-06-22 15:46:39 +01:00
UbitUmarov
7b77609537 shut up HG STATUS NOTIFIER 2020-06-21 17:09:33 +01:00
UbitUmarov
7da23b6714 missing files 2020-06-21 14:59:20 +01:00
UbitUmarov
53b0ee242d add a 3 to 1 daycycle and make it the default 2020-06-21 14:27:24 +01:00
UbitUmarov
5b87347476 and add some untested ossl 2020-06-21 12:41:10 +01:00
UbitUmarov
e04af236f2 forced still bad 2020-06-21 02:56:20 +01:00
UbitUmarov
29bf9522e2 forced still bad 2020-06-21 02:31:57 +01:00
UbitUmarov
bcacd2ff21 cancel forced env on make child agent 2020-06-21 01:46:36 +01:00
UbitUmarov
5b56a09cb2 some fixes on env protocol, forced env, etc 2020-06-21 01:41:14 +01:00
UbitUmarov
17e7e9b354 enable threat check on the new ossl method 2020-06-19 21:17:26 +01:00
UbitUmarov
edf93abdbc try adding a clear init 2020-06-19 20:06:59 +01:00
UbitUmarov
e3ecf0ddbe add LSL_Integer osReplaceAgentEnvironment(LSL_Key agentkey, LSL_Integer transition, LSL_String environment). note this is a hack, we cant do the ll* one 2020-06-19 19:55:40 +01:00
UbitUmarov
d322248fd1 fix send parcel env version 2020-06-19 02:06:58 +01:00
UbitUmarov
dd2495be9d remove dead config options 2020-06-18 16:52:45 +01:00
UbitUmarov
1b870131d4 give/use the new group power 2020-06-18 14:33:14 +01:00
UbitUmarov
362025be38 update libomv 2020-06-18 14:23:24 +01:00
UbitUmarov
3c8b4423b1 missing file 2020-06-18 13:49:46 +01:00
UbitUmarov
cca383b452 more to go, fix lsl funtions for parcels env 2020-06-18 13:47:34 +01:00
UbitUmarov
f708b413a1 more to go 2020-06-18 13:18:08 +01:00
UbitUmarov
6cb2cb40cc a ton more to go 2020-06-18 12:16:00 +01:00
UbitUmarov
8f79439558 a ton more to go 2020-06-18 12:11:36 +01:00
UbitUmarov
44c90bf294 misspell all across the board 2020-06-18 12:01:53 +01:00
UbitUmarov
104f7f0eb2 store parcel uglysky on mysql region db (others one day..) 2020-06-18 01:36:01 +01:00
UbitUmarov
369a2e1453 clear parcels uglysky on clearing override flag 2020-06-17 21:08:52 +01:00
UbitUmarov
e7807d4359 missing files 2020-06-17 16:12:24 +01:00
UbitUmarov
e538628dec 2first dirty version and non persistent parcel uglysky 2020-06-17 15:49:13 +01:00
UbitUmarov
7a9e03876a block some region/estate settings no longer avaiable 2020-06-17 12:34:38 +01:00
UbitUmarov
24689f064c disable cap EstateChangeInfo, currently broken on viewers 2020-06-17 11:46:56 +01:00
UbitUmarov
46dce3cedb speeup time update a bit ( this will be a conf option) 2020-06-16 16:12:14 +01:00
UbitUmarov
70f867a518 yeack, revert that... for now we do need to use diferent notification methods 2020-06-16 15:27:43 +01:00
UbitUmarov
24a0f0f6da send event message WindlightRefresh for all viewers 2020-06-16 13:47:44 +01:00
UbitUmarov
833ae02121 update libomv 2020-06-16 04:18:14 +01:00
UbitUmarov
00b2837d30 fix wl lightnorm 2020-06-16 01:58:08 +01:00
UbitUmarov
9ae867abd3 missing file 2020-06-15 04:06:24 +01:00
UbitUmarov
4329f5962a stop sending sun direction, recent viewers should not need it, and it costs cpu 2020-06-15 04:03:06 +01:00
UbitUmarov
b3ce8e9fc7 big numbers need more bits.. 2020-06-14 21:41:50 +01:00
UbitUmarov
3a5d5fd50e store as llsd notation on region db, plus a few more changes 2020-06-14 20:45:09 +01:00
UbitUmarov
dfa69b1869 add some assets 2020-06-14 01:18:59 +01:00
UbitUmarov
d1c78564bb Merge branch 'master' into uglysky 2020-06-14 00:01:38 +01:00
UbitUmarov
d7089bcff2 mantis 8715: fix peer http port. thanks GuduleLapointe 2020-06-13 23:59:55 +01:00
UbitUmarov
05dc8594f0 corner cases.. 2020-06-13 19:06:17 +01:00
UbitUmarov
1980c01eb8 change legacy altitudes 2020-06-13 18:08:48 +01:00
UbitUmarov
9a18678fec and of course i missed a file.. 2020-06-13 15:51:17 +01:00
UbitUmarov
b37141182a more on SendViewerTime() 2020-06-13 15:48:35 +01:00
UbitUmarov
3bf0f6c407 do not display 0:xx:xx PM 2020-06-12 20:02:55 +01:00
UbitUmarov
e404d671c8 better keep some things sorted 2020-06-12 10:16:59 +01:00
UbitUmarov
d1ecccfaca add some ossl 2020-06-11 19:55:12 +01:00
UbitUmarov
e407f69b2c add other env time function 2020-06-11 19:52:59 +01:00
UbitUmarov
e8b9735f95 add some lsl functions 2020-06-11 17:12:22 +01:00
UbitUmarov
02ccbd0bbd some more changes; add some interface functions 2020-06-11 17:08:39 +01:00
UbitUmarov
c6fcc33e49 a few more changes on sun position 2020-06-11 06:08:21 +01:00
UbitUmarov
13ed40d9f6 replace sun module 2020-06-11 00:01:43 +01:00
UbitUmarov
9ce70be5ce env asset can be any llsd type 2020-06-10 20:32:30 +01:00
UbitUmarov
2179aa14e0 Merge branch 'master' into uglysky 2020-06-10 20:21:07 +01:00
UbitUmarov
efb2b67456 update libomv 2020-06-10 20:19:48 +01:00
UbitUmarov
fa0a87f1c0 Merge branch 'master' into uglysky 2020-06-10 12:37:40 +01:00
UbitUmarov
a61b5d5d38 revert some changes to groups V2 that will break external modules, with no special gain 2020-06-10 12:36:10 +01:00
UbitUmarov
8d2b502393 missing file 2020-06-10 09:37:28 +01:00
UbitUmarov
e2be90caaf replace lightshare early work 2020-06-10 09:26:55 +01:00
UbitUmarov
0d76635113 do store a new flag on region db 2020-06-09 19:44:57 +01:00
UbitUmarov
bde4354c15 some changes on viewer caps detection 2020-06-09 18:43:26 +01:00
UbitUmarov
fa0044fb6c webutil remove some not that usefull timing logs, plust some cosmetics 2020-06-09 13:39:30 +01:00
UbitUmarov
f4dfe2159c xinventory connector, remove a garbage dictionary copy. remove naive retry option 2020-06-09 13:32:42 +01:00
UbitUmarov
444a6b707b also allow purge/delete of LostAndFound folder, or we can not clean it with recent viewers 2020-06-09 04:20:18 +01:00
UbitUmarov
5b338fb31a fix a typo 2020-06-09 03:11:05 +01:00
UbitUmarov
e1b234d9d0 change show uptime to 24hour format 2020-06-09 02:20:35 +01:00
UbitUmarov
d3cb210080 apply similar changes to groups V2 2020-06-09 01:03:27 +01:00
UbitUmarov
351235f78e XmlRpcGroup: minor change 2020-06-09 00:53:03 +01:00
UbitUmarov
9c55c5bdb2 XmlRpcGroup: fix groupNoticesEnabled check 2020-06-09 00:04:01 +01:00
UbitUmarov
1a57abebfc XmlRpcGroup: try to improve notices attachments 2020-06-08 23:17:41 +01:00
UbitUmarov
775420c46a set object select on demand, not when it is created 2020-06-05 01:57:17 +01:00
UbitUmarov
b440a9534d AgentCircuitManager: always remove possible old one on add 2020-06-04 20:19:05 +01:00
UbitUmarov
38fc68ac0c some changes to AgentCircuitManager 2020-06-04 19:58:07 +01:00
UbitUmarov
7ef69edf33 flotsam: also expire weakreferences 2020-06-04 19:52:34 +01:00
UbitUmarov
7a07731371 on simple cases no need to parse at all 2020-06-04 02:50:39 +01:00
UbitUmarov
84a3ff37ab don't load a full xml doc when we just want a single forward parse 2020-06-04 02:37:27 +01:00
UbitUmarov
301f28cfd4 add some heap variation to floatsam optional cache expire log 2020-06-03 14:34:11 +01:00
UbitUmarov
2efa53af52 also show total number of a avatar prims on attachments show 2020-06-03 01:19:42 +01:00
UbitUmarov
0a22bde6d1 replace a clear attachments by a full delete 2020-06-03 00:36:03 +01:00
UbitUmarov
3188db7041 force Yengine scripts recompile 2020-06-02 22:18:28 +01:00
UbitUmarov
06bdfc48d0 move the ToUpper to where it belongs 2020-06-02 18:25:13 +01:00
UbitUmarov
239c07ed9d oops ToUpper is needed on default animation names 2020-06-02 18:17:53 +01:00
UbitUmarov
8cebc84de7 let objects use default animations 2020-06-02 18:05:22 +01:00
UbitUmarov
fde3727453 avoid null refs on part inventory, that can happen if only using default animations names for example 2020-06-02 17:02:42 +01:00
UbitUmarov
9b09bd255c change osNpcSaveAppearance to save huds by default like before, so its coerent with past and the other save app methods 2020-06-01 21:31:18 +01:00
UbitUmarov
9bd5310fe8 expose the option to save HUDs into notecard on the API 2020-06-01 21:05:57 +01:00
UbitUmarov
873b3b0af6 do not store HUDs on appearence notecards 2020-06-01 19:07:49 +01:00
UbitUmarov
190acf093a finally enable cap GetAsset(ViewerAssets) by default. Note that users with FS6.0.x will have issues. They need to upgrade 2020-06-01 18:12:32 +01:00
UbitUmarov
43094592d5 show number of prims on attachments show command 2020-06-01 02:02:00 +01:00
UbitUmarov
e0c49c42e3 and more changes on uuid gatherer and libomv 2020-05-31 14:21:50 +01:00
UbitUmarov
41d9441512 fix typo 2020-05-31 02:17:51 +01:00
UbitUmarov
f0581ff1ff and more changes on uuid gatherer and libomv 2020-05-31 01:35:03 +01:00
UbitUmarov
8ac70b6155 and more changes on uuid gatherer and libomv 2020-05-30 21:34:13 +01:00
UbitUmarov
42b75021b6 more changes on uuid gatherer 2020-05-30 19:44:11 +01:00
UbitUmarov
5ac1fff43e update libomv 2020-05-30 19:43:41 +01:00
UbitUmarov
b541de034c make some limit use of new libomv things 2020-05-30 15:51:01 +01:00
UbitUmarov
7b8db526b3 update libomv 2020-05-30 15:28:44 +01:00
UbitUmarov
9896224605 agent preferences needs to work without backend storage 2020-05-30 14:13:07 +01:00
UbitUmarov
8f39405380 err ok not so fast 2020-05-27 00:18:32 +01:00
UbitUmarov
563d5d30ee some more suport for a new inventory and asset type 2020-05-27 00:04:19 +01:00
UbitUmarov
182b266ec4 avoid potencial null ref 2020-05-26 15:16:37 +01:00
UbitUmarov
d2dbe3f4d0 Yeackk bad bad typo 2020-05-26 14:46:15 +01:00
UbitUmarov
8a9ebe48ce mantis 8708: dont bother updating something abotu to be deleted ( and that was also wrong) 2020-05-26 13:23:06 +01:00
UbitUmarov
0a48da85a3 SOP to xml: don't waste space with some unset optional parameters. 2020-05-26 12:48:08 +01:00
UbitUmarov
d460a3fc86 missing file 2020-05-25 14:50:10 +01:00
UbitUmarov
1c5b9e5af8 missing file 2020-05-25 14:45:53 +01:00
UbitUmarov
66eb8a2c2e let engines Suspend and resume scripts return false if script not on that engine 2020-05-25 14:41:59 +01:00
UbitUmarov
5f52de2578 mantis 8706: avoid spurius logs on Yengine during object delete 2020-05-24 15:04:44 +01:00
UbitUmarov
cc4e14a88d add missing ';' on mysql connection strings 2020-05-23 17:06:19 +01:00
UbitUmarov
b598573f41 fix DataSnapShot 2020-05-22 16:55:20 +01:00
UbitUmarov
4679ede2f2 missing file 2020-05-22 14:03:28 +01:00
UbitUmarov
f326cc8901 reduce garbage on WebFetchInvDesc 2020-05-22 14:00:12 +01:00
UbitUmarov
3c33d5c448 change nullterm arg default true 2020-05-22 00:55:54 +01:00
UbitUmarov
86d8f9963c make a bit more use of it 2020-05-22 00:29:01 +01:00
UbitUmarov
8d8ead9776 add own version of utf8 getbytes. More recent .net versions (core?) do have similar, but not want got there now, besides only similar.. 2020-05-21 22:41:15 +01:00
UbitUmarov
6e0d82f584 add 2 minor speedups on allow parcel owner more restrive checks 2020-05-21 21:55:23 +01:00
UbitUmarov
35b0b77656 update libomv 2020-05-20 13:51:42 +01:00
UbitUmarov
0bfacb7892 change hg link request log message 2020-05-20 03:02:01 +01:00
UbitUmarov
fffac7d531 mantis 8704: fix issues on YEngine 2020-05-20 00:35:51 +01:00
UbitUmarov
5167bd097b mantis 8250: a few more changes 2020-05-19 21:50:21 +01:00
UbitUmarov
337832ecbe mantis 8250: if flying, stay flying 2020-05-19 17:01:32 +01:00
UbitUmarov
822fea4a99 missing file, of course 2020-05-19 16:05:43 +01:00
UbitUmarov
aca62392ac mantis 8250: make same changes to avatar move to target (still no new OSSL) 2020-05-19 15:59:53 +01:00
UbitUmarov
28b22a4fc1 revert the use of direct data on xml decode, for now 2020-05-18 04:31:11 +01:00
UbitUmarov
aca5728ab2 try to work around missing BOM 2020-05-18 02:37:03 +01:00
UbitUmarov
e308ab8843 .net xml things don't like null terminated strings 2020-05-18 01:12:40 +01:00
UbitUmarov
9ecee558b5 whatever... 2020-05-18 00:28:24 +01:00
UbitUmarov
4fa8e20aab add more cooldown to flotsam cache files expire 2020-05-18 00:20:28 +01:00
UbitUmarov
fe72b54652 cosmetics 2020-05-17 17:16:29 +01:00
UbitUmarov
9ce52ed2fc cosmetics 2020-05-16 03:01:44 +01:00
UbitUmarov
dc5a0244fc cosmetics 2020-05-16 02:22:01 +01:00
UbitUmarov
cfe1285869 missing files 2020-05-16 02:14:13 +01:00
UbitUmarov
65ca238cd7 do unpack appearence cacheitems on tps 2020-05-16 01:52:53 +01:00
UbitUmarov
baf5c61387 simplify GruntWork on getassets (needs more) 2020-05-16 01:16:19 +01:00
UbitUmarov
48892ad8a7 timestamp http requests 2020-05-15 23:40:19 +01:00
UbitUmarov
7098091616 avoid null ref 2020-05-15 18:17:13 +01:00
UbitUmarov
c0597e278b update libomv 2020-05-15 15:12:34 +01:00
UbitUmarov
79bb22eaf6 fix typo 2020-05-15 15:11:06 +01:00
UbitUmarov
214cf5d60b llsdXml: do direct base64 encode 2020-05-15 14:41:38 +01:00
UbitUmarov
5848d3a6bb make scenepresence IDisposable 2020-05-14 13:36:27 +01:00
UbitUmarov
67bc086782 add sog TemporaryInstance flag 2020-05-14 12:51:55 +01:00
UbitUmarov
8b77162020 make sog, sop and sop inventory IDisposable 2020-05-14 12:02:46 +01:00
UbitUmarov
dd55a3d19c fix a bug on part inventory locking 2020-05-14 11:51:57 +01:00
UbitUmarov
af1e20d054 missing file 2020-05-13 14:58:26 +01:00
UbitUmarov
4c7107dfda cosmetics 2020-05-13 14:51:05 +01:00
UbitUmarov
f15c6be20c update libomv 2020-05-13 13:55:13 +01:00
UbitUmarov
a2c7a13065 silly bug 2020-05-12 20:42:31 +01:00
UbitUmarov
51bc19f1ab no need to clone something Idisposable when we just want to see values 2020-05-12 18:58:07 +01:00
UbitUmarov
d613287a77 mk TaskInventoryDictionary IDisposable 2020-05-12 18:52:33 +01:00
UbitUmarov
c63fabe054 well and it does get all assets, grrr 2020-05-12 04:19:45 +01:00
UbitUmarov
48df8869e8 duuhh windows does not update lastaccesstime 2020-05-12 03:03:31 +01:00
UbitUmarov
6a4564869b flotsam file touch before expire: gatherer.GatherAll already touchs and tries to fecth all assets. This is nasty to use anyway.. avoid it 2020-05-12 00:56:47 +01:00
UbitUmarov
7c0b3387dd give up on simplehandler for root default get for now 2020-05-11 23:28:59 +01:00
UbitUmarov
c40b297fc7 (TEST) add a default root uri GET handler. this may be usefull for some cases. 2020-05-11 23:07:29 +01:00
UbitUmarov
4bf4c76a64 cosmetics 2020-05-11 19:35:13 +01:00
UbitUmarov
8da733c485 test xbakes async/await store 2020-05-11 19:06:09 +01:00
UbitUmarov
713c222ec8 remove some redundancy 2020-05-11 15:12:21 +01:00
UbitUmarov
7f3bb9267a oops a bad end slash 2020-05-11 13:38:59 +01:00
UbitUmarov
6d92b75452 more on end slash and uri handler determination 2020-05-11 13:01:27 +01:00
UbitUmarov
2629d9d901 comment out estimatedLocalCost test 2020-05-10 21:30:34 +01:00
UbitUmarov
c15869438c move currency-base-uri simulator feature to global settings, based on [Economy] economy setting on opensim.ini. make sampleMoney honour it 2020-05-10 21:27:23 +01:00
UbitUmarov
aafc6579a1 remove end slash from most URLs we send to viewers 2020-05-10 21:14:52 +01:00
UbitUmarov
c1d69018bd some viewers send '//' at end of url plus cosmetics 2020-05-09 18:54:51 +01:00
UbitUmarov
a367828a85 clean a few more things before giving a socket to websockets. (this would happen later anyway) 2020-05-09 00:16:01 +01:00
UbitUmarov
ea11f1aeb8 SampleMoneyModule: remove last '/' on currency-base-uri 2020-05-08 17:30:46 +01:00
UbitUmarov
bcb9ab29d7 SampleMoneyModule: suport viewers new opensimextra currency-base-uri sim feature override for helperURI (that we call economy on some ini files, just because) 2020-05-08 17:00:43 +01:00
UbitUmarov
fa5b4dc5d8 add AddOpenSimExtraFeature to simulator features, so it is done under proper locking. Fix gridservice extra features merge (they override older). This does need a future cleanup 2020-05-08 16:54:18 +01:00
UbitUmarov
72c1c923f8 SampleMoneyModule: add private xmlrpc methods 2020-05-08 14:50:46 +01:00
UbitUmarov
c2c00c5d84 add httpserver HandleXmlRpcRequests with local set of xlmrpc methods 2020-05-08 14:37:08 +01:00
UbitUmarov
f38c5d7ac2 SampleMoneyModule: add the needed php fake uris, since we no longer folish look for xmlrpc on everything not decoded, return back the reqeusted amount or viewers get confused. 2020-05-08 05:35:47 +01:00
UbitUmarov
bf218f2cef make httpserver HandleXmlRpcRequests public 2020-05-08 05:26:25 +01:00
UbitUmarov
f70f0b5ffd cosmetics 2020-05-07 14:26:07 +01:00
UbitUmarov
f0fc1f628f another missing file 2020-05-07 02:33:54 +01:00
UbitUmarov
1908c095d3 missing file 2020-05-07 02:31:05 +01:00
UbitUmarov
58a4f45712 change eventqueue queues type, move event methods to other file (using partial class) 2020-05-07 02:26:25 +01:00
UbitUmarov
6c49f16132 minor changes 2020-05-07 02:15:25 +01:00
UbitUmarov
ac7187eada avoid a null ref, plus some cleanup 2020-05-07 02:02:50 +01:00
UbitUmarov
d5baeb4690 add SslMode=None to some connection strings 2020-05-07 00:37:25 +01:00
UbitUmarov
1e8e59e635 also override Output(string format) on remoteConsole 2020-05-02 18:31:02 +01:00
UbitUmarov
41d7d2f2f4 do dispose requests in context queue 2020-05-02 17:32:14 +01:00
UbitUmarov
0b0b5111df simplify PollServiceRequestManager, now that low level does serielaze requests 2020-05-02 15:25:05 +01:00
UbitUmarov
6d030e2f2b try to shutup some errors dunring shutdown, due to .net mess 2020-05-02 14:25:57 +01:00
UbitUmarov
1ad3a256f2 do http requests serialization at lower level 2020-05-02 14:23:52 +01:00
UbitUmarov
ab14241871 mantis 8678: try fix rest console client 2020-05-01 17:49:11 +01:00
UbitUmarov
929fa3efbd dispose of jobengine queue 2020-05-01 15:42:02 +01:00
UbitUmarov
5fa81a6ca9 give viewers more time to start uploading assets 2020-04-30 17:02:37 +01:00
UbitUmarov
22c28a0260 make Caps IDisposable 2020-04-30 03:37:28 +01:00
UbitUmarov
36d005e1cc update circuit child status when it changes 2020-04-30 02:32:41 +01:00
UbitUmarov
003b109561 move DynamicMenuModule to simpleh.., 2020-04-30 01:59:36 +01:00
UbitUmarov
b023914cc0 move RegionConsoleModule to simpleh.., and try to fix it 2020-04-30 01:31:34 +01:00
UbitUmarov
715c7a4825 fix localconsole so viewer one can display things 2020-04-30 00:47:53 +01:00
UbitUmarov
52f50d2035 move UploadObjectAsset to simpleh.. 2020-04-29 23:17:36 +01:00
UbitUmarov
88a81a9ca4 move ObjectAdd to simpleh.. 2020-04-29 22:55:02 +01:00
UbitUmarov
c289b83250 remove dead code 2020-04-29 16:57:58 +01:00
UbitUmarov
5da135a90b a few changes to updateitemasset things 2020-04-29 16:52:54 +01:00
UbitUmarov
ae15b75f79 change UploadBakedTextureModule. Make it shared and self contained 2020-04-29 16:29:20 +01:00
UbitUmarov
b0e1347cd0 silly typo... 2020-04-29 13:44:44 +01:00
UbitUmarov
693adf9ecf hide handler types not in use from show http-handlers 2020-04-29 13:41:57 +01:00
UbitUmarov
6c349e6534 let show caps list display the avatar name 2020-04-29 13:32:02 +01:00
UbitUmarov
d42c7e5e32 change CopyInventoryFromNotecard to simpleh.. 2020-04-29 13:18:50 +01:00
UbitUmarov
b069b668e4 make some use of those 2020-04-29 12:34:48 +01:00
UbitUmarov
c39ffa4dd1 add some utf8 getbytes help functions 2020-04-29 12:24:45 +01:00
UbitUmarov
7b5934ea26 add timeouts and placehold for future code 2020-04-29 10:39:36 +01:00
UbitUmarov
3a21d4de1e split the Upload* caps per asset type. We will need that one day. move uploadtaskscript to simpleh 2020-04-29 09:58:17 +01:00
UbitUmarov
7a8a7c7168 missing file 2020-04-28 21:38:03 +01:00
UbitUmarov
bff6be4f66 give up on baked flag (test) 2020-04-28 21:34:54 +01:00
UbitUmarov
f9e3c9adab clear baked flag on uploaded npc baked. This may cause issues on older grids (test) 2020-04-28 20:41:47 +01:00
UbitUmarov
3482259518 add SimpleBinaryHandler 2020-04-28 16:21:03 +01:00
UbitUmarov
1f7286fb95 do things in the right order 2020-04-28 15:53:50 +01:00
UbitUmarov
0b29bff512 restore lost things in the process 2020-04-28 15:47:13 +01:00
UbitUmarov
1abc6149bb split file bunchofcaps a bit 2020-04-28 15:43:07 +01:00
UbitUmarov
d8b182afff change the http handler of those update* caps to simplehandler 2020-04-28 14:29:37 +01:00
UbitUmarov
b6a02269f7 change update of agent or object inventory items assets. This may need better check 2020-04-28 13:48:49 +01:00
UbitUmarov
dee822208a make FetchInventory2 a shared module 2020-04-28 01:39:10 +01:00
UbitUmarov
7e2ed9ee2b change FetchInventory2 region handler 2020-04-28 01:15:18 +01:00
UbitUmarov
bfcbdc8a93 change voice modules handlers 2020-04-27 21:42:35 +01:00
UbitUmarov
5929e43c2c change MoapModule 2020-04-27 20:02:10 +01:00
UbitUmarov
27ea249194 change meshUploadFlagModule 2020-04-27 20:00:03 +01:00
UbitUmarov
b4fc5c33ec rename wrong RegionSimpleStatsHandler as RegionStatsSimpleHandler 2020-04-27 18:06:27 +01:00
UbitUmarov
04b28f206a mantis 8688: put RegionStatsHandler : BaseStreamHandler tempory back, to give time for external modules to update 2020-04-27 18:00:37 +01:00
UbitUmarov
6d66770228 change the RemoteParcelRequest cap 2020-04-27 17:46:33 +01:00
UbitUmarov
b5067baa4a it is nice to actually send the options back 2020-04-27 17:40:55 +01:00
UbitUmarov
89dee19060 move httpMethod OPTIONS handling to top, this needs to be chacked 2020-04-27 17:25:55 +01:00
UbitUmarov
fa844d7e6e add soem try/catch (and yes..yes right on last commit should hed been write... 2020-04-27 16:40:54 +01:00
UbitUmarov
0518b397a3 add SimpleOSDMapHandler, for caps that have just one httpmethod and body should be decoded as OSDMap, so we don't right the same things all pver 2020-04-27 15:46:31 +01:00
UbitUmarov
a3cd0cbfcb no need for stream hanlder description 2020-04-27 14:52:43 +01:00
UbitUmarov
9d08f8307e recover LLSD login handler 2020-04-27 14:35:19 +01:00
UbitUmarov
6ffb5bcf23 move RegionStatsHandler 2020-04-27 00:54:32 +01:00
UbitUmarov
8526f938f7 move /friends handler 2020-04-27 00:23:59 +01:00
UbitUmarov
8900d1139e xmlrpc and josonrpc only allowed on uri root, and only those there 2020-04-26 23:05:27 +01:00
UbitUmarov
6050eff683 improve show http-handlers 2020-04-26 21:51:15 +01:00
UbitUmarov
b68748507d move /estate handler 2020-04-26 20:05:10 +01:00
UbitUmarov
c07f4f3c41 change NeighbourHandlers whatever they are... 2020-04-26 19:13:35 +01:00
UbitUmarov
05f098be56 change region objecthandlers 2020-04-26 18:11:34 +01:00
UbitUmarov
473dba93e8 update show http-handlers 2020-04-26 17:03:16 +01:00
UbitUmarov
e0418da6e1 change region avatarhandlers 2020-04-26 16:54:58 +01:00
UbitUmarov
e63231887b move map to that 2020-04-25 23:25:29 +01:00
UbitUmarov
dcc2f764f2 add a /index.php fake handler, for map. only does ?method=.. but can be extended) 2020-04-25 23:24:00 +01:00
UbitUmarov
70d2878d0a simplify default 404 message, removing wrong(missing) host info 2020-04-25 21:13:54 +01:00
UbitUmarov
cafe49d44b change ParcelPropertiesUpdate 2020-04-25 20:49:13 +01:00
UbitUmarov
d44baf20cd fix map image encoder parameter 2020-04-25 20:25:38 +01:00
UbitUmarov
2d1900165b change GodsModule 2020-04-25 19:44:25 +01:00
UbitUmarov
0348c01ce7 change SimulatorFeaturesModule 2020-04-25 19:19:19 +01:00
UbitUmarov
830b034b81 change EstateAccess 2020-04-25 18:54:01 +01:00
UbitUmarov
8fb4b2f4e3 change AvatarPickerSearchModule 2020-04-25 18:03:50 +01:00
UbitUmarov
5bde41b30f remove obsole code 2020-04-25 17:00:07 +01:00
UbitUmarov
605a01fe6e move monitor stats handlers to simpleStreamHandler 2020-04-25 15:54:44 +01:00
UbitUmarov
99658309ce missing file 2020-04-25 15:32:21 +01:00
UbitUmarov
ee77a6d80b move some region base handlers to simpleStreamHandler 2020-04-25 15:31:30 +01:00
UbitUmarov
80de74e127 cancel keepalive if http status not OK, this maybe a bit 2 hardm but ok for now 2020-04-25 14:27:44 +01:00
UbitUmarov
7f2cfe734b null uri path is already checked at low level 2020-04-25 14:10:59 +01:00
UbitUmarov
eae9928961 null method is already checked at low level, remove optional status 500 message 2020-04-25 13:45:45 +01:00
UbitUmarov
288dffcda1 change cap CreateInventoryCategory 2020-04-25 12:55:02 +01:00
UbitUmarov
e48d2f2c1f move worlmap handlers to simpleStreamHandler 2020-04-24 21:40:14 +01:00
UbitUmarov
23961abf8a move EstateChangeInfo cap to simpleStreamHandler 2020-04-24 20:01:03 +01:00
UbitUmarov
bac6890391 we can speedup some not simple StreamHandler a bit 2020-04-24 18:14:41 +01:00
UbitUmarov
07caee4956 move a materials cap to simpleStreamHandler 2020-04-24 17:50:13 +01:00
UbitUmarov
84cd4b4808 move a few more caps to simpleStreamHandler 2020-04-24 16:09:23 +01:00
UbitUmarov
3d09ff57f0 move a few more caps to simpleStreamHandler 2020-04-24 13:56:16 +01:00
UbitUmarov
7856192da6 move SEED cap to simpleStreamHandler 2020-04-24 02:37:50 +01:00
UbitUmarov
ba8d188a0d remove another wrong ':' 2020-04-24 01:07:58 +01:00
UbitUmarov
76019258e3 remove wrong ':' 2020-04-24 01:06:52 +01:00
UbitUmarov
899620bc13 remove some '/' just wasting space 2020-04-24 00:54:21 +01:00
UbitUmarov
f955482dfd move ServerReleaseNotes module to simpleStreamHandler 2020-04-24 00:40:52 +01:00
UbitUmarov
8d2f90a8e2 let show http-handlers list simpleStreamHandlers 2020-04-24 00:24:02 +01:00
UbitUmarov
9000240238 change GetCapsDetails(..) 2020-04-23 23:58:06 +01:00
UbitUmarov
ca5756a100 fix agentpreferences cap path 2020-04-23 23:54:57 +01:00
UbitUmarov
f2a025bc41 Oppps better clear the online before returning 2020-04-23 23:36:34 +01:00
UbitUmarov
6cd822fd83 clear online status from gridUserService when killing dup presences 2020-04-23 23:32:33 +01:00
UbitUmarov
7a24d8af52 change AgentPreferencesModule to use SimpleStreamHandler, as a simple first test 2020-04-23 22:35:31 +01:00
UbitUmarov
9a5a811c7d extend Caps to use SimpleStreamHandler 2020-04-23 22:32:18 +01:00
UbitUmarov
426d83c535 change SimpleStreamHandler to have a processor method argument 2020-04-23 22:30:40 +01:00
UbitUmarov
46162e620a change response content lengh when using rawbuffer 2020-04-23 22:28:27 +01:00
UbitUmarov
10988fe980 exclude root path from SimpleStremHandler 2020-04-23 18:29:45 +01:00
UbitUmarov
0fe51f34c2 add SimpleStrem(Request)Handler, for simple uripaths, any method or query 2020-04-23 18:23:43 +01:00
UbitUmarov
e818c570bb expose uripath 2020-04-23 18:16:56 +01:00
UbitUmarov
5a51553e7d missing file 2020-04-23 16:08:16 +01:00
UbitUmarov
fefcda52f5 use concurrentdic on pollhandlers, simplify a bit 2020-04-23 16:04:54 +01:00
UbitUmarov
92518129ee remove redundant code 2020-04-23 13:24:08 +01:00
UbitUmarov
212c25f906 fix http version 2020-04-22 00:00:24 +01:00
UbitUmarov
6b6baa9e51 reduce ServicePointManager.DefaultConnectionLimit back 12 for os other than windows 2020-04-21 23:05:53 +01:00
UbitUmarov
1475b83699 risk reduncing iddle timeout again, because it is needed on current framework 2020-04-21 15:46:41 +01:00
UbitUmarov
50b81258a9 change event pool timeout handling 2020-04-21 00:19:19 +01:00
UbitUmarov
43fdbf87d4 remove some useless code form http low level; delay normal connection close, to let client do it instead 2020-04-21 00:13:02 +01:00
UbitUmarov
c097f148dd locate default anims also by uuid, rename/chage a few things 2020-04-18 17:26:25 +01:00
UbitUmarov
e2f84f0c1f send 100 continue code the way ms seems to want 2020-04-16 02:13:03 +01:00
UbitUmarov
4ab8da01bc flush sslstreams in keepalive case ( should not be needed but well ) 2020-04-16 01:51:57 +01:00
UbitUmarov
bdddedc550 let samplemoneymodule see EconomyModule config setting 2020-04-16 01:40:39 +01:00
UbitUmarov
e859985cfa actually commit the uri fix 2020-04-15 21:23:13 +01:00
UbitUmarov
7572a60993 avoid a null ref on get log level 2020-04-15 11:48:52 +01:00
UbitUmarov
a6abc3d2b6 mantis 8688: fix uri parsing in secure case ; add tls11 and tls12 to list of protocols (.net.46 ones) 2020-04-15 11:48:03 +01:00
UbitUmarov
944f3dd7ec sleep a script by 1second on non fatal OSSL errors 2020-04-14 17:01:35 +01:00
UbitUmarov
f20845c89e sleep a script by 1second on non fatal LSL errors 2020-04-14 16:56:53 +01:00
UbitUmarov
8baab939d2 oops fix query handling on getassets 2020-04-13 15:37:12 +01:00
UbitUmarov
920a26eeec add request QueryFlags 2020-04-13 15:01:04 +01:00
UbitUmarov
b419f71a68 also expose the request client IP as seen by server port 2020-04-13 14:34:03 +01:00
UbitUmarov
e0ba96055c change osrequest Query back to hashtable, add QueryAsDictionary as new better option. (recover compatibily with current external modules 2020-04-13 14:24:22 +01:00
UbitUmarov
745a469af8 fix recent bug on Urlmodule 2020-04-13 13:53:37 +01:00
UbitUmarov
d1f1324a2d update scriptSyntax 2020-04-12 23:19:34 +01:00
UbitUmarov
bbc5d5bc2d ate least one viewer for androide does not decode correctly llsd, go back send more useless data, to suport them. this should be reverted one day 2020-04-12 18:10:20 +01:00
UbitUmarov
f95925e0fd http server change remote endpoint handling 2020-04-11 19:57:34 +01:00
UbitUmarov
7ce9f890b1 http server useless changes 2020-04-11 16:41:39 +01:00
UbitUmarov
0d940df4e2 http server: change uri query handling 2020-04-11 15:18:49 +01:00
UbitUmarov
1c6d454691 remove excess garbage 2020-04-10 22:52:25 +01:00
UbitUmarov
6fea9dafaf yeack increase TimeoutMaxIdle again for now 2020-04-09 18:43:55 +01:00
UbitUmarov
50cd0ab982 missing file 2020-04-09 16:19:37 +01:00
UbitUmarov
0a1e1ae9e0 http asset send: prioritize baked textures 2020-04-09 16:18:27 +01:00
UbitUmarov
7ecc9408a9 flag baked texture assets 2020-04-09 16:08:44 +01:00
UbitUmarov
05c77f9342 cosmetics 2020-04-09 14:01:15 +01:00
UbitUmarov
c99014991b cosmetics 2020-04-09 13:41:41 +01:00
UbitUmarov
523d6dd2da stop a vivox error 2020-04-08 16:38:07 +01:00
UbitUmarov
f976d10de2 more changes on http server low level 2020-04-08 14:35:31 +01:00
UbitUmarov
f0f067d05c missing file 2020-04-08 00:09:23 +01:00
UbitUmarov
b4eb5d6cca send parcels onwership change updates to all avatars that may want it 2020-04-08 00:01:05 +01:00
UbitUmarov
29f59fe407 reduce httppipeline depth 2020-04-06 16:53:28 +01:00
UbitUmarov
3989dbac31 fix rez time on inworld object copy 2020-04-06 12:02:36 +01:00
UbitUmarov
0a4232430b remove some dead code 2020-04-03 03:54:32 +01:00
UbitUmarov
50b8c90b42 change response m_body send (currently not in use) 2020-04-03 03:20:47 +01:00
UbitUmarov
f1761a5b6c remove a log message under cond comp 2020-04-02 23:05:22 +01:00
UbitUmarov
4af5dfa0d0 update a license file 2020-04-02 22:33:25 +01:00
UbitUmarov
1e083c38ad nissing files 2020-04-02 21:54:18 +01:00
UbitUmarov
fe9df55410 nissing files 2020-04-02 21:52:31 +01:00
UbitUmarov
67cd5efab3 replace external httpserver by embedded one (based on same code) - This may still be very bad; clean solution and runprebuild, or clone to clan folder 2020-04-02 21:44:34 +01:00
UbitUmarov
650b051cdf httpserver send now has priority, use it 2020-03-31 22:03:43 +01:00
UbitUmarov
817c2b3bb9 httpserver send is now async 2020-03-31 22:01:45 +01:00
UbitUmarov
e558dd3ac6 update httpserver.dll this needs testing. May not be that nice... 2020-03-31 21:43:40 +01:00
UbitUmarov
ef49ac7049 do hide hidden groups on profile 2020-03-30 18:18:36 +01:00
UbitUmarov
2e66f8dbdf store sop pseudocrc and region cacheID on sqlite 2020-03-28 16:18:31 +00:00
UbitUmarov
0958eceadd store sop pseudocrc and region cacheID on PGSQL ( others later) 2020-03-28 01:31:00 +00:00
UbitUmarov
87646f340b store sop pseudocrc and region cacheID on mysql ( others later) 2020-03-27 17:34:05 +00:00
UbitUmarov
1002987aea invalidate region cacheid on oar load 2020-03-27 17:27:54 +00:00
UbitUmarov
918f56d682 fix lludp to read pseudocrc from SOP; move region cacheID to region settings 2020-03-27 17:26:49 +00:00
UbitUmarov
8e6fc69a11 let pseudoCRC (for objcache) be per part and not just per SOG 2020-03-27 17:22:18 +00:00
UbitUmarov
0a4a3199f5 update libomv again (arm issues) 2020-03-20 21:09:00 +00:00
UbitUmarov
f1204e2147 contrary to some docs, PROCESSOR_ARCHITECTURE is not defined on linux 2020-03-20 16:18:36 +00:00
UbitUmarov
9ce4b8914b LevelUpload setting is now on [Permissions], so look for it there also 2020-03-20 10:54:10 +00:00
UbitUmarov
010f091dd4 mantis 8675: delay material delete (the reported log message may still happen, but less 2020-03-20 10:50:56 +00:00
UbitUmarov
9864d1abfc tell detected endian also 2020-03-18 19:09:59 +00:00
UbitUmarov
f2c0957f5a update libomv 2020-03-18 18:46:54 +00:00
UbitUmarov
ac43124a93 duhhh 2020-03-18 17:59:35 +00:00
UbitUmarov
59d3f9fa62 log processor arch 2020-03-18 17:41:29 +00:00
UbitUmarov
5401e323dc update libomv 2020-03-18 14:42:14 +00:00
UbitUmarov
cfef190424 mantis 8674: give up asking viewers to use htts on vivox. Several just fail 2020-03-15 22:13:31 +00:00
UbitUmarov
63c5da539f minor change to legacy mesh stream cost estimation, so small lowest lod does not give excessive contribution 2020-03-15 17:47:27 +00:00
UbitUmarov
5f76a62d29 cosmetics 2020-03-13 21:27:57 +00:00
UbitUmarov
b292950b1c fix a lock i missed.. 2020-03-11 16:04:02 +00:00
UbitUmarov
beee52032e current vivox server certs are invalid 2020-03-10 13:42:09 +00:00
UbitUmarov
c172adbaec minor patching to outdated vivox suport. This can't be updated without proper API spec, that vivox is refusing to provide to me 2020-03-10 03:52:38 +00:00
UbitUmarov
e4f7a1c07a a few missing files 2020-03-07 21:13:42 +00:00
UbitUmarov
033f6f889d a few changes to flotsam asset cache 2020-03-07 20:34:56 +00:00
UbitUmarov
2e9417bd01 mantis 8670: replace bom fallback textures with ones havign alpha channel, now done with older j2k compressor 2020-03-07 20:30:24 +00:00
UbitUmarov
cf5630f2f7 mantis 8670: replace bom fallback textures with ones havign alpha channel 2020-03-07 15:43:29 +00:00
UbitUmarov
3956fbe496 missed only line on last commit 2020-03-06 19:31:07 +00:00
UbitUmarov
98de42eedc flotsam: add comands deletedefaultassets to delete local default assets (on folder bin/assets) from cache so they can be refreshed from grid and cachedefaultassets to load those local assets into cache. This comands may cause desync with grid or other regions. Viewers will need to clear cache so see effects. Use with care 2020-03-06 19:20:12 +00:00
UbitUmarov
38b93a0f50 define Mr Opensim data on Constants 2020-03-06 16:00:40 +00:00
UbitUmarov
abe26f39f6 yeackk silly bug on new avaterpickeravaterpicker 2020-03-05 00:00:08 +00:00
UbitUmarov
1df06f459a avoid duplicated udpbuffer free that may still happen 2020-03-04 22:39:44 +00:00
UbitUmarov
8728e4cf2f missing file 2020-03-04 20:04:08 +00:00
UbitUmarov
ad601c9502 take lludp out of usermanagement module 2020-03-04 20:02:45 +00:00
UbitUmarov
20b974cff0 place the try/catch in right place on profiles process. This is still bad. Last code changes moved from blocking a user for a long time, to block profiles for all, for a long time. This because some viewers like firestorm, ask for the profiles of all user friends to show their ugly 1st life pictures. thats hundred requests taking from 500ms to more than 30s each 2020-03-04 17:19:12 +00:00
UbitUmarov
ed34c00956 add catch log to profiles process 2020-03-04 04:50:54 +00:00
UbitUmarov
d0ba9f84df add some async work to profiles module, take profile out of groups v2, not its job 2020-03-04 02:45:10 +00:00
UbitUmarov
248d56d3ad add LSL_Integer osClearObjectAnimations() to remove all animations on a prim, returning the number it had; some clean on sending 2020-03-03 23:21:05 +00:00
UbitUmarov
6684c35bb0 fix object animation updates when also moving 2020-03-03 22:25:24 +00:00
UbitUmarov
25b4a310f5 mantis 8668: invalidate part VOC on lsl scale change 2020-03-03 11:37:23 +00:00
UbitUmarov
c30cb8a9cf change root part physics type none to apply physics 2020-03-02 04:05:18 +00:00
UbitUmarov
be16cf9531 sync some more things with work copy 2020-03-02 01:56:34 +00:00
UbitUmarov
97cb6254ef cosmetics, rename a few vars, etc 2020-03-02 01:32:33 +00:00
UbitUmarov
904553cdb3 update libomv 2020-03-02 01:04:15 +00:00
UbitUmarov
d3b1465444 mantis 8667: remove wildcards from a very limited test of a very limited thing 2020-03-02 00:07:02 +00:00
UbitUmarov
cf948d56a1 pesty warning 2020-03-01 22:03:33 +00:00
UbitUmarov
7e9ce0929d missing file 2020-03-01 21:46:31 +00:00
UbitUmarov
693492a3f1 several changes to lludp FetchInventoryDescendents 2020-03-01 21:45:28 +00:00
UbitUmarov
dc225e348d several changes to lludp FetchInventory 2020-03-01 18:56:07 +00:00
UbitUmarov
71b5ca95e6 change Async object delete to inventory threading model 2020-03-01 16:16:09 +00:00
UbitUmarov
e76006aff5 avoid a null ref at shutdown 2020-03-01 03:22:58 +00:00
UbitUmarov
49386d34e5 pesty warning 2020-03-01 03:05:14 +00:00
UbitUmarov
af7d09c6b5 more cosmetics (and possible more typos) 2020-03-01 02:27:48 +00:00
UbitUmarov
4d67fdfa9d cosmetics (and possible lots of typos) 2020-03-01 01:19:09 +00:00
UbitUmarov
3707301c59 changes to load oar with --merge: with option --mergeReplaceObjects it will replace objects already in region, without it, skip; with opetion merge-parcels will try to merge them, without it ignores oar parcels. as before without --merge all is replaced. renamed the options force* as merge* since they are merge suboptions 2020-02-28 18:36:52 +00:00
UbitUmarov
665037e366 cosmetics 2020-02-28 00:53:51 +00:00
UbitUmarov
22e201bb49 add harder restrictions to llGiveInventoryList. permissions per item as giveinventory, target avatar must see the prim region. Add 3seconds delay 2020-02-27 23:10:16 +00:00
UbitUmarov
7ef657c415 LSL add a translation layer btw lsl permitions and internal permissions 2020-02-27 21:37:23 +00:00
UbitUmarov
d1df9c9ee5 some lsl cleanup 2020-02-27 21:07:35 +00:00
UbitUmarov
8c74e47557 a few changes to objects permissions 2020-02-26 20:33:29 +00:00
UbitUmarov
c2ca5a699d missing file.. 2020-02-26 19:33:55 +00:00
UbitUmarov
ad5aff2d17 more on scripts *target* events 2020-02-26 19:18:07 +00:00
UbitUmarov
94f88e330b one more case 2020-02-26 18:24:40 +00:00
UbitUmarov
ea8eeaa307 do no append zero when clipping strings ( may still happen on other places) 2020-02-26 16:58:41 +00:00
UbitUmarov
7d7fc8f06a Yengine script, don't dispose twice 2020-02-26 05:17:46 +00:00
UbitUmarov
20d77d3905 mantis 8665: avoid crash at shutdown, that line should not be needed 2020-02-26 05:09:04 +00:00
UbitUmarov
771381558e index targets by scriptID 2020-02-26 04:50:55 +00:00
UbitUmarov
6dd5ea0c96 it is a good idea to actually change the respective source file... 2020-02-26 03:28:23 +00:00
UbitUmarov
828a3bb7f8 yeack, scripts can set targets, not having the events 2020-02-26 03:26:44 +00:00
UbitUmarov
ca48bf4117 those events are per script not per part 2020-02-26 03:18:22 +00:00
UbitUmarov
c9137912c9 missing file 2020-02-25 23:08:17 +00:00
UbitUmarov
ceb9289f13 change (not)at_(rot)target checks 2020-02-25 23:02:38 +00:00
UbitUmarov
d47ce25b5b change lsl say/whisper/shout text lenght limit 2020-02-24 05:57:54 +00:00
UbitUmarov
6cadcb8bdf try save a few ns on chat to objects 2020-02-24 05:37:42 +00:00
UbitUmarov
df2536c407 try save a few ns on chat to avatars 2020-02-24 05:36:05 +00:00
UbitUmarov
1de010e969 change pending messages for scripts listeners queue type 2020-02-24 03:06:35 +00:00
UbitUmarov
72d38b267e small text format change 2020-02-24 03:01:46 +00:00
UbitUmarov
5f232077a7 give a tiny more time for deattach event to trigger 2020-02-24 03:00:09 +00:00
UbitUmarov
270a3e3836 do release controls on some objects delete 2020-02-21 19:19:19 +00:00
UbitUmarov
c887446b7e sog DelinkFromGroup: change order of some operations 2020-02-21 19:15:08 +00:00
UbitUmarov
60a924f3c6 change part inventory adding some scripts speed up and controls release 2020-02-21 19:11:29 +00:00
UbitUmarov
0e6a7c3dac cosmetics 2020-02-20 21:50:07 +00:00
UbitUmarov
6c94f5d432 fix HandleRevokePermissions() 2020-02-20 08:29:09 +00:00
UbitUmarov
7c977f9e27 fix release controls on deattach 2020-02-20 08:27:42 +00:00
UbitUmarov
d7671f3c01 a few changes to script engines releasecontrols 2020-02-20 08:20:15 +00:00
UbitUmarov
8d8b5b756f mantis 8663: add CertificateValidationCallback set. Thanks Manni 2020-02-18 20:23:14 +00:00
UbitUmarov
6d2bb27ef7 fix a test 2020-02-17 22:05:27 +00:00
UbitUmarov
c8a95e21ee mysql region store: do not use double to store float 2020-02-17 21:11:21 +00:00
UbitUmarov
b9cf2244a4 stop some log spam on shutdown that happens on linux 2020-02-17 17:54:56 +00:00
UbitUmarov
c11249f1ca yeack ... // is not a ini file comment 2020-02-17 14:53:39 +00:00
UbitUmarov
23aae75563 add osslDefaultEnable.ini and osslEnable.ini.example. Similar use as opensimDefaults and opensim. Second files do local overrides to defautl settings. This should easy upgrades to versions that are compatible (most cases). (Dan Banner idea and request) 2020-02-17 00:53:30 +00:00
UbitUmarov
e155ab7814 patch a test 2020-02-14 20:17:52 +00:00
UbitUmarov
59414467e2 several changes to (task)inventory offering 2020-02-14 19:47:57 +00:00
UbitUmarov
55333a5171 fix axis rotation on sog bounding box 2020-02-14 19:34:32 +00:00
UbitUmarov
a42085f1a9 fix llGiveInventoryList notification on a group owned prim also 2020-02-13 05:20:00 +00:00
UbitUmarov
20a08c9f41 make a message more readable 2020-02-13 04:59:17 +00:00
UbitUmarov
fa4602e048 improve TaskInventoryAccepted (that is also decline) 2020-02-13 04:58:20 +00:00
UbitUmarov
0e7c19e181 fix llGiveInventory notification on a group owned prim 2020-02-13 04:41:50 +00:00
UbitUmarov
75e5217fff fix a group owned permission 2020-02-13 02:58:32 +00:00
UbitUmarov
e1d5892f78 notecards text len is in bytes not chars 2020-02-13 00:38:02 +00:00
UbitUmarov
f3238781cc oops 2020-02-10 02:19:35 +00:00
UbitUmarov
fb2380efd6 fix handling of materials maps clear and total removal with SLSL 2020-02-09 19:14:17 +00:00
UbitUmarov
11c49c211c change a log message 2020-02-08 19:03:24 +00:00
UbitUmarov
c239269762 change uuids on scripts gather 2020-02-08 18:45:38 +00:00
UbitUmarov
ce72aa2eac ignore some assets on gather 2020-02-08 17:45:51 +00:00
UbitUmarov
b97237b513 missed another file 2020-02-08 16:31:23 +00:00
UbitUmarov
8cbe743440 missing file and remove dead code 2020-02-08 16:27:30 +00:00
UbitUmarov
68e7e65e2e scritps can not read notecards with embedded items 2020-02-08 16:09:12 +00:00
UbitUmarov
9478e607db fix a typo on useraccount store 2020-02-08 13:05:23 +00:00
UbitUmarov
22227fa0b8 reduce some more spam on log 2020-02-08 01:10:30 +00:00
UbitUmarov
c2ab11a51e reduce some spam on log 2020-02-08 00:29:41 +00:00
UbitUmarov
169f161576 cosmetics 2020-02-07 22:44:14 +00:00
UbitUmarov
43fea6530f yeack, better not break other notecards HG; improve TestNotecardAsset() 2020-02-07 22:39:36 +00:00
UbitUmarov
c245ce3c25 change string terminator check 2020-02-06 22:54:17 +00:00
UbitUmarov
b2ef1545e5 oops, some fixes 2020-02-06 22:39:04 +00:00
UbitUmarov
88d91b68f7 TestNotecardAsset() does not even create a valid notecard. Disable it for now 2020-02-06 19:29:00 +00:00
UbitUmarov
8060d132b9 mantis 8651: try to improve notecards HG sharing ( not tested) 2020-02-06 19:16:23 +00:00
UbitUmarov
7a79a6ddfe mantis 8651: clean code a bit 2020-02-06 16:13:32 +00:00
UbitUmarov
4de3dc2860 mantis 8651: change embedded decode a bit 2020-02-06 15:27:53 +00:00
UbitUmarov
18f2e25b23 mantis 8651: try to fix items embedded in notecards. This may need more work 2020-02-06 06:12:51 +00:00
UbitUmarov
3196d2fa6f mantis 8547: allow volume detectors to tell detector prim link number. Note that this is not as spec, also that the name llDetectedLinkNumber should actually be llDetectorLinkNumber since it refers to the detector not detected object 2020-02-03 13:25:00 +00:00
UbitUmarov
662c41ddee clear sell data when selling a object copy 2020-02-02 20:16:33 +00:00
UbitUmarov
a22acd1c5c remove a few more references to simianGrid 2020-02-02 17:31:43 +00:00
UbitUmarov
9a5844fdb9 remove folder addin-db-002 on runprebuild 2020-02-02 17:01:27 +00:00
UbitUmarov
441b4e01f6 remove also caps with method DELETE; NOTE: to update existent regions with last commit you need to clean the solution, run prebuild, and delete folder bin/addin-db-002 2020-02-02 16:37:45 +00:00
UbitUmarov
941b65b44a removed outdated suport for simianGrid. Simian was a web/php alternative to Robust (https://code.google.com/archive/p/openmetaverse) 2020-02-02 16:18:08 +00:00
UbitUmarov
fdecf80016 mantis 8654: exclude NPCs from some Friends ops 2020-02-01 15:26:58 +00:00
Melanie
b1d7d2a625 Debugging for impersonation 2020-01-31 15:28:40 +00:00
UbitUmarov
016886b3c6 changes on sqlite estatedata 2020-01-31 13:09:37 +00:00
Melanie
a78d93e8a3 Change health reporting thresholds, correct a typo 2020-01-31 13:00:08 +00:00
UbitUmarov
f89afd2aa8 fix some sqlite regionstore tables 2020-01-31 00:08:51 +00:00
UbitUmarov
fb1911d409 revert 8cc02916ab. allow physics sit on
phanton to fall back to ugly sit because some objects depend on it
2020-01-29 21:23:30 +00:00
UbitUmarov
8075c1e363 do store UserCountry 2020-01-28 19:49:45 +00:00
UbitUmarov
53c9473100 mantis 8653 fix npc movement updates 2020-01-28 15:45:47 +00:00
UbitUmarov
76987fb647 ... osSetLinkStandTarget 2020-01-25 15:51:36 +00:00
UbitUmarov
8df27ba2a1 forgot again sintaxe 2020-01-25 15:32:03 +00:00
UbitUmarov
868c05fdf6 why not also osGetLinkStandTarget 2020-01-25 15:29:59 +00:00
UbitUmarov
5bb96cf18e update sintaxe 2020-01-25 14:26:00 +00:00
UbitUmarov
004cab9289 add osGetLinkSitActiveRange 2020-01-25 14:24:53 +00:00
UbitUmarov
64c7e1de5b add osSetLinkSitActiveRange 2020-01-25 13:32:52 +00:00
UbitUmarov
598ba5d6ae fix the dbs migrations 2020-01-23 11:14:12 +00:00
UbitUmarov
f61b83b1ea store the new variables on sqlite and pgsql ( could not test) 2020-01-23 10:47:09 +00:00
UbitUmarov
2a38210fe9 serialize the new variables 2020-01-22 22:01:05 +00:00
UbitUmarov
33eabf1069 store the new variables on mysql 2020-01-22 21:32:40 +00:00
UbitUmarov
da0ba17d1a fix bug on sit active range check 2020-01-22 21:19:38 +00:00
UbitUmarov
59f41598db limit unscripted and not done by physics sits to 10m distance again 2020-01-22 18:37:32 +00:00
UbitUmarov
7adaede14a mantis 8634: add osSetSitActiveRange(float range) , osSetStandTarget(vector feetAproxPosition) and respective get functions. range <0 disables sits on the prim, = 0 uses region default,feetAproxPosition is in prim local frame. <0,0,0> disables it. Still no persistance. feedback required! 2020-01-22 18:23:35 +00:00
UbitUmarov
8db60ba3aa back to sits and stands 2020-01-22 00:15:23 +00:00
UbitUmarov
8cc02916ab don't let physics sit on phantom fall back to ugly default 2020-01-20 19:26:12 +00:00
UbitUmarov
3f601c9267 don't allow viewer to change rotation on sit 2020-01-20 19:01:15 +00:00
UbitUmarov
0bd102a397 tell viewers to autopilot on sit, but bypass it, so camera does get set 2020-01-20 18:25:59 +00:00
UbitUmarov
0e1e247289 ok ok reduce stand jump a bit 2020-01-20 16:12:59 +00:00
UbitUmarov
b70d44eb7e try to cache cof is a waste of time 2020-01-20 16:11:20 +00:00
UbitUmarov
80fe0c640b do not use viewer autopilot on physics sits also. Viewer side autopilot needs more work to avoid desyncs, that we never had 2020-01-20 16:09:45 +00:00
UbitUmarov
54370169bc remove usage of lludp highpriority send queue. It causes more issues than good 2020-01-20 16:01:21 +00:00
UbitUmarov
ad6499cc09 fix last log message, and change things a bit 2020-01-20 11:48:32 +00:00
UbitUmarov
ddef089eaa catch more error exception cases on fetchinventory req parsing 2020-01-19 20:10:08 +00:00
UbitUmarov
f85e932f59 oops i still did not updated libomv with new flag name 2020-01-19 16:44:27 +00:00
UbitUmarov
ba174b777c send allowaccessoverride flag on regionhandshake 2020-01-19 16:30:02 +00:00
UbitUmarov
28db80f100 mantis 8647: try to not lose materials on fast objects take, but without changing a lot of files 2020-01-19 00:31:28 +00:00
UbitUmarov
8db2ddb07f mantis 8645: change sqlite to just flag row delete, for commit to work 2020-01-18 21:09:41 +00:00
UbitUmarov
550f64cb2d mantis 8645: change sqlite (not exactly as provided patch) 2020-01-18 18:01:38 +00:00
UbitUmarov
2b2b5d8bff update httpserver.dll 2020-01-18 14:53:47 +00:00
UbitUmarov
5ad62558b3 mantis 8643: invert the meaning of internal flag TEXFREE true value to mean NOT allow parcel owner to be more restrictive than estate. This should reduce the impact of this feature on new and current regions, specially since some viewers still do not suport it. (yes still lazy to rename the thing) 2020-01-17 09:35:42 +00:00
UbitUmarov
1899a36105 add another kick to GC after map generation at run time 2020-01-13 18:46:25 +00:00
UbitUmarov
62f3892cd7 add a real transparent texure for default transparency and avatar alphas transparency. Asset 3a367d1c-bef1-6d43-7595-e88c1e3aadb3 must be rempoved by hand from current regions cache (at bin/assetcache/3a3) and viewers cache clean 2020-01-12 21:29:25 +00:00
UbitUmarov
6f5b7957a9 fix attachment point changes detection 2020-01-12 10:45:10 +00:00
UbitUmarov
f417a647db exclude NPCs on adults and anonymous parcel access check 2020-01-11 17:32:33 +00:00
UbitUmarov
c2cef470f5 Estate age and payment (anonimous) access control override parcel settings. Enforce it at parcel level (a bit heavy for now, needs revison) 2020-01-11 16:26:56 +00:00
UbitUmarov
b9e74dd504 change IgnoreEstatePaymentAccessControl and IgnoreEstateMinorAccessControl default to true, since this require flags to be set on dbs, and enforcing was not working well 2020-01-11 16:16:49 +00:00
UbitUmarov
29a6c1d0c8 fix IgnoreEstatePaymentAccessControl option 2020-01-11 14:57:43 +00:00
UbitUmarov
ea7dd150b1 disable parcels access control if disabled at estate ( not that estate flag is still named TAXFREE 2020-01-11 14:11:46 +00:00
UbitUmarov
d92ef598c5 EstateAccess get: do send empty arrays 2020-01-11 12:58:46 +00:00
UbitUmarov
ac32188978 add a silly GatekeeperURIAlias example 2020-01-10 01:44:10 +00:00
UbitUmarov
5dbcb7a99e add config option GatekeeperURIAlias to list other FQDN or ips of same local grid 2020-01-10 01:38:41 +00:00
UbitUmarov
42afa8429e mantis 8639: recover object selected state in case of lludp object updates packet size overflow; 2020-01-08 10:25:59 +00:00
UbitUmarov
c54460b6f0 update release notes url 2020-01-07 17:30:23 +00:00
UbitUmarov
d9d763c8f8 change version 2020-01-07 15:18:49 +00:00
UbitUmarov
7bdc408cac change some lsl flag constants to Hexa 2020-01-07 14:51:07 +00:00
UbitUmarov
066a6fbaa1 changes on lludp acks and resends 2019-12-18 23:26:13 +00:00
UbitUmarov
7516288634 missing files 2019-12-16 16:12:04 +00:00
UbitUmarov
60473ff44e update libomv 2019-12-16 16:05:46 +00:00
UbitUmarov
8c21b30a51 do dispatch RequestLure ims 2019-12-16 01:27:49 +00:00
UbitUmarov
d400b2c545 add a formal lock object 2019-12-10 12:36:29 +00:00
UbitUmarov
449bd9beab enforce invariant culture on landmarks 2019-12-10 12:33:56 +00:00
UbitUmarov
052e4a060c mantis 8632: stop trigering Changed on just scale checks 2019-12-03 14:27:31 +00:00
UbitUmarov
5c5e4bd830 a few changes on check targets for lsl 2019-11-27 16:44:45 +00:00
UbitUmarov
b3db90db92 and yes mono-addins .... 2019-11-24 20:08:00 +00:00
UbitUmarov
bd15005d77 and yes mono-addins again 2019-11-24 18:43:50 +00:00
UbitUmarov
e8d1493777 mantis 8631: and another try... 2019-11-24 11:40:04 +00:00
UbitUmarov
17e4b52171 mantis 8631: the missing file 2019-11-24 11:09:25 +00:00
UbitUmarov
9aa0f21ffa mantis 8631: mono addins again (one file missing) 2019-11-24 11:07:55 +00:00
UbitUmarov
6e2b5ac238 fix identation 2019-11-23 01:21:36 +00:00
UbitUmarov
14270e316a fix xml decode of kfm in single prims case 2019-11-23 01:17:03 +00:00
UbitUmarov
2a508edcb4 YEngine: change some startup log messages 2019-11-22 07:42:00 +00:00
UbitUmarov
943d0935a6 YEngine, change default number of exec threads to 2 of priority Normal. Let the threads priority a option on ini files 2019-11-22 07:01:17 +00:00
UbitUmarov
d5f918f945 Oooopss 2019-11-22 06:07:28 +00:00
UbitUmarov
9b7ad30ee1 more changes on YEngine scripts heap usage 2019-11-22 04:09:05 +00:00
UbitUmarov
647622bb02 cosmetics 2019-11-20 23:29:24 +00:00
UbitUmarov
bd12d60e80 cosmetics 2019-11-20 23:16:20 +00:00
UbitUmarov
0cf3ec553a fix the block of teleport to same region handle 2019-11-18 20:17:48 +00:00
UbitUmarov
730a35eedc Yengine: more on constants operations reduction 2019-11-18 19:07:03 +00:00
UbitUmarov
bf0697d5f4 mantis 8551: Simplify Yengine heap usage control 2019-11-18 17:33:02 +00:00
UbitUmarov
496a2228f5 update mono addins again 2019-11-18 04:13:46 +00:00
UbitUmarov
b5d2a6088c revert to previus ICSharpCode.SharpZipLib.dll that was .net4.6 unlike new one 2019-11-18 03:49:57 +00:00
UbitUmarov
3708f504a6 fix a info message 2019-11-18 03:18:23 +00:00
Diva Canto
72362dd09c Mono addins uses this, and the version was now incompatible. 2019-11-17 15:19:15 -08:00
Crista Lopes
9fd2b239d9 Replaced mono addins dlls and mautil.exe with the patch 2019-11-17 14:33:00 -08:00
UbitUmarov
7dd5c9ccad update mono addins ( need to runprebuidl and recomp opensim) 2019-11-17 21:40:02 +00:00
UbitUmarov
103ebac082 terrain: make sure modify does get unblocked 2019-11-17 15:01:21 +00:00
UbitUmarov
61f918cbda remove some llUDP options 2019-11-16 22:19:46 +00:00
UbitUmarov
cb97ab5c6f make attachments WearReplacesAll option visible 2019-11-14 22:34:39 +00:00
UbitUmarov
45625a02a2 update contributors 2019-11-14 06:49:13 +00:00
UbitUmarov
31aef4e82b work on previus 2 patchs 2019-11-14 06:34:44 +00:00
Terry
999a068172 Complete PostGres from previous commit - (Not Tested)
Signed-off-by: Terry <terry@digiworldz.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2019-11-14 05:28:57 +00:00
Terry
2f79f463ea Attempt to fix the issue where, when logging into the grid, the user supplies a region name, but instead of going to the specific region, they are sent to a region "Like" the one specified.
Signed-off-by: Terry <terry@digiworldz.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2019-11-14 05:26:54 +00:00
UbitUmarov
eabf9a7c04 mantis 8627: handle the case constant compareOp constant on Yengine 2019-11-13 23:26:22 +00:00
UbitUmarov
d9d78c3423 Terrain: more double to float 2019-11-13 19:53:15 +00:00
UbitUmarov
5d2ffdc35b limit max number of attachments to 38. All can be on same point 2019-11-13 18:44:58 +00:00
UbitUmarov
2828aa3e9b Reduce Max region size to 4096m 2019-11-13 18:00:45 +00:00
UbitUmarov
8fcecc93a6 missed a few 2019-11-12 18:24:56 +00:00
UbitUmarov
d10f11d310 terrain replace double by float 2019-11-12 18:19:12 +00:00
UbitUmarov
9eb5fd4330 more changes on terrain edit. Silent ignore comand if busy (large area smooth can take ages), brush changes, etc 2019-11-12 03:16:53 +00:00
UbitUmarov
01832b3e3c missing file, of course 2019-11-11 12:54:42 +00:00
UbitUmarov
e87dfd48bf Yengine: we also need to cancel timer events in queue, because some bad scripts that do work on X 2019-11-11 12:51:09 +00:00
UbitUmarov
38a77a8bb5 terraforming changes: try recover llmodifyland previus behaviur 2019-11-10 21:12:52 +00:00
UbitUmarov
ee68085628 SIO_UDP_CONNRESET should work on macs now, thx Gavin 2019-11-10 19:14:12 +00:00
UbitUmarov
435c30c038 terraforming changes: comment a debug message 2019-11-10 04:37:41 +00:00
UbitUmarov
b4d9f7ffe8 terraforming changes: support selected parcel edit; fix area smooth 2019-11-10 02:48:54 +00:00
UbitUmarov
f6ea22647d terraforming changes: make jenkis happy 2019-11-10 00:47:40 +00:00
UbitUmarov
727216044b terraforming changes: missing file 2019-11-10 00:03:39 +00:00
UbitUmarov
53339d2970 terraforming changes: make sliders work, remove some brushs, etc. Feedback needed (run prebuild) 2019-11-09 23:59:19 +00:00
UbitUmarov
4b5a3308ad cosmetics 2019-11-08 17:43:22 +00:00
UbitUmarov
ca4bb8c492 let autopilot also stand from a object 2019-11-07 03:53:05 +00:00
UbitUmarov
bd9f6ae3f0 avoid a null ref 2019-11-07 03:01:07 +00:00
UbitUmarov
8ed0680bb9 handle null refs on llSubStringIndex() 2019-11-06 23:40:53 +00:00
UbitUmarov
926e4ea95e mantis 8624: replace native code libs for Mac by ones signed by Geir Nøklebye (Gavin Hird). Ths again Gavin 2019-11-05 15:39:44 +00:00
UbitUmarov
11a357d7fa YEngine: fix credits comment 2019-11-05 15:08:58 +00:00
UbitUmarov
040c8d5e9a dynamic textures: add ' lossless: [true|false] ', default false, extraParam 2019-11-04 20:17:12 +00:00
UbitUmarov
21f86c453d YEngine: fix wrong language detection on some comments in first line 2019-11-04 17:22:42 +00:00
UbitUmarov
bae7b21e87 update libopenmetaverse ( attach points) 2019-11-04 10:44:29 +00:00
UbitUmarov
f2cf3b201b avoid a null ref 2019-11-02 21:53:12 +00:00
UbitUmarov
26b5affb04 FlotSamAssetcache write to disk needs be sync. 2019-11-01 15:00:22 +00:00
UbitUmarov
3236e24c74 a disabled module has no caps to tell viewers (cameraonlymoduel) 2019-10-31 16:41:28 +00:00
UbitUmarov
5a3ba2afbb always allow part deselect 2019-10-30 04:46:47 +00:00
UbitUmarov
9d6a1e01f9 fix some mysql timestamps default value 2019-10-29 22:55:51 +00:00
UbitUmarov
defa235859 update server release notes default URL 2019-10-29 14:37:41 +00:00
UbitUmarov
4797f8210c update version name 2019-10-28 16:41:26 +00:00
UbitUmarov
b073d2ae6b change version 2019-10-28 11:28:00 +00:00
UbitUmarov
3c4bc681c3 refuse to create a new user with empty password 2019-10-24 17:40:39 +01:00
UbitUmarov
bf2e0f7737 oops, dont ask things twice 2019-10-24 17:30:24 +01:00
UbitUmarov
be6080c3c8 partial revert console Prompt code to fix it 2019-10-24 17:07:59 +01:00
UbitUmarov
46e36601cb remove some more useless NULL arguments 2019-10-22 13:04:01 +01:00
UbitUmarov
da0a8d6c43 remove some more useless NULL arguments 2019-10-22 12:39:50 +01:00
UbitUmarov
b98ad6c53c remove some useless NULL arguments 2019-10-22 12:23:19 +01:00
UbitUmarov
d838a7e5c7 missing file 2019-10-22 12:04:32 +01:00
UbitUmarov
7939974d92 try to fix console AGAIN 2019-10-22 11:55:27 +01:00
UbitUmarov
7f8d5bbdce a few changes on osslEnable.ini 2019-10-21 11:34:32 +01:00
UbitUmarov
a7f8412644 a few changes on osslEnable.ini 2019-10-21 11:25:40 +01:00
UbitUmarov
656ea163cc a few changes on LlGetObjectDetails 2019-10-20 10:55:13 +01:00
UbitUmarov
ab335b5926 add a few lsl constants 2019-10-19 18:00:45 +01:00
UbitUmarov
7ed339324f same for osSetDynamicTextureURLBlendFace(). thx djphil 2019-10-19 11:49:46 +01:00
UbitUmarov
24b1e84eca change osSetDynamicTextureURL(Blend) to ThreatLevel.VeryHigh,ESTATE_MANAGER,ESTATE_OWNER 2019-10-19 09:59:26 +01:00
UbitUmarov
9d698bcffb Xengine: more on division by Zero 2019-10-18 15:02:32 +01:00
UbitUmarov
f09a18a7a8 Yengine: Also error on division by Zero 2019-10-18 14:16:37 +01:00
UbitUmarov
2a90f78fe1 add LSL_Integer osIsNotValidNumber(LSL_Float v) 2019-10-17 23:33:11 +01:00
UbitUmarov
d6abf2a2fe simplify last code a bit 2019-10-17 22:40:54 +01:00
UbitUmarov
53c39bf25f Xengine: Error on division by Zero. Yengine will take a lot more work. If your script gets killed by this, don't bother us, your script is just BAD 2019-10-17 21:35:34 +01:00
UbitUmarov
6b930a596b Yengine make float.tostring culture invariant 2019-10-17 19:40:54 +01:00
UbitUmarov
5971021b5d tests: windows does not have 1ms time resolution 2019-10-16 20:16:59 +01:00
UbitUmarov
0587dd38dc fix some texts init 2019-10-16 20:09:31 +01:00
UbitUmarov
96553ecc11 minor text change 2019-10-16 15:47:55 +01:00
UbitUmarov
1a21ab1938 minor text change 2019-10-16 14:54:25 +01:00
UbitUmarov
45ad812457 minor text change 2019-10-16 14:45:04 +01:00
UbitUmarov
b87301f692 typo 2019-10-16 14:04:20 +01:00
UbitUmarov
43bf3af138 OSSL: threading issue 2019-10-16 13:53:55 +01:00
UbitUmarov
2abf375351 OSSL: stop reading configuration file on every script start. 2019-10-16 13:42:11 +01:00
UbitUmarov
c7714d6320 make OSSL parsing error warning more clear 2019-10-16 13:05:30 +01:00
UbitUmarov
0e3f24a67e change OSSL functions allow control code. Behavior should stat pretty much the same. Some help testing, please 2019-10-16 12:24:07 +01:00
UbitUmarov
d79d7e228a add OSSL option PermissionErrortoOwner (true or false). if true ossl functions permission errors will only be sent to prim owner, defaul false: send all around 2019-10-16 00:08:45 +01:00
UbitUmarov
77126cee00 change coments on osslEnable.ini and remove list of functions always suported; 2019-10-15 22:57:30 +01:00
UbitUmarov
23587391f8 basic search: fix people search, add some caching 2019-10-14 11:32:00 +01:00
UbitUmarov
6d1ad6acd5 viewers group search page size is 100 ( and not way to detect other value, so hardwired) 2019-10-13 19:11:21 +01:00
UbitUmarov
5bbaea50e4 groups v2: remove wrong filters on DB search 2019-10-13 18:52:33 +01:00
UbitUmarov
0273baaef6 mantis 8598: filter dead groups from group search. honor querystart request. Viewers are very broken on this, seems protocol was made by someone with no idea about lludp 2019-10-13 16:41:38 +01:00
UbitUmarov
2c1909a873 add osResetAllScripts(LSL_Integer AllLinkset). use with care 2019-10-11 00:01:59 +01:00
UbitUmarov
55d70f5df7 update livomv 2019-10-08 06:31:39 +01:00
Melanie
be34b8e79d Fix build break 2019-10-06 23:57:47 +01:00
Melanie
eb55f7f2bc Introduce a way to send the grid's message kay, if one is used 2019-10-06 23:24:41 +01:00
Melanie
22599fbf29 Remove a no longer used property that used ScopeID in an improper way 2019-10-06 19:51:46 +01:00
Melanie
aed0eaf4d7 Fix an issue where parameter parsing could lead to an exception 2019-10-06 19:51:13 +01:00
UbitUmarov
1b70b569ad explicitly remove useragentserviceconnector dns lookup, effectively removed on a previus commit. This should not be needed with required mono versions and proper configured DNS (that must honour short TTL needed by dynamic DNS ); add some uri validation 2019-10-06 18:24:06 +01:00
UbitUmarov
c5e2afa9f8 remove useragentserviceconnector dns lookup also on ossl 2019-10-06 17:09:49 +01:00
Melanie
09d8da7e77 Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2019-10-06 16:12:54 +01:00
Melanie
abdc78d6d3 Stop replacing the host name with it's IP.
Mono DNS resolution is now configurable elsewhere.
Resolving the IP ahead of time causes requests to
be made by IP. If NginX is used to distribute requests
to services by name, this breaks HG teleports.
2019-10-06 16:10:57 +01:00
UbitUmarov
03da5a9714 fix ViewerAsset external url 2019-10-06 02:21:29 +01:00
UbitUmarov
39aa27af2b missing file 2019-09-24 00:26:59 +01:00
UbitUmarov
27a40461e2 do removed the old API function (replaced in 2016). Thanks Terry for finding this old Bug 2019-09-23 16:29:33 +01:00
UbitUmarov
64834a880d fix a HGsuitcase API 2019-09-23 15:59:15 +01:00
UbitUmarov
43b56eaf08 make Console Promt(..) compatible with rest of code, again 2019-09-21 16:59:41 +01:00
UbitUmarov
b046ccebf2 make Console Output(..) compatible with rest of code, again 2019-09-21 16:35:38 +01:00
UbitUmarov
d7bf623f57 add a missing return 2019-09-18 19:09:48 +01:00
UbitUmarov
63239402ae fix wrong lludp message usage 2019-09-18 18:43:45 +01:00
UbitUmarov
24a977323b avoid a null ref ( this should not be needed) 2019-09-18 05:27:25 +01:00
Robert Adams
4161182be0 Update the Newtonsoft JSON manipulation DLL to latest version (v12.0.3-beta1). 2019-09-17 19:35:05 -07:00
Robert Adams
9956f5cb4a Changes fix some CORS problems when making XMLRPC calls from
browsers (which have gotten very picky over the years).
Add "Access-Control-Allow-Origin" to XMLRPC responses.
Add "Access-Control-Allow-Methods" and "Access-Control-Allow-Headers" to
    the HTTP OPTIONS response (used in CORS pre-flight request).
2019-09-17 19:30:30 -07:00
UbitUmarov
645c0c780d add a extra lenght check 2019-09-17 20:43:55 +01:00
UbitUmarov
63b0bd7f6b fix saving appearence to notecard, so they can work on older regions 2019-09-15 16:49:58 +01:00
UbitUmarov
85aa77566b allow particles scale max to be 7.96m, supported by protocol 2019-09-12 00:25:52 +01:00
UbitUmarov
5f1fde5f38 fix bad indexes math 2019-09-11 15:52:26 +01:00
UbitUmarov
0bef393b6b fix a bad typo 2019-09-11 15:24:28 +01:00
UbitUmarov
025fc98262 take unit tests limited settings in consideration on setappearance 2019-09-11 15:08:09 +01:00
UbitUmarov
ecfa3cf7dc pesty warning 2019-09-11 14:09:55 +01:00
UbitUmarov
aea5f186c5 remove a config option that controled a useless sim feature. note that at this point, and as normal on master, appearence/bakes etc may have a few more issues than before, as always thanks for your help testing it, and hapy clouds 2019-09-11 14:03:25 +01:00
UbitUmarov
07874fa058 enable agent hover again, (it is still bad on most viewers for opensim 2019-09-11 13:54:14 +01:00
UbitUmarov
9d6c996570 extent supported number of avatar textures/bakes/wearables, tell viewers about it on lludp RegionHandShake; propagate agenthover; block teleports/crossings based on worn wearables and peer version; 2019-09-11 13:51:43 +01:00
UbitUmarov
6aa369d858 disable AvatarHoverHeight useless and viewer side broken (without SSA) 2019-09-09 15:52:50 +01:00
UbitUmarov
304d72565d fix a HG to local grid tp extra check 2019-09-07 01:25:32 +01:00
UbitUmarov
f835960d17 go back to protocol 0.7, until 0.8 changes are ready 2019-09-05 00:23:47 +01:00
UbitUmarov
93f13aa00d add osSlerp() 2019-09-04 23:27:48 +01:00
UbitUmarov
7771cc00c4 don't wear vegetables 2019-09-04 13:58:38 +01:00
Melanie
3d019323e8 Cache assets even in cases where the upload fails. That helps in asset upload debugging because the asset can be examined 2019-09-04 11:01:27 +01:00
UbitUmarov
bfc1756fe3 fix the fix 2019-09-04 09:38:52 +01:00
UbitUmarov
c4904de6a7 fix one of the new warp3d log messages 2019-09-03 21:28:06 +01:00
UbitUmarov
fc550e2b3e avoid potencial null ref 2019-09-03 15:21:25 +01:00
UbitUmarov
3aae1d0918 mantis 8585: add a bit more debug messages 2019-09-03 15:19:36 +01:00
UbitUmarov
98b86c012e avoid a null ref 2019-09-03 02:22:08 +01:00
UbitUmarov
fd252b1285 add a little more debug for now 2019-09-03 02:10:07 +01:00
UbitUmarov
eedb0a1c85 missing file 2019-09-02 22:56:57 +01:00
UbitUmarov
ae130d9f25 mantis 8580: make some changes on regions find code. (only gatekeeper
host is used on local grid detection, not its port)
2019-09-02 22:48:42 +01:00
UbitUmarov
38dbc03288 mantis 8585 change assets README 2019-08-31 15:36:18 +01:00
UbitUmarov
7cdce3e276 XbakesModule: allow more textures, older versions will not see 2019-08-31 15:01:15 +01:00
UbitUmarov
695821a93a update httpserver.dll reverting a change win does not seem to like 2019-08-31 05:44:14 +01:00
UbitUmarov
0bafb36aad restore a texture asset removed by mistake 2019-08-30 23:03:39 +01:00
UbitUmarov
694ad7d8bc increase region protocol version to 0.8 2019-08-30 13:04:58 +01:00
UbitUmarov
8938ae498f added some texture assets. Thx Ai Austin 2019-08-29 11:21:26 +01:00
UbitUmarov
c0521482ce add a test sim feature 2019-08-29 09:08:45 +01:00
UbitUmarov
85b615309b update libomv with simpler Texture.GetBakesBytes 2019-08-29 08:52:16 +01:00
UbitUmarov
0e33014572 add a few lsl constants 2019-08-28 05:54:18 +01:00
UbitUmarov
450ae4a927 change appearance data sent to others 2019-08-28 04:36:17 +01:00
UbitUmarov
562ec0eed3 update libomv 2019-08-28 04:33:55 +01:00
UbitUmarov
7a82f9ef9f mantis 8470: add constant PrivURL. Thanks Ai Austin 2019-08-27 22:32:26 +01:00
UbitUmarov
60fa28740a mantis 8583: update region information on Grid on map regeneration 2019-08-27 21:24:54 +01:00
UbitUmarov
718c6d1e4d mantis 8583: osGetRegionMapTexture(); now returns prim region map textureID, without any requests to grid 2019-08-27 21:16:22 +01:00
UbitUmarov
ab92dff5be a few changes to db generic tables 2019-08-26 03:00:28 +01:00
Melanie
584df2ab38 Fix console outputting raw format strings 2019-08-25 23:07:14 +01:00
UbitUmarov
c4e453d948 revert last change and o fix the damm silly bug 2019-08-24 23:33:05 +01:00
UbitUmarov
35e3c3dec4 reduce even more the number of objects per UDP packet on object cache related pkts ( TEST ) 2019-08-24 22:52:47 +01:00
UbitUmarov
030ad7f47a minor change on httpserver dll 2019-08-24 07:57:17 +01:00
Melanie
110644c23a Make ReadConfig a general features of consoles, rather than type dependent 2019-08-21 21:23:54 +01:00
Melanie
7e136c67fd Call SetServer on consoles reflectively to avoid having type checks in places where it tends to be forgotten to update them. 2019-08-21 21:15:58 +01:00
Melanie
0fd17c08ae Massive console refactor. Greatly simplify interface. 2019-08-20 23:28:59 +01:00
UbitUmarov
f7a496136d change PGSQL migration 2019-08-19 12:28:17 +01:00
UbitUmarov
4acd07c0fa try again to update SQLite estateban 2019-08-18 20:53:35 +01:00
UbitUmarov
7f52bcbc7f try to update SQLite estateban 2019-08-18 20:35:24 +01:00
UbitUmarov
d5db4b9d93 try to update PGSQL estateban 2019-08-18 20:24:19 +01:00
UbitUmarov
a687c5fce9 oops... 2019-08-18 02:12:15 +01:00
UbitUmarov
6b868f8682 i do not not store banTime as DateTime, fix the EstateBan decoder 2019-08-18 00:33:23 +01:00
UbitUmarov
115d69e633 missing file 2019-08-17 23:59:01 +01:00
UbitUmarov
db374112c6 EstateAccess do fill the fields(mySQL only); fix the response 2019-08-17 23:57:05 +01:00
UbitUmarov
eb9cf78e6b EstateAccess: add some ban fields to fill one day 2019-08-17 20:41:49 +01:00
UbitUmarov
16bf737b26 minor update to osslEnable.ini 2019-08-17 19:29:37 +01:00
UbitUmarov
64c56fc52b mantis 8577: add key osGetInventoryItemKey(string name) to get a inventory item ID within prim inventory. the llGetInventory does return the asset it, not item. 2019-08-16 21:24:07 +01:00
UbitUmarov
9ddd2e842e move file HGworldMapModule to where it belongs( runprebuild) 2019-08-15 18:28:58 +01:00
UbitUmarov
7d0b37faec still another missing ShowNPCs case, and needed changes for prev commit 2019-08-15 18:01:51 +01:00
UbitUmarov
12abb3ffe4 make HGworldmap initialize its base wordmap 2019-08-15 17:59:57 +01:00
UbitUmarov
002ef3cd89 mantis 8575: npc map dots could be sent on another spot 2019-08-13 23:06:26 +01:00
UbitUmarov
4812833435 set default value for timestand on groups v2 invites table 2019-08-10 22:18:55 +01:00
UbitUmarov
ffd5c5cc9c mantis 8573 and 8569: be more aggressive on drag block with touch on non physical prims 2019-08-10 13:58:11 +01:00
Melanie
c9b7ec2af9 Make the DNS cache timeout configurable.
In containerized environments, DNS is simulated. It can change several
times per second as containers move around. The hardcoded timeout was
too long for a container environment.
2019-08-09 12:06:33 +01:00
Melanie
f332f3fc41 Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2019-08-09 11:02:04 +01:00
Melanie
34816fe1ab No idea where this diff comes from - change case to lower 2019-08-09 11:01:19 +01:00
Melanie
0726ef5302 Fix #8572 2019-08-09 10:59:51 +01:00
UbitUmarov
c043008e04 add cap EstateChangeInfo 2019-08-07 21:06:20 +01:00
Melanie
c80926192a Make showing NPCs on the world map an option 2019-08-07 18:45:04 +01:00
Melanie
1a8c235d58 Remove debug output i left in 2019-08-07 18:30:08 +01:00
Melanie Thielker
c3e74d9e04 Put a scope un users. Should fix Unknown UserUMMAU43 unless the user IS unknown 2019-08-07 18:22:13 +01:00
Melanie
ba680ceecb Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2019-08-07 17:58:55 +01:00
Melanie
d781742d8e Fix scope support to get friends list names across co-hosted grids 2019-08-07 17:58:08 +01:00
UbitUmarov
21aa26d796 cap EstateAccess: don't meed with keepAlive unless needed 2019-08-07 17:39:17 +01:00
UbitUmarov
8d1c12dfad pesty warning; btw thx LiruCookies for help on estateaccess cap viewer protocol 2019-08-07 16:29:09 +01:00
UbitUmarov
4ea679d9e8 add cap EstateAccess: missing file 2019-08-07 16:20:43 +01:00
UbitUmarov
1e0984b64c add cap EstateAccess 2019-08-07 16:16:49 +01:00
UbitUmarov
5b39860573 silly bug in libomv 2019-08-02 13:13:53 +01:00
UbitUmarov
482c51a42a cosmetics 2019-08-02 04:28:34 +01:00
UbitUmarov
04eb4744df update libopenmetaverse including a ugly hack to try to workaround issues detected with new windows .net4.8 JIT. this can be reverted with that is fixed, this can also go wrong, as usual ;) 2019-08-02 02:36:19 +01:00
UbitUmarov
0142f102ce remove redundant code 2019-08-01 05:37:27 +01:00
UbitUmarov
96dabca85b make sure XEngine does release script events when a script is destroyed 2019-08-01 05:31:03 +01:00
UbitUmarov
618c6ceda5 mantis8569: do aggregate script events when a script is deleted; block nonphysical drag if a touch event is triggered, add a time guard on that 2019-08-01 04:14:49 +01:00
UbitUmarov
6359874d64 mantis8548: let rotation division be -(olderResult) this is formally more correct (and it is the same rotation), keep not normalizing, as SL seems to do 2019-08-01 00:01:27 +01:00
UbitUmarov
0bcd58fd0f mantis8548: change more LSL arguments declarations to their formal form. Still a lot more to do. This is a case where coerence matters over performance, to avoid more future issues 2019-07-31 16:27:36 +01:00
UbitUmarov
1499baf13e mantis8564: add region_up_time to llGetEnv. Returns string with seconds since region start. There where ways do get it, but this makes life easier 2019-07-31 14:34:35 +01:00
UbitUmarov
b5b518dc0d change value of PARCEL_DETAILS_DWELL to a higher value to give more room for standard values, change return types, update script syntaxe 2019-07-31 13:38:49 +01:00
TBG Renfold
0163af970f Mantis #8481 part two.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2019-07-31 12:58:11 +01:00
TBG Renfold
8de67dad76 Mantis #8481 part one.
Add llGetParcelDetails(vector pos, [PARCEL_DETAILS_LANDDWELL])

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2019-07-31 12:58:00 +01:00
UbitUmarov
cd641e8629 fix configuration loader test 2019-07-31 00:37:27 +01:00
UbitUmarov
944a785a32 now i can login on win .net4.8, but just a little drop on a large (broken) OSD ocean. some of this changes are actually good even on good JIT. Failure seems to be on same code pattern, but same points seem to vary with each JIT compilation, sometimes work, others don't, others always fail, etc 2019-07-30 23:26:29 +01:00
UbitUmarov
185ed42123 cosmetics 2019-07-30 18:34:32 +01:00
UbitUmarov
a92b0e7716 Merge branch 'master' of opensimulator.org:/var/git/opensim 2019-07-30 18:22:45 +01:00
Melanie
24aa13239c Also remove the defaults from Configger 2019-07-30 18:15:09 +01:00
Melanie
d29ffbf551 Restore the OpenSimDefaults I had to move out of the way to test this 2019-07-30 18:07:02 +01:00
Melanie
08c9ad6a5b Remove the outdated and no longer useful hardcoded config defaults 2019-07-30 18:03:01 +01:00
UbitUmarov
87eb2fa9da cosmetics 2019-07-30 17:51:20 +01:00
Melanie
08b62c8daa Don't try to print XML if a corrupted asset is actually binary data 2019-07-30 16:01:15 +01:00
Melanie
1c8508cfbd Put back the code to create the ready marker file. 2019-07-29 18:05:30 +01:00
Melanie
34209d2a39 Fix godnames module to not add the empty string if only one option is used 2019-07-27 12:12:35 +01:00
Melanie
d6723dab37 Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2019-07-27 12:10:28 +01:00
UbitUmarov
78359c108d mantis 8563: do not modify collection inside a loop on it a foreach on it 2019-07-15 22:10:47 +01:00
Melanie
2f52a3b124 When using FSAssets, the HGAssetService would still use AssetService.
This introduces a new HGAssetService config option named BackingService,
which defaults to the old behaviour, loading AssetService. It can, however,
be used to load FSAssets for HG assets, which eliminates numerous problems.
2019-07-13 13:33:34 +01:00
Melanie
aedaa32ddc When using FSAssets, the HGAssetService would still use AssetService.
This introduces a new HGAssetService config option named BackingService,
which defaults to the old behaviour, loading AssetService. It can, however,
be used to load FSAssets for HG assets, which eliminates numerous problems.
2019-07-13 13:30:15 +01:00
UbitUmarov
d372309e3c mantis 8558: send sane values for Agents and objects capability (max hard limit) 2019-07-06 20:49:00 +01:00
UbitUmarov
03abb970f4 reduce httptimout on first try to save a asset to grid 2019-06-14 20:13:57 +01:00
UbitUmarov
05f508229c make materials save to grid less async on manual backup or shutdown 2019-06-14 20:12:33 +01:00
UbitUmarov
79442c8c56 handle confirmXfer sync 2019-06-13 01:33:25 +01:00
UbitUmarov
b09ea5bdc7 delay timeout a bit 2019-06-13 01:12:47 +01:00
UbitUmarov
086248c13b minor cleanup 2019-06-13 00:08:51 +01:00
UbitUmarov
4b8c5ee6e8 test... 2019-06-12 03:12:51 +01:00
UbitUmarov
878d0defc7 add a lock 2019-06-12 02:41:20 +01:00
UbitUmarov
da90da220e still a few more changes to lludp Xfer download for lost udp case 2019-06-12 01:43:32 +01:00
UbitUmarov
238efad690 a few more changes to lludp Xfer download 2019-06-11 01:19:57 +01:00
UbitUmarov
017253fae9 a few more changes to lludp Xfer download 2019-06-10 19:17:32 +01:00
UbitUmarov
2cba0d676e test... 2019-06-09 23:40:50 +01:00
UbitUmarov
9ff7601214 reduce some useless array copies 2019-06-09 20:15:36 +01:00
UbitUmarov
41e2379f97 mantis 8460: reduce odds of watchdog timeout warning 2019-06-04 19:02:50 +01:00
UbitUmarov
38e937f91b add sim feature AvatarHoverHeightEnabled; mantis 8535: make option MeshModelAllowTextureToInventory visible 2019-05-28 21:37:59 +01:00
UbitUmarov
8410a01fb4 missing old flag VEHICLE_FLAG_NO_FLY_UP 2019-05-22 23:16:36 +01:00
UbitUmarov
9c44dc3384 change yengine comments on ini file 2019-05-19 14:20:01 +01:00
UbitUmarov
0e2adbe0fb mantis 8527 and 8517: let llSetLinkPrimitiveParam*() PRIM_TEXTURE ignore texture id/name if invalid, processing the other parameters, for compatibily with old scripts. 2019-05-14 02:48:03 +01:00
UbitUmarov
3ae4115e43 osLocalTeleportAgent: if lookat or fly options, just move the avatar, not telling viewer about any teleport 2019-05-03 00:39:55 +01:00
UbitUmarov
3a055c578d soem cleanup 2019-05-02 03:11:16 +01:00
UbitUmarov
ea32a73103 osLocalTeleportAgent: no region crossings :( ; check avatar access to target position; flag 8 == force fly; 16 force nofly (both == fly) 2019-05-01 03:49:24 +01:00
UbitUmarov
11c945a565 add osLocalTeleportAgent(key agent, vector position, vector velocity, vector lookat, LSL_Integer flags). Velocity only works with ubOde but still not good. flags = bit field: 1 use velocity, 2 use lookat, 4 rotate avatar look in current velocity direction (ignored if 2 ie flag = 7 is same as 3). This bypasses most the unnecessary logic of osTeleportAgent, having usage same permissions. It may do region crossings(?). Experimental stage, feedbakc expected ;) 2019-05-01 01:36:10 +01:00
UbitUmarov
9225b78309 missing files... 2019-04-30 23:04:04 +01:00
UbitUmarov
3491af440f missing files... 2019-04-30 23:01:37 +01:00
UbitUmarov
e9587c8835 sop: rename a few fields 2019-04-30 22:56:31 +01:00
UbitUmarov
15dd033490 primbasicshape: convert eventual MeshEP to SculpEP 2019-04-30 22:52:58 +01:00
UbitUmarov
8994045d5f old typo 2019-04-23 14:52:15 +01:00
UbitUmarov
5314f375c5 change osSetProjectionParams a bit and add a variant that atkes a linknumber argument. For now can only change one prim per call 2019-04-18 15:26:27 +01:00
UbitUmarov
bd442208d8 mantis 8517: actually let NULL_KEY do the same as on PRIM_TEXTURE 2019-04-18 14:01:54 +01:00
UbitUmarov
2b4e5fcded mantis 8517: let texture argument of PRIM_TEXTURE only change the other parameters. On PRIM_NORMAL and PRIM_SPECULAR will be as NULL_KEY removing the material. This may be changed for coerence in future 2019-04-18 13:17:40 +01:00
UbitUmarov
11cad57c9c lludp: change burst, make it per category (overall reduction) 2019-04-16 19:07:26 +01:00
UbitUmarov
37fb937e0d Yengine: rename a field, do some updates using interlocked 2019-04-16 17:28:09 +01:00
UbitUmarov
09d92565dc typo on a debug message format 2019-04-16 15:31:31 +01:00
UbitUmarov
6bbd5eb6a2 Yengine: change binary code version, so scripts are automaticly recompiled with new changes 2019-04-16 11:39:28 +01:00
UbitUmarov
2fa5d10c00 Ynegine: add some missing memory usage on script reset 2019-04-16 00:07:13 +01:00
UbitUmarov
a83b7a292b mantis 8518: Yengine; we can't wait for GC (worse finalizers) to count released memory of some local variables, so add a pseudo free; fix memory account on timeslice rentry; change the folder for the debug IL files; fix memory usage on reset. This changes will only take effect on new compiles 2019-04-15 23:32:22 +01:00
UbitUmarov
cfd3923868 update warp3d.dll 2019-04-12 00:19:42 +01:00
UbitUmarov
a824258c88 warp3d: reduce work prims textures to at most 256x256 2019-04-11 23:47:01 +01:00
UbitUmarov
2b604fa889 update warp3d.dll 2019-04-11 23:44:18 +01:00
UbitUmarov
d977613162 do disable probes when voc is disabled 2019-04-10 21:28:41 +01:00
UbitUmarov
4475b3db27 degradate udp network efficiency a even more 2019-04-10 14:01:10 +01:00
UbitUmarov
ee989dd552 missing file 2019-04-10 00:27:17 +01:00
UbitUmarov
b459b2c65f dont send animation before object 2019-04-10 00:25:49 +01:00
UbitUmarov
b051b3a81d change to ping based RTO 2019-04-09 21:30:06 +01:00
UbitUmarov
c09b312b05 testing ... 2019-04-09 18:50:08 +01:00
UbitUmarov
49fb9d6b4b degradate udp network efficiency a bit more 2019-04-09 13:05:18 +01:00
UbitUmarov
b8a061816f degradate udp network efficiency a bit 2019-04-09 12:46:21 +01:00
UbitUmarov
f29fdb6bda old tp timing issues on grid presence notification did came back, so put back old hack 2019-04-09 10:22:55 +01:00
UbitUmarov
2c8e03b589 testing ... 2019-04-09 00:25:38 +01:00
UbitUmarov
cadcf412ec linux likes other tz names 2019-04-08 14:04:02 +01:00
UbitUmarov
b104934a25 add osGetPSTWallclock() returns wall clock in PST or PDT, for those that for some odd reason think need it. OpenSim girds shoudl use UTC (gtm) but whatever 2019-04-08 13:50:51 +01:00
UbitUmarov
539a3a9273 make robust ban by MAC options visible, thx Bill Blight 2019-04-07 16:29:31 +01:00
UbitUmarov
442ef1cc9e change a comment 2019-04-06 21:27:54 +01:00
UbitUmarov
ec6a52c029 change interpretation of a viewer flag 2019-04-06 21:26:12 +01:00
UbitUmarov
a25e18587c set SupportViewerObjectsCache true by default 2019-04-06 16:30:19 +01:00
UbitUmarov
b7c1d6e7f5 UserAgentService: change handling of its external IP 2019-04-06 16:09:42 +01:00
UbitUmarov
0ebb1f3f4b presence detector: don't even try to logout agents that didn't made to root 2019-04-06 12:25:54 +01:00
UbitUmarov
5ed2b5c990 try handle the special case MaxRegionsViewDistance = 0 (agents only see void around region, even if there are regions around 2019-04-05 14:43:48 +01:00
UbitUmarov
3bc0690a7a temp workaround on sits culling 2019-04-05 12:32:36 +01:00
UbitUmarov
28c9725730 kill avatar on agents that do not see its new region 2019-04-05 12:31:43 +01:00
UbitUmarov
7ce45235e6 make sure viewer knows where to place a sitting avatar, this will need deep revision with culling 2019-04-05 11:19:38 +01:00
UbitUmarov
6485377ecd fix MinRegionViewDistance option (added in last commit); change regions view control 2019-04-05 04:21:40 +01:00
UbitUmarov
63321f9ccc add option RegionViewDistance 2019-04-05 04:08:14 +01:00
UbitUmarov
0652f01d4c duhhh npcs don't have child agents; plus minor typos 2019-04-05 03:45:27 +01:00
UbitUmarov
8d272fb1d0 mantis 8512: fix runprebuild 2019-04-05 03:25:02 +01:00
UbitUmarov
50c810549c change visible regions also by view range change; fix check on crossings 2019-04-04 20:16:23 +01:00
UbitUmarov
a56f40470e control visible regions by avatar position and view range, first dirty code 2019-04-04 18:55:40 +01:00
UbitUmarov
07796d5ccf change region cacheid on restart. This should not be needed in future if objects cache info is stored on region db 2019-04-04 18:52:28 +01:00
UbitUmarov
42414bfa55 mantis 8512: add proposed detection of VS2019 to runprebuild (both this and vs2019 untested by me 2019-04-04 15:07:15 +01:00
UbitUmarov
15b6d8c147 send agent view range to new child agents 2019-04-04 00:50:54 +01:00
UbitUmarov
8e094887cd change avatars sending point 2019-04-02 20:27:56 +01:00
UbitUmarov
b458c5a9b4 another test.... 2019-04-02 17:26:06 +01:00
UbitUmarov
e7f0131509 another test.... 2019-04-02 17:05:47 +01:00
UbitUmarov
433e529512 make tests happy again; try to speedup crossings 2019-04-02 15:58:36 +01:00
UbitUmarov
8152e47a4a change the point where child regions are closed/opened 2019-04-02 15:10:42 +01:00
UbitUmarov
1984cbdbe5 add extra delay before sending initial data 2019-04-02 13:49:25 +01:00
UbitUmarov
ba66d2d3c1 minor cleanup on mesh decompress code 2019-04-02 10:13:26 +01:00
UbitUmarov
2739b2f5cc mantis 8509: replace mesh gzip decompress 2019-04-01 18:12:17 +01:00
UbitUmarov
7f55db72d2 Yengine: try fix changing scripts running state if the have long events 2019-04-01 13:58:41 +01:00
UbitUmarov
3b63699b9d still issues on fast hg tps 2019-04-01 13:55:54 +01:00
UbitUmarov
5dc7623e38 change avatar arrival at hg destination handling 2019-04-01 13:18:40 +01:00
UbitUmarov
3327bed34b fix tp set callback log message 2019-04-01 12:46:03 +01:00
UbitUmarov
772aa5234a Yengine: clear events queue on reset. Also keep clearing all on state change. (Linked message events are deleted at sl) 2019-04-01 01:48:23 +01:00
UbitUmarov
7110e98815 rez npcs attachments async again 2019-03-31 23:31:18 +01:00
UbitUmarov
190e2da672 Yengine attachment drop, do set attachment ready event 2019-03-31 22:50:14 +01:00
UbitUmarov
939aff5c3b oops RegionHandShakeReply is not reentrant 2019-03-31 20:43:32 +01:00
UbitUmarov
9650cb8708 remove a potencially dang. lock 2019-03-31 20:31:35 +01:00
UbitUmarov
3a6d87da95 a few more changes on initial data sending 2019-03-31 19:28:06 +01:00
UbitUmarov
89ac80189c do clear MOAP on remove 2019-03-31 05:34:35 +01:00
UbitUmarov
4626f0850a fix osSet/GetPrimitiveParams threat level 2019-03-31 02:12:30 +01:00
UbitUmarov
98be996991 missing file 2019-03-30 12:56:23 +00:00
UbitUmarov
fa4716955e make 2 tests happy again 2019-03-30 12:51:10 +00:00
UbitUmarov
6cf85a3db1 a few more changes on initial objects send 2019-03-30 12:07:49 +00:00
UbitUmarov
f6db9e044d Yengine: fix scripts resume on attachments drop 2019-03-28 13:46:39 +00:00
UbitUmarov
3644879677 mantis 8508: ignore llAttachToAvatar if already attached 2019-03-28 02:32:36 +00:00
UbitUmarov
1847a42a86 changes on teleports v7 2019-03-28 00:02:24 +00:00
UbitUmarov
5663e2c0c8 try another way 2019-03-27 07:32:06 +00:00
UbitUmarov
dad533fe1c timming issues on fast tp back to same region on new code 2019-03-27 06:43:22 +00:00
UbitUmarov
83fd05f131 timming issues on fast tp back to same region on new code 2019-03-27 02:04:11 +00:00
UbitUmarov
5035de053a we should be able to zeroencode compressedupdates 2019-03-25 17:51:38 +00:00
UbitUmarov
b32b104996 some more changes on objects sending 2019-03-24 16:15:24 +00:00
UbitUmarov
481d7156d1 mantis 8505 ( and not 8506 by mistake on previus commit) remove the meshes numbre of sides warning. build prims with the number of sides of the high LOD submesh 2019-03-24 01:51:29 +00:00
UbitUmarov
027750e98f compact the trivial te case, a more complete one may be needed even beening heavy 2019-03-24 00:35:30 +00:00
UbitUmarov
33986aea5e mantis 8506: parse highlod mesh and compare its number of prim faces to the number of faces provided and warn mismatch 2019-03-23 23:32:39 +00:00
UbitUmarov
9c322c93cc fix particles encoding on compressedupdate 2019-03-23 08:04:23 +00:00
UbitUmarov
b6626739e2 make the text enable option visible for testing 2019-03-23 04:28:22 +00:00
UbitUmarov
010d64dcd2 a bit more suicidal... 2019-03-23 03:58:22 +00:00
UbitUmarov
a9aba562b1 pesty warning 2019-03-23 02:24:32 +00:00
UbitUmarov
d0052c8174 add more test code to make usage od compressed updates etc. Should be disable, but well many things can go wrong. 2019-03-23 02:18:32 +00:00
UbitUmarov
db191cd4e2 oops send flag PrimFlags.InventoryEmpty but do not override others 2019-03-21 07:13:39 +00:00
UbitUmarov
cfbd34f618 add some code for compressed updates, but disabled, since more changes are needed elsewhere 2019-03-21 06:52:18 +00:00
UbitUmarov
b1cf06796f do send flag PrimFlags.InventoryEmpty 2019-03-21 06:21:57 +00:00
UbitUmarov
7211afb3b9 missing file 2019-03-20 15:12:56 +00:00
UbitUmarov
d6b3413c63 RegionHandshake IS critical llupd protocol not to be done by odd modules 2019-03-20 15:09:53 +00:00
UbitUmarov
81ff118378 lludp direct encode RegionHandshake 2019-03-20 14:41:19 +00:00
UbitUmarov
fe6317f009 LSL update texture entry is heavy, set all parameters on same update 2019-03-19 21:37:58 +00:00
UbitUmarov
af35882eda prevent spurius acceleration values 2019-03-19 13:00:11 +00:00
UbitUmarov
c521ff394e recover the UnAckedBytes are in KB fix 2019-03-19 10:59:01 +00:00
UbitUmarov
7884278097 try to avoid some useless full object updates 2019-03-19 10:29:48 +00:00
UbitUmarov
a7927e9d7b lludp ObjectAnimation encoding 2019-03-19 09:44:13 +00:00
UbitUmarov
71361f61f4 lludp SimStats encoding 2019-03-19 08:52:14 +00:00
UbitUmarov
132d8be9cc UnAckedBytes are in KB 2019-03-19 07:22:24 +00:00
UbitUmarov
b10a3ba023 take the deafult on the parameter overlay 2019-03-19 06:52:57 +00:00
UbitUmarov
182977a872 do not send parceloverlay on crossings (may be bad, or not) 2019-03-19 06:38:43 +00:00
UbitUmarov
1c6be0fae3 ooops 2019-03-19 06:10:08 +00:00
UbitUmarov
6dde1aaa14 try save a few ns on parcel overlays 2019-03-19 06:00:36 +00:00
UbitUmarov
c2086e6257 add a few extra checks for viewers animated objects support, to avoid timming issues 2019-03-19 00:47:45 +00:00
UbitUmarov
199d4a1bd0 lludp ReplyTaskInventory, SendXferPacket and AbortXfer enconding 2019-03-18 23:36:49 +00:00
UbitUmarov
ee0eef5ee0 also fix the ThrottleOutPacketType 2019-03-18 22:29:24 +00:00
UbitUmarov
f17dba9925 oops 2019-03-18 22:26:02 +00:00
UbitUmarov
37619443a7 lludp GenericMessage enconding 2019-03-18 22:19:23 +00:00
UbitUmarov
606d096709 lludp ImprovedInstantMessage enconding 2019-03-18 21:04:42 +00:00
UbitUmarov
6fd7b931b1 lludp ChatFromSimulator enconding; some simplification 2019-03-18 18:58:07 +00:00
UbitUmarov
84187975bd lludp AgentMovementComplete enconding 2019-03-18 18:03:22 +00:00
UbitUmarov
b9987b4183 stop sending some useless small packets 2019-03-17 21:37:21 +00:00
UbitUmarov
9ccca71c1b remove redundant code 2019-03-17 19:00:02 +00:00
UbitUmarov
8bb0c05825 lludp: direct encode PacketAck, StartPingCheck and CompletePingCheck 2019-03-17 18:16:38 +00:00
UbitUmarov
ee8ad3e69d lludp: direct encode AvatarAppearance 2019-03-17 02:02:40 +00:00
UbitUmarov
2ff5b322be lludp: direct encode CoarseLocationUpdate 2019-03-16 17:44:34 +00:00
UbitUmarov
5428b4799d lludp: direct encode rest of send terseupdates 2019-03-16 15:40:01 +00:00
UbitUmarov
d8f9a007f4 bug fix on mapblockreply; direct encode mapitemreply just because.. 2019-03-16 14:30:53 +00:00
UbitUmarov
4a80802bec lludp direct encode mapblockreply. Not bc its a high volume packet, but bc it needed work anyways 2019-03-16 00:38:49 +00:00
UbitUmarov
492ba8f644 minor cleanup 2019-03-15 19:21:44 +00:00
UbitUmarov
e1c20a32ca LSL: limit sittext and touchtext to length current viewers cand display 2019-03-15 18:17:50 +00:00
UbitUmarov
46dc9ebd4e lludp: change zero encode of strings; limit them to what current viewers expect 2019-03-15 18:08:05 +00:00
UbitUmarov
f143dbc23f lludp direct encode object Properties update packets 2019-03-14 17:11:23 +00:00
UbitUmarov
b82337de09 Robust: to tell main httpserver to stop on shutdown 2019-03-12 11:48:17 +00:00
UbitUmarov
1b8999b130 try to work around robust shutdown/quit blocking on mono 2019-03-12 11:14:59 +00:00
root
c7a02dc058 Merge branch 'master' of brain.opensimulator.org:/var/git/opensim 2019-03-11 23:41:26 +00:00
root
0a4f0758fa Should have been in the last commit 2019-03-11 23:40:55 +00:00
root
c3f9b1568c Fix multi, and single tenancy on MapGet 2019-03-11 23:38:57 +00:00
root
e877c94b51 Add a but more status info on marker files 2019-03-11 23:37:53 +00:00
root
d8e558a3da Allow anyone to get a CAP to the console - check rights on use 2019-03-11 23:36:52 +00:00
UbitUmarov
68b0d9f31d errr use invariantculture compare not current 2019-03-11 23:24:20 +00:00
UbitUmarov
186e9e2838 at login do try proper region name match before sending just somewhere that looks similar 2019-03-11 23:15:30 +00:00
UbitUmarov
32a03a49fc lludp: direct encode terrain patchs packets 2019-03-10 15:56:14 +00:00
UbitUmarov
7b55d42b11 lludp fix max packet size on ack appends 2019-03-10 11:23:38 +00:00
UbitUmarov
343239c7c3 do not send animated attachments to viewers that do not support them. 2019-03-09 12:04:26 +00:00
UbitUmarov
6bc37f348e ooops bad zeroencode flag 2019-03-08 22:28:57 +00:00
UbitUmarov
e9d7ced733 just direct encode avatar animation also 2019-03-08 21:14:08 +00:00
UbitUmarov
a32060180f agent animation object ids are only for self avatar 2019-03-08 19:14:09 +00:00
UbitUmarov
155e499457 well let trees have special state and grass data block again. 2019-03-07 18:57:13 +00:00
UbitUmarov
95c4de6144 grass even more 2019-03-07 18:20:17 +00:00
UbitUmarov
4e7cddc6a8 vegetation is special 2019-03-07 17:11:52 +00:00
UbitUmarov
9ccc3ed756 make use of direct object update encoding 2019-03-07 14:53:32 +00:00
UbitUmarov
fbd741ece3 prims have at most 9 face textures 2019-03-07 12:12:11 +00:00
UbitUmarov
6ae1341c58 don't read from dbs wrong sound flags 2019-03-07 04:53:41 +00:00
UbitUmarov
9487f5cdd3 don't send irrelevant data 2019-03-07 04:50:05 +00:00
UbitUmarov
fdb1ce827b fix packet type 2019-03-06 22:48:00 +00:00
UbitUmarov
0970dc04e2 llupd add direct encode, with inline zeroencode, of objects update ( code path currently not in use) 2019-03-06 22:42:37 +00:00
UbitUmarov
cf0f3954a8 lludp do inline zeroencode of some(most) agent full updates (runprebuild) 2019-03-06 20:00:39 +00:00
Robert Adams
87c81b5172 BulletSim: Add delay to stationary check after adding force to Avatar.
Fix to Mantis 8496.
Add parameter [BulletSim] AvatarAddForceFrames.
2019-03-06 10:29:46 -08:00
UbitUmarov
39f73b82d4 dont try to backup a object in the middle of possible multipack link 2019-03-05 17:03:17 +00:00
UbitUmarov
0944a96517 llupd direct encode object updates for agents; let terse updates be zeroencoded. This is not as spec but does work 2019-03-05 16:01:29 +00:00
UbitUmarov
b5ad1b7dcc remove lludp throttle texture rate cannibal option. That rate is used by http, and beeing http is still trafic 2019-03-05 09:22:34 +00:00
UbitUmarov
80056abbe7 OOOPPPSSS 2019-03-03 12:15:28 +00:00
UbitUmarov
ca1993c72d direct encode lludp terse object update, let contain texture entry 2019-03-02 18:23:29 +00:00
UbitUmarov
9da1ca2b44 ll rez objects: silent ginore null object id; remove redundante llSetColor code 2019-03-02 15:38:36 +00:00
UbitUmarov
8a8ce8b10a put back assetViewer cap code, to allow viewers testing. It is disabled at OpenSimDefaults, and should not be enabled until all major viewers do it right on opensim 2019-03-01 11:57:52 +00:00
UbitUmarov
87733b196b reduce the chance of using a invalid avatar physics actor 2019-03-01 11:48:00 +00:00
Robert Adams
bd1b992aaf Add Thread.ResetAbort() to various thread loops to clean up errors on
shutdown. Fixes Mantis #8494.

Threads are aborted when shutting down and ThreadAbortException is odd
in that it is rethrown at the end of the catch unless the abort is
reset. No functional changes but fewer error messages on shutdown.
2019-02-27 07:49:52 -08:00
UbitUmarov
9e182c27fb combat module: those parcel changes are now handled elsewhere 2019-02-27 13:18:38 +00:00
UbitUmarov
bcf05afd64 direct encode terseupdates 2019-02-27 10:07:25 +00:00
UbitUmarov
fe46f8cd1d avoid packet split on terseupdates 2019-02-26 15:09:18 +00:00
UbitUmarov
4de5e14e54 issues with udp buffers pool on heavy load 2019-02-26 15:02:57 +00:00
UbitUmarov
e24adb9ea1 mantis 6569: restore full health on invulnerable set to true; combat module is outdated and needs work. By then the proposal on this mantis should be reviewed 2019-02-26 13:38:03 +00:00
UbitUmarov
91569e00a0 buffers in pool have no data, better mk that clear 2019-02-26 01:16:30 +00:00
UbitUmarov
a07951b044 fix UDPBuffersPoolCount value (readable with stats show clientstack 2019-02-26 00:43:44 +00:00
UbitUmarov
d5d4dc4754 zero decode using a buffer from the pool 2019-02-25 23:30:01 +00:00
UbitUmarov
91fab70236 removed a redundant function; try to make a particular vi coder happy about removed comments 2019-02-25 23:05:11 +00:00
UbitUmarov
d01165818d change UDPPacketBuffer pools (does waste a bit of memory) 2019-02-25 21:46:23 +00:00
UbitUmarov
4dd89ce094 make the options visible on OpenSimDefaults 2019-02-24 10:07:48 +00:00
UbitUmarov
cd5a6daa84 also throttle llhttprequest by owner, options: PrimOwnerRequestsBurst = 5, PrimOwnerRequestsPerSec = 25; increase concurrency to 8 2019-02-24 09:46:55 +00:00
UbitUmarov
800f6d6529 several changes to llHttpRequest processing: options section renamed ScriptsHttpRequestModule; throttle by prim (PrimRequestsBurst = 3, PrimRequestsPerSec = 1) and max concurrent connections per instance (MaxPoolThreads = 5), llhttprequest returns if error, nullkey if throttled, reqid otherwise 2019-02-24 07:25:50 +00:00
UbitUmarov
009af3122f update script sintaxe 2019-02-22 22:42:07 +00:00
UbitUmarov
d89a089ca2 remove redundant osInventoryDescription() and improve osInventoryDesc() to do the same 2019-02-22 22:28:47 +00:00
UbitUmarov
6e05695244 add LSL_Key osGetLastChangedEventKey() ( it is a alias for lldetectedkey(0) but don't tell anyone 2019-02-21 23:41:49 +00:00
UbitUmarov
5d78f52f7b let Xengine also have that detectedkey 2019-02-21 23:17:53 +00:00
UbitUmarov
bd27573130 add LSL_String osGetInventoryName(LSL_Key itemId) and LSL_String osGetInventoryDescription(LSL_String itemNameOrId) 2019-02-21 23:11:03 +00:00
UbitUmarov
ece3843798 let changed allowed drop have lldetectedkey[0] return the dropped item id, Yengine and still testing" 2019-02-21 22:54:43 +00:00
UbitUmarov
b7507b70bc Yengine changed position and shape events can bt throttled by mineventdelay 2019-02-21 22:05:38 +00:00
UbitUmarov
16596b6ad0 add LSL_Key osGetInventoryLastOwner(string itemNameorid) 2019-02-21 21:56:27 +00:00
UbitUmarov
17ea412da1 fix last owner on add to object inventory 2019-02-21 21:54:24 +00:00
UbitUmarov
0f574d432d Yengine:save minEventDelay in script state 2019-02-20 20:36:43 +00:00
UbitUmarov
72c472f988 Yengine: let llminEventDelay do something: it just ignores a more limited set of events than Xengine (neither do as SL) 2019-02-20 20:12:13 +00:00
UbitUmarov
ac651a168a Xengine: exclude a few more events from mineventdelay 2019-02-20 04:54:32 +00:00
UbitUmarov
62fb0961fd missing file on the kick commit 2019-02-20 04:07:42 +00:00
UbitUmarov
7c0eab8a23 Xengine: don't lose state change events 2019-02-20 04:04:35 +00:00
UbitUmarov
b56eb2fe63 estate kick now just kill user connection if on same region. The teleport home we did, does not make much sense, and would need more work anyways 2019-02-20 03:05:23 +00:00
UbitUmarov
fdf5274c25 add osKickAvatar(LSL_Key agentKey, string alert) 2019-02-20 02:06:25 +00:00
UbitUmarov
98b6ba24b4 oops do show the object delete 2019-02-15 02:28:00 +00:00
UbitUmarov
040ab65f68 (almost) useless change 2019-02-15 02:08:45 +00:00
UbitUmarov
b242232c7b minor cleanup 2019-02-15 01:38:49 +00:00
UbitUmarov
06930a1803 don't break permitions on god object return or delete 2019-02-15 01:10:56 +00:00
UbitUmarov
f58e1f6265 mantis 8479: deep change DeRezObjects(..) doing independent permitions checks per action. m_useTrashOnDelete should now work except if god deletes, but still not recomended 2019-02-15 01:09:37 +00:00
Robert Adams
52947b6280 Remove some more cut-and-paste typos in 6dof constraint setup in XNA
version of BulletSim. Could only effect operation of flexible linksets when
using the C# version of the Bullet physics engine.
Found by Tampa and AliciaRaven and reported in Mantis 7612.
2019-02-05 08:35:27 -08:00
Robert Adams
a1568697d0 Remove cut-and-paste typo in 6dof contstrain setup in XNA version of
BulletSim. Could only effect operation of flexible linksets when using
the C# version of the Bullet physics engine.
Found by Tampa and reported in Mantis 7612.
2019-02-05 08:07:22 -08:00
UbitUmarov
874cc47617 allow more suicidal NonPhysicalPrimMax 2019-02-05 02:25:04 +00:00
UbitUmarov
175817fe55 enforce prim size restrictions on physical state change; Place restrictions on ini values 2019-02-05 01:45:04 +00:00
UbitUmarov
b8121ad8a2 prevent freswitch from messing global cert validation, more work is need on rest requests ( also for other things) 2019-02-04 21:44:40 +00:00
UbitUmarov
55f27135dd remove references to obsolete CertificatePolicy 2019-02-04 21:06:50 +00:00
UbitUmarov
364b718acf reduce the odds of MTU violation 2019-02-04 20:12:08 +00:00
UbitUmarov
ef3b424b26 optimizers are silly 2019-02-03 00:47:43 +00:00
UbitUmarov
2f3101e1d2 typos, thx 2019-02-01 18:43:39 +00:00
UbitUmarov
75e48610e7 place a global cooldown of 2 min on god map generation 2019-02-01 18:19:27 +00:00
UbitUmarov
6bb8055cc2 change last commit to do as console comand generate map 2019-02-01 12:52:58 +00:00
fly-man-
45de5eb638 Allow Grid owners to regenerate a maptile for a region manually through the use of the God Tools
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2019-02-01 12:38:59 +00:00
UbitUmarov
b16ee749ed change default config: allow grid gods by default, if you don't trust grid admins what are you doing there?; disable most god powers unless god level is requested on viewer 2019-01-31 18:02:21 +00:00
UbitUmarov
9046e5cb9d ubode add position to pid control it stopped flying to prevent slow drifts 2019-01-31 17:25:18 +00:00
UbitUmarov
76b777b1fb remove MRM module (minimodule). Its outdated and we have no maintainers. Thanks to all that worked on it. You should either use scripts or a full region module. Or revert this commit and update its code ;) 2019-01-31 12:14:29 +00:00
UbitUmarov
44e6f45ed6 cosmetics 2019-01-31 12:03:14 +00:00
UbitUmarov
e0b06d4b6b cosmetics 2019-01-31 11:46:18 +00:00
UbitUmarov
1e1d296ef4 do update physics script events on link ( this does need another cleanup one day 2019-01-31 10:27:21 +00:00
UbitUmarov
73e64c6597 mantis 6702: fix collisions lldetectedlinknumber also on Yengine 2019-01-30 12:27:03 +00:00
UbitUmarov
dd43e613f0 oops that went bad on linux, reverting 2019-01-30 00:58:41 +00:00
UbitUmarov
d86bb08c28 change GetDrawStringSize so result better matchs rendering size 2019-01-30 00:46:40 +00:00
UbitUmarov
eb7715e2f8 a few changes to last commits 2019-01-30 00:12:46 +00:00
UbitUmarov
5fc44398fe actually .. do take the trim out 2019-01-29 22:06:30 +00:00
UbitUmarov
373ec7afa2 try to not lose start and end spaces in osDrawText 2019-01-29 22:01:54 +00:00
UbitUmarov
dc633ee768 cosmetics 2019-01-29 21:16:28 +00:00
UbitUmarov
6479eb9022 change encoding few event cap messages 2019-01-29 21:11:21 +00:00
UbitUmarov
6bc8e2413f ubode replace a locklessqueue by .net concurrentqueue 2019-01-29 13:49:29 +00:00
UbitUmarov
f1076607dc mantis 8457: ok ok shutup the warning 2019-01-28 07:47:00 +00:00
UbitUmarov
52e5f58c9a add a try catch on HandleMapItemRequest 2019-01-28 04:38:27 +00:00
UbitUmarov
cc27168cc1 change encoding of event cap messages 2019-01-28 04:01:09 +00:00
UbitUmarov
4c79a85621 forgotten locks on ubode 2019-01-28 03:37:54 +00:00
UbitUmarov
cc204a279e change encoding of a another event cap message 2019-01-28 00:40:33 +00:00
UbitUmarov
695d807696 change encoding of a few event caps messages 2019-01-26 16:42:42 +00:00
UbitUmarov
07946e040d ok i said all ( lie ) 2019-01-25 21:40:30 +00:00
UbitUmarov
f7926eb28c ok take the all change 2019-01-25 21:35:23 +00:00
UbitUmarov
367bd48d91 script mono is meaningless for us 2019-01-25 21:21:23 +00:00
UbitUmarov
df568b1a66 some sop cleanup 2019-01-25 20:57:48 +00:00
UbitUmarov
61fb39e49b cleanup 2019-01-25 20:54:24 +00:00
UbitUmarov
8048746759 changes on sog boundingbox and other cleanup 2019-01-25 20:52:46 +00:00
UbitUmarov
cb94991acb cleanup dead code 2019-01-25 20:50:13 +00:00
UbitUmarov
3ee70aac0b mess around with prioritizer 2019-01-25 20:49:18 +00:00
UbitUmarov
e3d0ec6f40 a few changes on priority queues and their heap 2019-01-25 20:46:03 +00:00
UbitUmarov
27f5248d9f Ooops fix bad locking 2019-01-25 03:19:48 +00:00
UbitUmarov
f474c10f71 change threads confusing names 2019-01-25 01:50:33 +00:00
UbitUmarov
15c28bb2d4 update libomv with a few more 'useless' changes 2019-01-25 00:23:59 +00:00
UbitUmarov
d5059d650f mantis 8452: possible fix 2019-01-22 11:32:51 +00:00
UbitUmarov
eb9ac87dd9 fix a bad c&p 2019-01-21 14:09:36 +00:00
UbitUmarov
9e2152d2cb disable tests that now fail bc a scenegraph is now needed to find prims by local id 2019-01-21 13:45:05 +00:00
UbitUmarov
9d002fb568 oops 2019-01-21 13:23:44 +00:00
UbitUmarov
611cfc83d6 give up on Lazy<T> 2019-01-21 13:15:11 +00:00
UbitUmarov
237cf1ced6 some cleanup 2019-01-21 12:59:32 +00:00
UbitUmarov
44d6746f40 well.. put the ode locks back, for now 2019-01-21 08:34:19 +00:00
UbitUmarov
d7d5f9f775 change float to byte rounding 2019-01-21 08:03:24 +00:00
UbitUmarov
ef43111fc1 another missing file 2019-01-21 06:41:01 +00:00
UbitUmarov
da0ea2698b another missing file 2019-01-21 06:14:41 +00:00
UbitUmarov
fad63ca814 missing file 2019-01-21 06:09:08 +00:00
UbitUmarov
33a062612f remove terraindata abstraction layer, since we only have heightmap type 2019-01-21 06:05:21 +00:00
UbitUmarov
a287a8e121 this looks more like ubode 2019-01-21 01:59:33 +00:00
UbitUmarov
81bb620d64 ubode try remove a legacy lock, that is nasty 2019-01-21 01:43:35 +00:00
UbitUmarov
3897774424 cosmetics on warp3d 2019-01-20 22:50:00 +00:00
UbitUmarov
0c38d52538 cosmetics on terrain patchs 2019-01-20 20:58:27 +00:00
UbitUmarov
3bfa278984 cosmetics 2019-01-20 02:02:24 +00:00
UbitUmarov
881cdc34b3 cosmetics 2019-01-20 00:19:40 +00:00
UbitUmarov
2060b70e5d reduce some delay on shutdown 2019-01-19 08:31:07 +00:00
UbitUmarov
bef8ea8bcc mantis 8458: don't forget prims on search map on link/unlink 2019-01-19 07:09:39 +00:00
UbitUmarov
cc19957e0a a few more changes to tp home 2019-01-19 00:24:38 +00:00
UbitUmarov
796a8efe25 a few changes to tp home 2019-01-18 22:18:49 +00:00
UbitUmarov
fc075c61ed fix HG tp detection 2019-01-18 18:42:14 +00:00
UbitUmarov
04f44bcf99 mantis 8442 more changes to alpha blending (mono does not like last) 2019-01-18 03:02:39 +00:00
UbitUmarov
0c85517e9e update libomv with more changes to low level code 2019-01-17 21:50:07 +00:00
UbitUmarov
b2810c4ca7 mantis 8442 more changes to alpha blending 2019-01-16 20:24:16 +00:00
UbitUmarov
d8e5b7385e mantis 8442 change alpha blending note BREAKING CHANGEgit push! old scripts using alpha parameter != 255 on osSetDynamicTextureDataBlendFace, will be diferent 2019-01-16 00:29:56 +00:00
UbitUmarov
75d3e7a7a0 disable test not conform to new tp 2019-01-14 20:14:24 +00:00
UbitUmarov
cc55cf3080 do HG as old protocol, needs deeper changes 2019-01-14 19:56:29 +00:00
UbitUmarov
df14ed7d31 more on TP 2019-01-14 18:39:16 +00:00
UbitUmarov
3cf9a257f7 fix te media 2019-01-14 17:56:23 +00:00
UbitUmarov
31ec5dde45 test a change to TP protocol 2019-01-14 17:25:32 +00:00
UbitUmarov
8bb644159e a few more changes to texturesentry handling on libomv and os 2019-01-14 00:35:45 +00:00
UbitUmarov
4cfcf805b3 mantis 8448: remove silly typos from libomv 2019-01-11 17:26:33 +00:00
UbitUmarov
ab35bf5b9d update libomv (fix bug on last) 2019-01-11 09:43:49 +00:00
UbitUmarov
f7619b6ee0 update libomv 2019-01-11 04:06:34 +00:00
UbitUmarov
43f4eca67c mantis 8447: empty buttons list in llDialog now shows Ok button 2019-01-10 21:49:38 +00:00
UbitUmarov
a1182cddd5 minor direct use of libomv changes 2019-01-10 18:52:08 +00:00
UbitUmarov
c0c91f3773 file that depends on libomv changes 2019-01-10 18:24:29 +00:00
UbitUmarov
a98b7fc389 update libovm 2019-01-10 18:20:46 +00:00
UbitUmarov
5bd16eaf9e mantis 8445: fix PackFixed(...) 2019-01-09 14:49:01 +00:00
UbitUmarov
7d9d862e8b fix irc protocol 2019-01-08 23:09:22 +00:00
UbitUmarov
47ae155f13 give a bit more time bf closing child agents 2019-01-08 18:07:10 +00:00
UbitUmarov
ff8f70418b a few more changes to terraincompressor and libomv 2019-01-08 18:02:07 +00:00
UbitUmarov
2ccaf54a1f update libomv 2019-01-08 03:37:48 +00:00
UbitUmarov
c37b2094ba cosmetics: terrain compressor is for 16m x 16m patchs only 2019-01-07 23:54:13 +00:00
UbitUmarov
59cfea73ca missing file 2019-01-06 20:15:30 +00:00
UbitUmarov
950b605b42 more changes on scenegraph etc 2019-01-06 20:10:43 +00:00
UbitUmarov
6e60917522 change its foreach 2019-01-06 02:23:49 +00:00
UbitUmarov
54b4523da8 let DoubleDictionary... also have a values array 2019-01-06 02:10:17 +00:00
UbitUmarov
3e49e13249 change scenegraph locking 2019-01-06 01:44:37 +00:00
UbitUmarov
c5604d3857 similar to sps array in scenegraph 2019-01-06 01:23:08 +00:00
UbitUmarov
f2b447a08f change mapandarray array update time 2019-01-06 00:47:32 +00:00
UbitUmarov
be94a0bffa minor cosmetics 2019-01-05 23:39:39 +00:00
UbitUmarov
fc4de64af4 fix reprio trigger on tp 2019-01-04 03:00:36 +00:00
UbitUmarov
e79f266714 oops, thats elsewhere 2019-01-04 02:14:20 +00:00
UbitUmarov
f58a106068 broadcast position updates after tp 2019-01-04 01:55:18 +00:00
UbitUmarov
dd5717f7ae change cancel kill update flags 2019-01-04 01:12:59 +00:00
UbitUmarov
d90b45f25e some viewers now also seem to need time bf closing child regions on TP 2019-01-04 00:12:22 +00:00
UbitUmarov
2ac6fb9ae9 allow landing under lower hight skyboxes 2019-01-03 23:11:39 +00:00
UbitUmarov
c032724921 reduce tp close child agent delay time 2019-01-03 12:36:36 +00:00
UbitUmarov
b24c669c16 more on the hack (runprebuild) 2019-01-02 16:44:13 +00:00
UbitUmarov
9c043fe414 mantis 8438: work around null ref 2019-01-01 13:16:35 +00:00
UbitUmarov
02492f7b15 replace my hack by others hack 2019-01-01 12:06:29 +00:00
UbitUmarov
813fda90da temporary HACK to not kill some viewers 2018-12-31 16:58:44 +00:00
UbitUmarov
ae00623b65 lost in updates 2018-12-31 13:33:00 +00:00
UbitUmarov
d841c593b9 add a bit more persistence (still mysql only) 2018-12-31 09:54:54 +00:00
Melanie
d8ade44fe9 Put the virtual decls back in, they're needed by the freshly donated ...
... XStorage module that creates the XML for the new viewer, anod more.
It overrides them to know if new init XML needs to be cached.
2018-12-31 00:21:50 +00:00
UbitUmarov
ffca7de65d add some persistence (mysql only) 2018-12-30 22:31:32 +00:00
UbitUmarov
24c4cf74c6 mantis 8436: fix lludp message 2018-12-30 19:00:43 +00:00
UbitUmarov
488e2bcde2 update libopenmetaverse 2018-12-30 16:15:35 +00:00
UbitUmarov
817b622b79 changes on updates 2018-12-30 02:41:13 +00:00
UbitUmarov
cf89799c0b changes on updates 2018-12-29 23:03:03 +00:00
UbitUmarov
b156378819 changes on updates 2018-12-29 19:04:39 +00:00
UbitUmarov
333aa0d67c changes on updates 2018-12-29 16:52:16 +00:00
UbitUmarov
7679617d52 change DBGSuids a bit, let it return uuid.zero in more fail cases, not killing region 2018-12-29 13:29:39 +00:00
UbitUmarov
4d3d9998a9 still pgsql 2018-12-28 23:16:05 +00:00
UbitUmarov
616fa8dbee sog GetLinkNumber() forget avatars that did standup 2018-12-28 21:26:07 +00:00
UbitUmarov
00278f7258 remove silly double locking 2018-12-28 21:12:19 +00:00
UbitUmarov
8d28c94879 PGSQL: it may be a good idea to also add the field to the table 2018-12-28 18:52:31 +00:00
UbitUmarov
650cef67d1 PGSQL: store vehicle data 2018-12-28 18:44:33 +00:00
UbitUmarov
c14209e362 add some LSL 2018-12-28 14:40:51 +00:00
UbitUmarov
92b7dd27a3 missing file 2018-12-28 14:03:52 +00:00
UbitUmarov
4a73cc81dc now break several things at same time... sog/sop updates, threads options,... 2018-12-28 13:52:59 +00:00
UbitUmarov
0cf5876c45 update pbs 2018-12-28 13:28:25 +00:00
UbitUmarov
21728b3129 some retouchs on animationset code 2018-12-28 11:38:00 +00:00
UbitUmarov
47563564b7 update libopenmetaverse 2018-12-27 17:35:21 +00:00
UbitUmarov
810ab5f1a3 update OpenSimDefaults.ini 2018-12-21 16:10:31 +00:00
UbitUmarov
3a20ccb403 warp3d: add RenderMinHeight and RenderMaxHeight options, work on prims only for now 2018-12-21 15:51:12 +00:00
UbitUmarov
97747cd3d4 warp3d: try handle planar mapping 2018-12-20 23:27:18 +00:00
UbitUmarov
b240de6aca remove spurius newline 2018-12-20 08:11:03 +00:00
UbitUmarov
23d03517a9 LINK_ALL_CHILDREN includes sitting avatars 2018-12-19 05:40:18 +00:00
UbitUmarov
5c998f6d60 let osGetPrimitiveParams also return sitting avatar informationg, if PRIM_LINK_TARGET points to one 2018-12-19 05:09:38 +00:00
UbitUmarov
f03ee2f795 still another 2018-12-19 04:01:52 +00:00
UbitUmarov
3941c827cc oops 2018-12-19 03:52:43 +00:00
UbitUmarov
9e0a119f9b bug fixes 2018-12-19 03:27:54 +00:00
Stolen Ruby
551c097db9 Added support for f suffix on YEngine floats
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-12-18 21:36:20 +00:00
UbitUmarov
530a6a40ed mantis 8427: add new reject flags, change default, see mantis 2018-12-17 10:57:09 +00:00
UbitUmarov
f94b6c3ead update url to 0.9.1.0 page 2018-12-16 21:22:45 +00:00
UbitUmarov
4d13b1db49 avoid sending garbage... 2018-12-16 20:46:51 +00:00
UbitUmarov
921364e877 several changes to last patch 2018-12-16 20:18:26 +00:00
fly-man-
ed039a5fe0 Enables the buildin Caps ServerReleaseNotes
~ Dedicated to Quill Littlefeather ~

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-12-16 19:17:18 +00:00
UbitUmarov
a2c200e659 Merge branch 'master' of opensimulator.org:/var/git/opensim 2018-12-13 15:39:00 +00:00
Melanie
f31845ed8d Triggering a build / IRC message 2018-12-13 14:21:41 +00:00
UbitUmarov
18947d93fc actually disable osSetContentType on osslEnable.ini, so is only enabled by machine owner intentionally 2018-12-13 13:38:32 +00:00
UbitUmarov
d6c9ddfdee cleanup last patch 2018-12-11 18:23:26 +00:00
Bill Blight
0881840946 Add osNpcSayTo(key npc, key target, integer channel, string message)
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-12-11 17:32:50 +00:00
UbitUmarov
af2a9d9508 mantis 8420: ubOde awake up lazy body 2018-12-11 17:23:55 +00:00
Melanie
5e9fa5e7f5 Return a fake openid token to enable web services on a grid to identify the user 2018-12-11 15:09:06 +00:00
UbitUmarov
2059d548a6 minor changes on llSetContentType 2018-12-11 14:57:33 +00:00
UbitUmarov
2c2b887c8a change osSetContentType threat level 2018-12-11 14:55:32 +00:00
uriesk
34b7d7ec6e Remove OpenID cookie check (agni_sl_session_id) from *SetContentType Remove commented out second llSetContentType thats the same as osSetContentType anyway
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-12-11 14:18:55 +00:00
UbitUmarov
1610595697 Yengine reset global variables possible damaged by bad state file 2018-12-11 00:42:02 +00:00
UbitUmarov
11b467cabf Yengine actually loose the bas state file 2018-12-10 23:45:54 +00:00
UbitUmarov
6297717399 mantis 8419: TakeCopy now sends to objects; Take to a child of trash or lostandfound also, else goes to original folder 2018-12-10 06:23:38 +00:00
UbitUmarov
043a213302 pesty warning 2018-12-08 03:50:51 +00:00
UbitUmarov
6597b7ab46 Yengine try to better recover from invalid state files 2018-12-08 03:31:47 +00:00
UbitUmarov
295f24fe01 mantis 8416: change string compare method (actually on previus commit) 2018-12-08 02:36:59 +00:00
UbitUmarov
f8c3fc5e05 mantis 8416: test 2018-12-08 02:26:36 +00:00
UbitUmarov
7b2b29d10d return a proper http error 2018-12-07 04:45:32 +00:00
UbitUmarov
144f353d50 remove a warning 2018-12-07 03:34:42 +00:00
UbitUmarov
ede7f28184 disable GetAsset (ViewerAsset) cap. Current viewers implementation is not compatible with opensim 2018-12-07 03:31:38 +00:00
UbitUmarov
58b68aa5e9 fix compile putting back useless things until they are fully removed 2018-12-06 19:04:51 +00:00
UbitUmarov
66f46c6846 ubOde: slow down collision events to attachments 2018-12-06 18:50:42 +00:00
UbitUmarov
d2bfe986bf GetAssets: only throttle mesh and texture 2018-12-06 02:28:26 +00:00
UbitUmarov
deb0ab7400 GetAssets: we still need to service avatars that did left region 2018-12-04 21:56:39 +00:00
UbitUmarov
037de89a75 clean a bit 2018-12-03 13:51:45 +00:00
UbitUmarov
66f3c6c730 avoid a data copy 2018-12-03 10:39:54 +00:00
UbitUmarov
79234795fd avoid a data copy 2018-12-03 10:17:22 +00:00
UbitUmarov
57bd671e00 stats heap allocation rate can negative 2018-12-02 17:29:13 +00:00
UbitUmarov
ca754b0156 avoid a data copy 2018-12-02 16:17:23 +00:00
UbitUmarov
7a4d8017d7 simplify a bit 2018-12-02 00:41:01 +00:00
UbitUmarov
9cb0c51483 cleanup 2018-12-01 23:18:48 +00:00
UbitUmarov
8c80572b02 comment some debug msgs 2018-12-01 23:17:45 +00:00
UbitUmarov
4ced4fed33 replace GetMeshModule and GetTextureModule 2018-12-01 23:13:24 +00:00
UbitUmarov
27dfdcf1fa clean a bit 2018-12-01 18:50:53 +00:00
UbitUmarov
e08b43569e potencial mem leak 2018-12-01 18:49:30 +00:00
UbitUmarov
60bc64a90f LLSDxmlencode uint and ulong 2018-11-30 23:13:21 +00:00
UbitUmarov
b783244a50 move http range parser to util 2018-11-30 23:10:29 +00:00
UbitUmarov
7554e62861 add a sound 2018-11-30 22:03:30 +00:00
UbitUmarov
0ba13b9b00 recover GetMesh2 cap 2018-11-30 12:28:37 +00:00
UbitUmarov
cc7a241cbc remove xmr json functions that where a fix for ossl ones now removed 2018-11-29 21:07:46 +00:00
UbitUmarov
98b12278f0 fix CopyInventoryFromNotecard error handling 2018-11-29 20:21:25 +00:00
UbitUmarov
2eee87fea3 mantis 8414: add cap CreateInventoryCategory handler 2018-11-29 18:57:32 +00:00
UbitUmarov
47bc1fb257 OSSL remove functions with illegal lsl types, also redundante 2018-11-28 08:20:38 +00:00
UbitUmarov
a99055160b YEngine no longer uses mono.tasklets 2018-11-27 17:47:37 +00:00
UbitUmarov
aeba9c2394 oops fix vs2015 msbuild detection 2018-11-27 17:31:59 +00:00
UbitUmarov
834a8fac2f update DotNetOpenMail.dll 2018-11-27 14:11:43 +00:00
UbitUmarov
c98f4d0158 remove unmaintaned and obsolete GlynnTucker.Cache 2018-11-27 13:40:09 +00:00
UbitUmarov
46defa5d31 change runprebuild.bat to not create compile.bat if msbuild for vs2017 or vs2017 not found 2018-11-27 13:02:12 +00:00
UbitUmarov
cc6a02dd53 remove option vs2010 from runprebuild.sh 2018-11-27 11:28:33 +00:00
UbitUmarov
28171e1d10 change runprebuild.bat to try to find msbuild of most recent visual studio instaled for compile.bat 2018-11-27 11:20:39 +00:00
UbitUmarov
0307427b94 a few more changes 2018-11-26 20:20:28 +00:00
UbitUmarov
7258531e3b show prim ID on script error 2018-11-26 19:57:42 +00:00
UbitUmarov
27da6f1301 Yengine: simplify ossl severe error message, and make it on debug channel like Xengine 2018-11-26 19:44:32 +00:00
UbitUmarov
911ef0ce52 remove a ossl dev only option 2018-11-26 18:35:45 +00:00
UbitUmarov
87acd20d95 add script constant OS_APIVERSION, we should inc this on any change on any api. a few changes to os npc and avatar animation functions 2018-11-26 16:45:04 +00:00
UbitUmarov
1e76e14cce a fix to contributors list 2018-11-26 12:21:47 +00:00
UbitUmarov
28366f789e change HandlerDeRezObject again to account for out or order packets 2018-11-26 04:19:41 +00:00
UbitUmarov
dc9f0d3627 change code feature that old compilers don't suport 2018-11-26 01:29:25 +00:00
UbitUmarov
be2c0aa552 fix ossl severe error 2018-11-25 23:10:44 +00:00
UbitUmarov
cded996265 remove a dev only conditional on lludp handlers; change parcel lists updates a bit; 2018-11-25 18:56:38 +00:00
UbitUmarov
d179b2dda1 avoid data references stuck in packet pools 2018-11-25 18:38:37 +00:00
UbitUmarov
91986445a6 update contributors 2018-11-24 15:24:23 +00:00
UbitUmarov
fa29db5552 Yengine: oops rename the var on all relevant places 2018-11-23 02:43:34 +00:00
UbitUmarov
590d7ccf43 try better handling of llupd DeRezObject 2018-11-23 02:09:35 +00:00
UbitUmarov
5dc20ad1e5 Yengine: rename a local var 2018-11-23 01:54:22 +00:00
UbitUmarov
56845d4b75 mantis 8411: fix send inventory item flags mask 2018-11-23 00:42:05 +00:00
UbitUmarov
5951152082 Yengine: try read XEngine state from wire 2018-11-22 01:11:35 +00:00
UbitUmarov
fb0c8036f0 Yengine: use using... 2018-11-20 23:07:14 +00:00
UbitUmarov
3e5ca6efd6 Yengine: change script first line processing, also look to language option 2018-11-20 22:54:57 +00:00
UbitUmarov
5485ba2ae6 Yengine: do use SourceHashCode 2018-11-20 22:43:03 +00:00
UbitUmarov
a2208e5c8c Yengine: remove some xmr API functions now added to OSSL 2018-11-20 22:32:07 +00:00
UbitUmarov
82415785fc bitbucket still does not like building.md 2018-11-20 18:17:55 +00:00
UbitUmarov
cb1ebd1604 add osApproxEquals for float, vector and rotation, note that default margin is 1e-6 to match strings rounding 2018-11-20 18:12:18 +00:00
UbitUmarov
c4a0e574c8 mantis 8410: llwhisper, llSay and llShout emit from the source prim not root 2018-11-19 14:07:48 +00:00
UbitUmarov
cea34f7065 a few changes to README.md 2018-11-19 11:04:38 +00:00
UbitUmarov
b71ec0f2d6 another change to building.md 2018-11-19 10:06:36 +00:00
UbitUmarov
67d5212d53 another change to Building md file 2018-11-19 02:26:08 +00:00
UbitUmarov
8474af04e1 removed repeated lines 2018-11-19 00:56:10 +00:00
UbitUmarov
2fb82f84d2 update osslEnable 2018-11-18 23:35:16 +00:00
UbitUmarov
5f2a76437e update script syntax 2018-11-18 22:45:53 +00:00
UbitUmarov
9dfb906666 add a few string functions to OSSL 2018-11-18 22:40:59 +00:00
UbitUmarov
01b84ef46b some cleanup 2018-11-18 22:39:08 +00:00
UbitUmarov
5b2fab99a6 update osslEnable 2018-11-18 19:45:22 +00:00
UbitUmarov
ba87ba9c47 remove odd ossl function 2018-11-18 19:40:51 +00:00
UbitUmarov
9be4663d3c typos 2018-11-18 18:50:19 +00:00
UbitUmarov
65310f3e5e don't share SHA256CryptoServiceProvider (can be improved) 2018-11-18 01:01:39 +00:00
UbitUmarov
a23be00bf3 ohh we have build instructions on git also ;) 2018-11-17 23:22:38 +00:00
UbitUmarov
bbf1ed6727 code aesthetics 2018-11-17 21:15:36 +00:00
UbitUmarov
6e98272f0d code aesthetics 2018-11-17 20:46:09 +00:00
UbitUmarov
ad99461590 code aesthetics 2018-11-17 20:43:16 +00:00
UbitUmarov
cebe40f5cd ooops 2018-11-17 20:27:09 +00:00
UbitUmarov
f6d4fadb0a a few more changes to pbs 2018-11-17 20:22:15 +00:00
UbitUmarov
87a723cbc8 code aesthetics and simplification 2018-11-17 18:52:16 +00:00
UbitUmarov
852e20a5a7 code aesthetics 2018-11-17 17:35:47 +00:00
UbitUmarov
efd6fb05a9 code aesthetics 2018-11-17 17:05:28 +00:00
UbitUmarov
1f5169e636 code aesthetics 2018-11-17 16:04:55 +00:00
UbitUmarov
d43eeb1d9d avoid a null ref on Bullet 2018-11-15 22:17:44 +00:00
UbitUmarov
9234613ed5 update script syntax 2018-11-15 20:49:15 +00:00
UbitUmarov
7bcef500a9 remove CM api, add replacement ossl functions, as i should had done on the merge of avination code contrib. (runprebuild) 2018-11-15 20:29:25 +00:00
UbitUmarov
d537862cc2 Yengine: remove potencial log spam 2018-11-15 16:57:50 +00:00
UbitUmarov
f44569eee5 Yengine: ignore llResetScript() in default state_entry like X does. No idea why some do it, but do 2018-11-15 01:24:46 +00:00
Kevin Cozens
54b4e7a3e3 Fixed spelling error (availble -> available) 2018-11-14 18:16:52 -05:00
Kevin Cozens
06fef1569b De-tabified OpenSim.ini and made trivial fixes to two comments. 2018-11-14 18:12:22 -05:00
UbitUmarov
fad6295398 change ossl link sound functions to search for sound both on script host and target prims 2018-11-14 19:02:00 +00:00
UbitUmarov
afb1d6cdd7 take friends out of basicDOSprot (too little, too late) 2018-11-14 17:49:05 +00:00
UbitUmarov
35f5d4449b take login service out of basicDOSprot (too little, too late) 2018-11-14 17:33:26 +00:00
UbitUmarov
b48cbcbfdd simplify a bit some caps paths 2018-11-14 16:23:14 +00:00
UbitUmarov
942fd5e653 replace Enviroment response encoding ( runprebuild needed) 2018-11-14 15:34:12 +00:00
UbitUmarov
a1a8b5f4a7 replace RemoteParcelRequest response encoding ( runprebuild needed) 2018-11-14 13:12:25 +00:00
UbitUmarov
48854ec83d some cleaup 2018-11-13 01:19:44 +00:00
UbitUmarov
cc10cd2161 oops 2018-11-13 00:58:27 +00:00
UbitUmarov
e4ed2d7d6c similar changes on CopyBundleToInventory 2018-11-12 23:53:20 +00:00
UbitUmarov
191b0888a2 a few changes to deattach object update 2018-11-12 23:21:08 +00:00
UbitUmarov
d31854ee3c BuySell: a few changes on sell copy 2018-11-12 22:54:37 +00:00
UbitUmarov
7fcb3fdf11 FSAssets: truncate assets name and description to max size 2018-11-12 20:46:11 +00:00
UbitUmarov
c28738a17f fix a http error response 2018-11-12 16:06:40 +00:00
UbitUmarov
64f8036d8f pesty warning 2018-11-12 11:22:39 +00:00
UbitUmarov
c05598fe62 ubOde: remove support for old native ODE lib; make inplace terrain changes, if possible 2018-11-12 11:12:52 +00:00
UbitUmarov
9185d397df add a bit more things to ScriptSyntax, change a few more incoerent lsl types in function arguments 2018-11-10 21:00:04 +00:00
UbitUmarov
90db067d2a last commit was relative to mantis 8405 not 8396 2018-11-09 15:33:54 +00:00
UbitUmarov
f9a2fbed83 mantis 8396: on access control, change viewer string to match so it does include the viewer name, not just version 2018-11-09 15:22:15 +00:00
UbitUmarov
492b9e3326 mantis 8035: fix number of prims use to be from all owned parcels 2018-11-08 21:52:16 +00:00
UbitUmarov
fe63b4c97d fix unknown priority scheme setting error. Thx Ai Austin 2018-11-08 16:38:34 +00:00
UbitUmarov
72d9bbfafb some cleanup 2018-11-08 01:24:13 +00:00
UbitUmarov
31e49a7ab3 update ini files comments on InterestManagement 2018-11-08 01:14:32 +00:00
UbitUmarov
ad8ddb8a78 changes to objects updates prioritizing getting dust on my disk. Schemes reduced to SimpleAngularDistance and BestAvatarResponsiveness 2018-11-07 20:32:39 +00:00
UbitUmarov
afd3852a36 change region gettexture response if presence not found 2018-11-07 05:11:36 +00:00
UbitUmarov
41df4d7da4 remove some fire and forget methods missed file 2018-11-06 15:23:20 +00:00
UbitUmarov
3741abab7c udp threads don't need to be fg 2018-11-06 15:18:36 +00:00
UbitUmarov
2f07f96686 remove some fire and forget methods 2018-11-06 15:15:35 +00:00
UbitUmarov
6ea394467d if viewer asks for range reply in same format even if its full data 2018-11-06 15:09:49 +00:00
UbitUmarov
9e274ce64d fix typo 2018-11-03 11:52:41 +00:00
UbitUmarov
5b5e53aa1d we should only have one http poll service manager per instance 2018-11-03 11:43:47 +00:00
UbitUmarov
3e6342eb61 fix lsl http url pool service still not starting correctly 2018-11-02 02:25:53 +00:00
UbitUmarov
0aff4a2914 fix lsl http url pool service not beeing removed 2018-11-02 02:21:34 +00:00
UbitUmarov
1ea5116f00 forgot about lsl secure urls service.. so lets try another way for now (mantis 8382) 2018-11-02 00:08:34 +00:00
UbitUmarov
9e71b5575a only main http server listener should run events pool 2018-11-01 21:36:37 +00:00
UbitUmarov
292a9c9cd7 update httpserver.dll 2018-10-30 23:24:59 +00:00
UbitUmarov
cf33e0440a reduce some threads priority 2018-10-28 14:43:14 +00:00
UbitUmarov
a1d132d3ca let the syntax file include its id again 2018-10-25 02:36:36 +01:00
UbitUmarov
a95397e8f5 update syntax file 2018-10-25 02:12:23 +01:00
UbitUmarov
7479638e88 remove a unnecessary scripts constants file 2018-10-25 02:06:44 +01:00
UbitUmarov
82a0fa7dfe update script syntax file 2018-10-24 17:29:31 +01:00
Bill Blight
bd4907e960 Protect/Prevent user names from using valid HG identifiers.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-10-23 22:06:16 +01:00
UbitUmarov
c643b4236f a few changes to last commit 2018-10-23 18:55:26 +01:00
Mandarinka Tasty
06a35b9559 llName2Key. Thanks to mewtwo0641 and watcher64.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-10-23 18:01:13 +01:00
UbitUmarov
7c8cf9f362 remove a dead module 2018-10-23 12:48:28 +01:00
UbitUmarov
601d965009 remove AttachmentsCommandModule 2018-10-23 12:27:08 +01:00
UbitUmarov
cba65b1935 recover the inword region console comand Set AutoGrantAttachPerms 2018-10-23 11:02:16 +01:00
UbitUmarov
d842f835a6 remove ThrottlePer100PrimsRezzed option, do not delay attachments with thread.sleep 2018-10-23 10:27:09 +01:00
UbitUmarov
050d53fe5b fix opensim.ini.examplewq coments on mutes module 2018-10-22 02:18:55 +01:00
UbitUmarov
dd2fd3e4a0 fix wrong error message in mutelist connector 2018-10-22 02:06:56 +01:00
UbitUmarov
fdb4fb3f3f update script syntax 2018-10-21 17:53:02 +01:00
UbitUmarov
495b22470d oops some code got in ahead of time 2018-10-21 12:41:28 +01:00
UbitUmarov
0986555765 mantis 8387: (try) avoid potencial out of order phys operations 2018-10-21 12:13:21 +01:00
lickx
94a5e5b9b7 Add non-transparent water asset
Used by all viewers when 'Transparent Water' is unchecked in the viewer
prefs

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-10-20 19:58:22 +01:00
UbitUmarov
4ca859b4fc mantis 8356: patched by hand, thx Lotek 2018-10-20 19:49:37 +01:00
UbitUmarov
56d5b3bf92 oops 2018-10-20 16:21:36 +01:00
UbitUmarov
47488c9017 change ossl tests setup 2018-10-20 16:01:26 +01:00
UbitUmarov
2c3522a826 ossl error messages are not from a agent 2018-10-20 15:38:50 +01:00
UbitUmarov
d1d370ada3 avoid a null ref during jenkins tests 2018-10-20 15:35:04 +01:00
UbitUmarov
05b79e203d change ossl error report and NPC create error handling 2018-10-20 15:25:28 +01:00
UbitUmarov
8b5b251d1a mantis 8398: fix with previus commits; removed redundante code 2018-10-20 14:10:56 +01:00
UbitUmarov
2ea5f09ed3 Remove NPCs from UserManagement when removed 2018-10-20 14:07:01 +01:00
UbitUmarov
6d063785bd add RemoveUser to UserManagement 2018-10-20 14:04:11 +01:00
UbitUmarov
e7d9fe966c fix groups v2 agentUUI ofr uuid.zero case 2018-10-20 14:00:13 +01:00
UbitUmarov
f01e4600d1 double Ooopss 2018-10-20 02:06:05 +01:00
UbitUmarov
0611d3339b remove TempAttachments module 2018-10-20 01:00:55 +01:00
UbitUmarov
d9018cf517 add a few more things to SrcriptSyntax 2018-10-20 00:21:40 +01:00
UbitUmarov
76f8a09bb3 LSLSyntax some cleanup 2018-10-19 19:37:13 +01:00
UbitUmarov
2886408a76 autogen LSLSyntax version uuid 2018-10-19 18:35:31 +01:00
UbitUmarov
4fae8d3d39 cap LSLSyntax was enabled by mistake 2018-10-19 04:06:47 +01:00
UbitUmarov
190e7433cc fix typos 2018-10-19 04:03:52 +01:00
UbitUmarov
6569f12d40 add initial test support for cap LSLSyntax. This does not seem to work for Opensimulator on viewers, In particular with FireStorm seems impossible to replace its own definitions, viwers do note revert to defaults on tp to a region that does not suport this cap, etc. So possible just a dead end. Disabled by default 2018-10-19 03:43:01 +01:00
UbitUmarov
db255c97d6 fix AGENT_MALE lsl constant havinf same value as AGENT_AUTOPILOT 2018-10-18 23:15:58 +01:00
UbitUmarov
877a78ce91 change chattype on llRegionSayTo when sending to avatar viewer only.
Thanks Royale for pointing this
2018-10-18 15:04:54 +01:00
UbitUmarov
96acb48334 mantis 7391: deliver llregionSayTo to all scripts on prim that match target specs 2018-10-18 14:42:07 +01:00
UbitUmarov
235dd37b9c better have a lock 2018-10-08 18:53:30 +01:00
UbitUmarov
57ec0d3884 change caps get mesh and texture throttle 2018-10-08 17:29:42 +01:00
UbitUmarov
7eeaee631d avoid a null ref 2018-10-08 16:59:57 +01:00
UbitUmarov
87e97543d6 try to make inventory fetch tests happy 2018-10-07 01:36:47 +01:00
UbitUmarov
eb5fe57a17 more use of simpler xml encoder on inventory fetch, plus other cosmetics 2018-10-06 23:47:56 +01:00
UbitUmarov
1bcdcc2419 mantis 8384: try to fix bullet heimap managed memory sharing with unmanaged lib 2018-10-03 21:17:23 +01:00
UbitUmarov
57ae99b113 missed new c# version only code 2018-09-30 05:39:58 +01:00
UbitUmarov
0f1bc23039 a few changes to last patch 2018-09-30 05:11:34 +01:00
Mandarinka Tasty
5751add537 Implementation-and-design-of-ClientOnParcelGodMark
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-09-30 04:36:39 +01:00
UbitUmarov
8812684355 minor changes 2018-09-29 21:40:52 +01:00
Bill Blight
6d9de17d77 **CONFIRMED**AGAIN** , Add new function, osSetOwnerSpeed(float speed), threat level moderate
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-09-29 21:16:33 +01:00
UbitUmarov
ed0e2623b9 add a few more gc collect in some spots 2018-09-29 17:42:12 +01:00
UbitUmarov
5a0c9c2fcf more on culture issues 2018-09-27 19:04:11 +01:00
UbitUmarov
37dcb8722c make sure Culture is right on some spots 2018-09-26 22:32:34 +01:00
UbitUmarov
a5d6a394ef mantis 8372: replace XMLRPC.dll with utf8 fix 2018-09-17 15:12:02 +01:00
UbitUmarov
391edb862e stop sending agent update again when destiny refused the agent 2018-09-15 00:44:10 +01:00
UbitUmarov
e96e923159 some teleport issues.. 2018-09-14 21:54:38 +01:00
UbitUmarov
075ebf3524 fix osDie harakiri for Yengine 2018-09-13 12:32:55 +01:00
UbitUmarov
4652f8b84f pesty warning 2018-09-13 11:38:28 +01:00
UbitUmarov
ca404e5001 some cleanup 2018-09-12 13:48:29 +01:00
UbitUmarov
cd9327cd8b Merge branch 'master' of opensimulator.org:/var/git/opensim 2018-09-12 13:24:01 +01:00
Melanie
e874e3a2ad Merge branch 'master' of opensimulator.org:/var/git/opensim 2018-09-12 13:22:17 +01:00
Melanie
39e82cb043 Squelch "connection reset by peer" exceptions 2018-09-12 13:13:11 +01:00
UbitUmarov
714f4387b8 fix a error message 2018-09-11 10:31:02 +01:00
UbitUmarov
f466c56ba4 oooops 2018-09-08 07:39:14 +01:00
UbitUmarov
ca9651df0d Yengine cast issue 2018-09-08 04:58:14 +01:00
UbitUmarov
0d93d5ce69 fix script secure llhttlrequest 2018-09-08 04:46:02 +01:00
UbitUmarov
e6615a193d a few changes to ScriptSleep() functions 2018-09-04 22:19:30 +01:00
mewtwo0641
4e4d687f3f Add YEngine support for ScriptDelayFactor
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-09-04 21:38:09 +01:00
UbitUmarov
50627304a6 avoid using new c# sintaxe that will fail on older compilers 2018-08-30 20:09:12 +01:00
UbitUmarov
9647a1e6c5 minor changes to last patch 2018-08-30 14:51:07 +01:00
Mandarinka Tasty
99a23421a8 Adding check permission CanIssueEstateCommand for osRegionNotice and new function osRegionNotice(string agentID, string msg)
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-08-30 14:25:19 +01:00
UbitUmarov
7120ffbc08 add the Smoke texture to Opensim Library 2018-08-28 21:51:59 +01:00
UbitUmarov
e075b349ce new try on smoke texture 2018-08-27 15:12:24 +01:00
Fly Man
d9028ac07f Adjusted Smoke texture
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-08-27 11:51:03 +01:00
UbitUmarov
9f3c803552 avoid potencial null refs 2018-08-26 08:40:35 +01:00
UbitUmarov
7c60e83f30 don't shutdown robust twice 2018-08-26 08:37:30 +01:00
UbitUmarov
58ba645160 mantis 8273 make change on crossings coerent 2018-08-26 03:11:32 +01:00
UbitUmarov
14f55ab36e fix smoke asset filename 2018-08-26 01:33:49 +01:00
UbitUmarov
10e4d01375 remove a comment 2018-08-26 01:01:17 +01:00
fly-man-
d3d915ce3c Patching in the Smoke for Mantis 8242
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-08-26 00:54:32 +01:00
UbitUmarov
88d638a0cf mantis 8349: fix landmasks 2018-08-07 20:38:58 +01:00
UbitUmarov
390cb703f3 and some more guard try{}catch{} on ub mesh processing 2018-07-29 23:31:38 +01:00
UbitUmarov
a6d5da3e7f mantis 8346: fix argument of osUnixTimeToTimestamp 2018-07-27 14:20:59 +01:00
UbitUmarov
1b5c6c48f9 make BanLineSafeHeight option visible in OpenSimDefaults.ini 2018-07-21 18:36:29 +01:00
UbitUmarov
e15fca60d1 mantis8342: make max ban height above ground configurable per regions instance with ini file option BanLineSafeHeight 2018-07-21 18:31:58 +01:00
UbitUmarov
8c1c9129aa mantis8341: fix MOD and LS apis configuration read from ossl file 2018-07-18 22:19:46 +01:00
UbitUmarov
9278a9a9dd http reusecontext is obsolete 2018-07-14 22:35:51 +01:00
UbitUmarov
81fb1b008f http reusecontext is obsolete 2018-07-14 21:51:43 +01:00
UbitUmarov
aee981e5e2 http reusecontext is obsolete 2018-07-14 21:48:59 +01:00
UbitUmarov
ee2eed8c6f http reusecontext is obsolete 2018-07-14 21:42:07 +01:00
UbitUmarov
01400e38d5 typos 2018-07-14 18:41:13 +01:00
UbitUmarov
0daa4eff8a minor cleanup 2018-07-14 17:07:30 +01:00
UbitUmarov
ee6f261415 a few changes about test mesh uploads 2018-07-14 17:01:50 +01:00
UbitUmarov
dd508d4c4f use Vector.Distance not util.. 2018-07-14 16:58:09 +01:00
UbitUmarov
282877a454 save a sqrt call 2018-07-14 16:47:51 +01:00
UbitUmarov
dd67ab6025 change the scope of those options variables 2018-07-14 16:42:10 +01:00
UbitUmarov
a4881797b9 add options for regions to ignore age < 18 and payment access control where they don't apply 2018-07-14 16:36:41 +01:00
UbitUmarov
6b8fda098d recover lost null check in last commit 2018-07-14 16:11:03 +01:00
UbitUmarov
0731220a9d change bitmasks work 2018-07-14 15:21:59 +01:00
UbitUmarov
8ab5a87520 only resize if need 2018-07-14 15:19:09 +01:00
UbitUmarov
84235900b2 do not use lossless compression on dyntextures 2018-07-14 15:13:21 +01:00
UbitUmarov
ef8097f998 add missing xml escape 2018-07-14 14:46:08 +01:00
UbitUmarov
ea815df6bd add a disabled log 2018-07-14 14:43:20 +01:00
UbitUmarov
6f4052561e send data as bin not string to http lower level 2018-07-14 14:39:29 +01:00
UbitUmarov
f9c9dc585c have default ids of avatar alpha and tattoo 2018-07-14 14:27:33 +01:00
UbitUmarov
f17b48e73e some cleanup 2018-07-14 14:22:52 +01:00
UbitUmarov
770f59ff87 drop compatibility with old robust that did not suport inventoryService.GetMultipleItems 2018-07-14 14:09:56 +01:00
UbitUmarov
c7baee1638 add using into a few more places 2018-07-14 14:05:47 +01:00
UbitUmarov
d7a9195078 missed one 2018-07-14 02:12:51 +01:00
UbitUmarov
519d320e3c update ini.example files 2018-07-14 01:10:59 +01:00
UbitUmarov
8ed4bee521 mantis 8333: kept idea but my own code. With ini setting ConsoleHistoryTimeStamp set to true, the console history file will have timestamps. Im lazy date is in en-us culture for now. (robust also) 2018-07-14 00:46:47 +01:00
UbitUmarov
a235a28132 minor changes to last patch 2018-07-13 23:03:26 +01:00
fly-man-
334986ddc6 Group Powers changed and Officers role brought back for Groups
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-07-13 22:12:19 +01:00
UbitUmarov
3cea21ab63 mantis 8335: fix string format 2018-07-11 18:26:17 +01:00
UbitUmarov
e52bc6b575 Mantis 8308: update libopenjpeg-dotnet-2-1.5.0-dotnet-1.dylib adding missing 64bit support. Built with the macOS 10.13 SDK on Xcode 9.4.1. Thanks Gavin Hird for providing us this. 2018-07-11 12:09:59 +01:00
UbitUmarov
ee115a83df Bug fix: Object Wear was doing Add not replace 2018-07-11 03:08:57 +01:00
UbitUmarov
c3933ce8b9 replace some string tests 2018-07-08 13:41:55 +01:00
UbitUmarov
60644b440b we don't use tab simbol, we use 4 whitespaces 2018-07-08 13:26:41 +01:00
Vincent Sylvester
6e3f934c4b Add mac banning
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2018-07-08 13:05:47 +01:00
UbitUmarov
102fbf8422 update contributors 2018-07-07 16:44:08 +01:00
UbitUmarov
18cc36cf41 update contributors 2018-07-07 16:22:24 +01:00
Kevin Cozens
e5238cadf7 Back-end fix for region name searches made from the viewer grid map dialog.
GetRegionsByName now returns names that include, but don't start with, the
given search string.
2018-07-06 21:28:18 -04:00
UbitUmarov
8ac69a5d27 just remove the test instead 2018-07-06 02:23:06 +01:00
UbitUmarov
834a0e8b6d fix version string size test 2018-07-06 01:57:59 +01:00
UbitUmarov
6da07ded04 let OpenSim.ini.example be closer to functional standalone ini 2018-07-05 22:34:08 +01:00
UbitUmarov
5e1bf88875 test jenkins 2018-07-05 20:27:52 +01:00
UbitUmarov
91247e0631 test 2018-07-05 02:29:56 +01:00
UbitUmarov
39c8db8eb1 ubOde change terrain min height to -100m. Maybe this way a viewer dev mays fix rendering below 0m, like making them think z = 1m for that purpose, for example 2018-06-27 23:14:26 +01:00
UbitUmarov
c53658248a reassign estate setting TaxFree to the role of AllowAccessOverride, as viewers did. Keeping name to reuse dbs entries, etc. let viewers change it, but still NOP 2018-06-19 01:18:18 +01:00
UbitUmarov
9b87626cdb mantis 8329: don't fail if response stream is Chunked encoded and http debuglevel >=5 2018-06-18 01:04:26 +01:00
UbitUmarov
31633699cf mantis 8327: refix minor typos 2018-06-16 16:01:09 +01:00
UbitUmarov
c3d2f2d119 mantis 8327: fix minor typos 2018-06-16 14:18:05 +01:00
UbitUmarov
ba193fc606 minor cleanup 2018-06-16 14:11:44 +01:00
UbitUmarov
76a82ba5de improve llOverMyLand() handling of potencial null refs. ty mrieker 2018-06-09 20:45:05 +01:00
UbitUmarov
a48d65fd77 Yengine apply a fix to CheckRunLockInvariants by mrieker 2018-06-09 20:35:35 +01:00
UbitUmarov
3b2786d27e change MaxRegionsViewDistance description a bit 2018-05-28 15:21:51 +01:00
UbitUmarov
83029042d3 ok ok it only has one 't' 2018-05-28 10:09:37 +01:00
UbitUmarov
629eeca836 english typo, thx you know who 2018-05-28 09:48:14 +01:00
UbitUmarov
5463bffa68 make Yengine post attach event as Xengine does. This should fix that event. Thx mrieker for pointing out this issue 2018-05-28 09:25:09 +01:00
UbitUmarov
458fe42afd fix some cases in prim number of sides 2018-05-27 01:54:05 +01:00
UbitUmarov
e0b2ee80f9 fix a bug on warp3d.dll 2018-05-26 23:03:27 +01:00
UbitUmarov
d5117b6cf7 update warp3d.dll 2018-05-26 19:32:37 +01:00
UbitUmarov
007adce081 missing updated files 2018-05-26 19:02:09 +01:00
UbitUmarov
f6765b8668 use RegionInfo.ServerURI to report region url on datasnapshot 2018-05-26 05:43:55 +01:00
UbitUmarov
57fb1ea9df stale LandSnapshot by time also, so dwell can be updated 2018-05-26 04:58:44 +01:00
UbitUmarov
7c50651cd1 add a check to data_exposure option of DataSnapshot module 2018-05-26 03:35:56 +01:00
UbitUmarov
8f0f102869 fix one english typo 2018-05-26 03:18:53 +01:00
UbitUmarov
631308a1d1 map... 2018-05-18 05:31:45 +01:00
Kevin Cozens
c7f3f3586d Warp3D tried to do something in RegionLoaded even when the module was disabled 2018-05-16 14:29:45 -04:00
Kevin Cozens
1ea71c6182 Whitespace changes 2018-05-16 14:29:10 -04:00
UbitUmarov
06d6c4abda breaking map a bit more... 2018-05-15 23:56:12 +01:00
UbitUmarov
f87219975d bug fix: avoid null ref on trigger soundi if source is a avatar 2018-05-15 00:56:31 +01:00
UbitUmarov
570440256b avoid potencial out of range issues 2018-05-13 03:09:56 +01:00
UbitUmarov
fbb77274da OOps my bad, always do deep copy, let viewers do v1 v2 fixes 2018-05-12 21:35:25 +01:00
UbitUmarov
468b25ff69 let wearables check command suport variable number of wearables 2018-05-12 19:57:55 +01:00
UbitUmarov
0d83b9edc3 create user with model: do not copy missing items; convert v1.0 to v2.0 wearables, fail if model has missing wearables 2018-05-12 19:16:23 +01:00
UbitUmarov
cf1ea3b093 breaking map (warp3d) suport default map parameters. Planar not suported ( will render as deafaul 2018-05-08 16:58:15 +01:00
UbitUmarov
f7475d4a98 breaking map (warp3d)... 2018-05-08 07:01:38 +01:00
UbitUmarov
4837a8a8fa breaking map (warp3d); remove warp3d viewport code not realy used and confusing my last neuron 2018-05-07 17:29:19 +01:00
UbitUmarov
fd426354f1 breaking map (warp3d) 2018-05-07 06:08:54 +01:00
UbitUmarov
ea5d40f7f2 breaking map (warp3d) 2018-05-07 03:56:53 +01:00
UbitUmarov
00cc17c239 breaking map (warp3d) 2018-05-06 23:28:36 +01:00
UbitUmarov
b91c0f0d01 remove some debug lines 2018-05-06 18:04:56 +01:00
UbitUmarov
0467b6dc3b change the AverageTextureColorOnMapTile default to false 2018-05-06 17:50:07 +01:00
UbitUmarov
dffa628966 break nap a bit more, add options ExportMapAddScale, ExportMapAddRegionName and (warp3d) AverageTextureColorOnMapTile 2018-05-06 17:32:03 +01:00
UbitUmarov
bf0ece8061 fix warp3d textures UV 2018-05-05 04:27:41 +01:00
UbitUmarov
020f34f75b a few more changes to warp3d and export-map 2018-05-05 02:50:27 +01:00
UbitUmarov
a91ef313ef change warp3d terrain rendering, so it does cover all area 2018-05-05 00:49:57 +01:00
UbitUmarov
09ae675d28 Merge branch 'master' into httptests 2018-05-04 23:01:53 +01:00
UbitUmarov
24df1086fa fix ubOde terrain copy at north and east borders 2018-05-04 23:00:34 +01:00
UbitUmarov
acd55c6f12 mantis 8084: add the missing PRIM_ALPHA_MODE constants 2018-05-04 20:15:56 +01:00
UbitUmarov
7838689dda why where map and dynamic textures compressed lossless? 2018-05-04 16:59:11 +01:00
UbitUmarov
9ae3452e03 change region console comand export-map: make it work with var regions, center target region and make the display area be the region size plus MaxMaxRegionViewDistance in all 4 directions. Add the region name and total area size text info. Some of this can be made options/comand arguments in future improvements 2018-05-01 16:01:11 +01:00
UbitUmarov
26ecba48f0 Merge branch 'master' into httptests 2018-04-28 12:45:32 +01:00
UbitUmarov
44fd5bb7b5 mantis 8321: avoid null reference potencial caused by outdated LMs for example 2018-04-28 12:43:06 +01:00
Kevin Cozens
bf175d1f01 Added important comment missed from my previous commit (hash 8af2d99b). 2018-04-27 22:03:54 -04:00
Kevin Cozens
16c72dce5d Whitespace change. 2018-04-27 20:15:39 -04:00
UbitUmarov
76c4296e39 remove a extra source line i left behind 2018-04-27 22:38:27 +01:00
UbitUmarov
c6c386cd80 recover previus behavior of FontProp 2018-04-27 22:30:47 +01:00
Kevin Cozens
8af2d99ba9 Do dispose and new Font only once when handling FontProp drawing command. 2018-04-27 16:48:35 -04:00
UbitUmarov
f29358744d fix http keep alive header 2018-04-20 09:23:30 +01:00
UbitUmarov
037e5d8031 save a few ns 2018-04-19 19:21:08 +01:00
UbitUmarov
ad0b736405 reduce debug logs 2018-04-19 19:11:50 +01:00
UbitUmarov
79ec9d2887 use seconds version of gettimestamp 2018-04-19 19:08:28 +01:00
UbitUmarov
728040ab47 a few minor changes 2018-04-19 18:58:51 +01:00
UbitUmarov
fced731e70 save a few ns on lsl vector rotations 2018-04-14 23:34:16 +01:00
UbitUmarov
7c9c5cfedf robust create user: allow new userid to be to generate a new random one; handle possible case of a weareble being a inventory link 2018-04-14 23:05:46 +01:00
UbitUmarov
90482182e5 sound radius: missing file 2018-04-10 22:24:48 +01:00
UbitUmarov
ca7bd13dee sound radius is a prim prop only set by llSetSoundRadius, fix it in case viewers do fix its use (ignored for now) 2018-04-10 21:45:11 +01:00
UbitUmarov
dc35ce26d0 YEngine: apply a few fixes by Mike Rieker 2018-04-10 21:15:55 +01:00
UbitUmarov
63418349e5 mantis 8275: fix llStopSound for llPlaySound. Code was doing as SL wiki but not as not real regions with FireStorm. Singularity will only stop loop sounds. None stops Trigger 2018-04-10 07:27:10 +01:00
UbitUmarov
5d0a1656bf mantis 8305: add osTriggerSoundLimited(..) 2018-04-10 03:58:54 +01:00
UbitUmarov
8a30d1303d some cleanup on ll sound functions 2018-04-09 00:48:29 +01:00
UbitUmarov
81431e90de update osslEnable.ini with the new functions 2018-04-09 00:23:23 +01:00
UbitUmarov
63da4d3f99 mantis 8305: add several ossl sound funtions that accept a link number for the prim associated to that sound. The link number must point to a single prim 2018-04-09 00:15:45 +01:00
UbitUmarov
996de5eaf1 .. and yes i forgot a file.. again :( 2018-04-06 17:00:58 +01:00
UbitUmarov
75c5821dfa remove GCnotify(). It is wrong in many ways and has no use. GC now does provide more correct ways of getting warning of when its about to happen, but writing to a log file on that is NOT something to do. 2018-04-06 16:56:49 +01:00
Kevin Cozens
6accf854a7 Added references to new math related OSSL functions 2018-04-04 16:44:46 -04:00
UbitUmarov
80c7ffeb29 fix the comment about return value of osAngleBetween() its 0 to PI 2018-04-04 01:25:49 +01:00
UbitUmarov
e031d79d48 add auxiliar functions float osVecMagSquare(a), float osVecDistSquare(vector a), float osAngleBetween(vector a, vector b) and float osRound(ffloat value, integer ndigits) 2018-04-03 23:00:37 +01:00
UbitUmarov
86d8f2af5b try fix git 2018-04-01 02:26:08 +01:00
UbitUmarov
a8308e2a13 coment out a debug line 2018-04-01 02:19:53 +01:00
UbitUmarov
ee6034f751 several changes to materials, add llSet*PrimtiveParams*() support for them. They may be very broken now :( 2018-04-01 01:50:07 +01:00
UbitUmarov
f5365cb06d Merge branch 'master' into httptests 2018-03-28 04:29:39 +01:00
UbitUmarov
4958425e37 mantis8309 add extra try{}catch 2018-03-28 04:28:36 +01:00
UbitUmarov
b1569d09bf Merge branch 'master' into httptests 2018-03-27 20:01:55 +01:00
UbitUmarov
6b02c99194 fix previus commit with the right source file :( 2018-03-27 20:00:31 +01:00
UbitUmarov
20d221a963 Merge branch 'master' into httptests 2018-03-27 16:08:34 +01:00
UbitUmarov
cb134e5487 mantis8307: avoid a null ref 2018-03-27 16:03:44 +01:00
UbitUmarov
e733bfb3b5 fix merge issue 2018-03-20 10:09:22 +00:00
UbitUmarov
0a1d96b95e mantis 8257: fix the default realm (ie table name) of AuthenticationService 2018-03-20 09:54:49 +00:00
Kevin Cozens
122d3a3768 Removed trailing semi-colons from option settings 2018-03-19 15:35:28 -04:00
Kevin Cozens
6b24ff0bc9 Removed trailing whitespace 2018-03-19 12:30:03 -04:00
Kevin Cozens
a4ac91dc6b Fixed a typo 2018-03-19 12:17:38 -04:00
UbitUmarov
1363a95840 Merge branch 'master' into httptests 2018-03-10 22:09:56 +00:00
UbitUmarov
f83f7e18b6 comment out some debug messages visible on SOP CompleteMovement 2018-03-10 22:07:52 +00:00
UbitUmarov
0341b46279 Merge branch 'master' into httptests 2018-03-10 20:51:38 +00:00
UbitUmarov
a0d0d65c70 mantis 7885: robust asset services have no cache and only accept a asset ID that is a uuid, so regions hack to cache several image formats is not possible. Robut GetTexture is very heavy unless image format is the default (j2k mime type x-j2k), since with no cache image convertions is performed on every request. Adicionally it does expose all textures if the tcp port is public. Avoid using it. 2018-03-10 20:50:24 +00:00
UbitUmarov
2369ce413d Yengine: only retry compile if there was a object file in cache with wrong version or signature 2018-03-09 22:44:58 +00:00
UbitUmarov
2dc49dc1e9 remove a unnecessay file check 2018-03-09 21:42:14 +00:00
UbitUmarov
c723a1be16 Yengine temp file delete was still bad in case of script errors 2018-03-09 21:33:39 +00:00
UbitUmarov
cf5ec5d29c Merge branch 'master' into httptests 2018-03-05 21:04:40 +00:00
UbitUmarov
8c390ef3fe Merge branch 'master' of opensimulator.org:/var/git/opensim 2018-03-05 21:00:49 +00:00
UbitUmarov
d543421675 make the setting economymodule visible on Economy section of OpenSimDefaults.ini and OpenSim.ini.example. This setting must be changed to allow other modules and disable our simple one. (ours does also look for it at Startup section for legacy reasons) 2018-03-05 20:59:43 +00:00
UbitUmarov
c408f0a38e Merge branch 'master' into httptests 2018-03-05 20:57:13 +00:00
UbitUmarov
c5ce9b7be8 make the setting economymodule visible on Economy section of OpenSimDefaults.ini and OpenSim.ini.example. This setting must be changed to allow other modules and disable our simple one. (ours does look for it at Startup section for legacy reasons) 2018-03-05 20:37:58 +00:00
UbitUmarov
47fd3afecd change SampleMoneyModule intialization, make it look for economymodule setting both in startup and economy sections; change some default settings to no cost values, since that is our default 2018-03-05 20:20:29 +00:00
UbitUmarov
befe1ad4be fix some LSL functions to return type Key as they should and not string 2018-03-05 17:02:07 +00:00
UbitUmarov
dc5cd9a3ae Merge branch 'master' into httptests 2018-03-05 16:39:17 +00:00
UbitUmarov
18914fae64 make more clear some magic numbers on SOP getnumberofsides(), reduce unnecessary calls to it on LSL api 2018-03-05 16:36:39 +00:00
mewtwo0641
f579fbba0e Remove the work around for sphere number of faces since as of commit 846f35 it initially has the correct number of faces and the workaround returns 2 more than the correct number of faces. 2018-03-04 13:26:19 +00:00
UbitUmarov
5ff57f01b7 Yengine: change filename extentions on scripts state (better delete contents of bin/scriptengines/yengine .. btw bin/scriptdata is not used anymore ) 2018-02-25 00:49:44 +00:00
UbitUmarov
85b973ce1d Y(xmr)engine cosmetics... 2018-02-25 00:18:41 +00:00
UbitUmarov
2f94fa4dc7 Yengine fix its section name on opensim.ini.example 2018-02-23 17:59:30 +00:00
UbitUmarov
f158867d93 Yengine replace xmr by yeng on console comands 2018-02-23 15:28:05 +00:00
UbitUmarov
2129d941ac rename XMREngine as Yengine (still not all done), big mess source formating changes, move state files to proper folder, fix a source file locking on errors, more changes for cross platform including from Mike,... yes yes i know a messy commit 2018-02-23 14:52:34 +00:00
UbitUmarov
756fbf324a Merge branch 'master' into httptests 2018-02-22 02:50:59 +00:00
UbitUmarov
846f35d365 a few more changes on tortured prims number of sides/faces 2018-02-22 02:49:56 +00:00
UbitUmarov
4a982adb02 Merge branch 'master' into httptests 2018-02-21 15:30:25 +00:00
UbitUmarov
25d6d99c6e fix a old issue on some tortured prims number of sides, and so textures set 2018-02-21 15:28:34 +00:00
UbitUmarov
9a73a39989 Merge branch 'master' into httptests 2018-02-18 14:05:57 +00:00
UbitUmarov
d6a35d6d2f COmment out relocation of tmp cs source file during compilation. This seems to cause issues on same win servers, and is only usefull on deep scripts debug (Xengine compiler) 2018-02-18 14:04:02 +00:00
UbitUmarov
467b591f3a COmment out relocation of tmp cs source file during compilation. This seems to cause issues on same win servers, and is only usefull on deep scripts debug (Xengine compiler) 2018-02-18 13:55:19 +00:00
UbitUmarov
96aecf80ef Oops... don't leave script source out of compilation in same cases 2018-02-11 18:27:42 +00:00
UbitUmarov
01ceb4d17e try to fix xmr on multiregions per instance. Ugly spargetti ...; remove fixes for 2 llparcel functions that should not be needed; remove xmr own API, it has no business having one. 2018-02-07 19:52:18 +00:00
UbitUmarov
cddb848c13 add a warning about XMR only suoprting one region per instance at this point, it was never made to suport more 2018-02-07 18:38:37 +00:00
UbitUmarov
53a910e3e5 some more code from mrieker for system threads, give up of all the other mono dependent theading models only availble for linux (and possible not all platforms). This only has impact on micro-threading switching, and this only happens on long events and only every 60ms, aditionally we do remove a totally extra set of threads (that could grow in a uncontroled way on win) and their hanshake with main ones. This may of course be even more broken now :P 2018-02-07 10:26:20 +00:00
UbitUmarov
aa2c710c57 due credits even if code goes away 2018-02-05 12:52:46 +00:00
UbitUmarov
38cd12b3cf add mrieker fresh optimization on heap tracker 2018-02-05 12:48:07 +00:00
UbitUmarov
a7e2978db9 fix log4net for .net4.6 2018-02-04 02:51:40 +00:00
UbitUmarov
b1226609a1 Merge branch 'master' into httptests 2018-02-04 00:17:36 +00:00
UbitUmarov
e685d8dcef mantis 8287: applied modified patch by hand, thx watcher64 2018-02-04 00:16:51 +00:00
UbitUmarov
617d76697d make XMR script cache location option visible 2018-02-03 21:18:32 +00:00
UbitUmarov
73177f2afa some new code got in ahead of its time 2018-02-03 20:50:06 +00:00
UbitUmarov
42d07e283f pesty warnings 2018-02-03 20:37:36 +00:00
UbitUmarov
e7e8a7ab4d just DIE damm thread (recent monos issue) 2018-02-03 19:34:17 +00:00
UbitUmarov
04a8ec518d XMR: there is no need for a slice thread, it also causes timing issues; BelowNormal mb 2 Below on win; cosmetics 2018-02-03 08:08:59 +00:00
UbitUmarov
20ca517887 update opensim.ini.example with XMRengine information 2018-02-02 13:04:45 +00:00
UbitUmarov
83e2fee71b add experimental script engine XMRengine donated by mrieker (DreamNation) And our Melanie. ***DANGER*** ***TESTONLY*** ***disable HG*** dont leave running when not looking... tp/crossing to Xengine will reset scripts. i do see a few issues but should be testable, so we can decide if we should invest more on it. 2018-02-02 12:49:40 +00:00
UbitUmarov
c70b77a528 Merge branch 'master' into httptests 2018-02-02 11:49:43 +00:00
UbitUmarov
a22606a89f do not timeout floatsam assets caching thread 2018-02-02 11:47:19 +00:00
UbitUmarov
c889eb64e5 let ossl have its own config section 2018-02-02 03:50:43 +00:00
UbitUmarov
5ae09e03aa remove a duplicated field 2018-02-01 03:16:32 +00:00
UbitUmarov
3635943d39 remove cap FetchLib2 suport code 2018-01-31 15:19:16 +00:00
UbitUmarov
35d1642889 disable the new Cap_FetchLib2 because viewers do not suport it for opensim. To decide when to use it, they use a hardcode LL owner ID on same code paths, while on others just compare owner to the agent. This makes suport for this cap impossible" 2018-01-31 14:55:01 +00:00
UbitUmarov
4381f16e18 keepalive is default 2018-01-30 08:15:42 +00:00
UbitUmarov
4d051f3acb add missing folders version 2018-01-30 01:37:24 +00:00
UbitUmarov
5548b66dc0 a few more changes on inventory library and inv fetch 2018-01-30 01:07:24 +00:00
UbitUmarov
4c65bb4196 a few more changes on inventory library and inv fetch 2018-01-27 18:09:44 +00:00
UbitUmarov
f89b2379a0 add a few more encoding to LLSDxmlEncode.. (W or S ?) 2018-01-27 05:35:40 +00:00
UbitUmarov
13b4ce8199 add Cap_FetchLib2 note that this is still local to regions, not using grid as it possible should, but this needs more work, and issue with HG older grids/regions 2018-01-27 04:32:03 +00:00
UbitUmarov
3dbdacf31f Let MrOpenSim have simple hardcoded profile 2018-01-26 21:12:23 +00:00
UbitUmarov
6978181075 Robust: allow Library assets to override old ones, so they can be updated easily from the xml files keeping same id (left FSAssets out) 2018-01-26 21:04:46 +00:00
UbitUmarov
5e3eb8b370 Merge branch 'master' into httptests 2018-01-26 16:29:15 +00:00
UbitUmarov
e3f804e1d8 try fix IAR load inventory links and objects owner 2018-01-26 16:18:45 +00:00
UbitUmarov
98019031df got tired of creating stringbuilders 2018-01-25 09:06:39 +00:00
UbitUmarov
cdd3ef857c a few changes to encoder and a few more uses 2018-01-25 08:02:45 +00:00
UbitUmarov
266eabcad4 add a low level LLSDxml encoder for cases where it makes no sense to use more heavy things like OSD, and use it on displaynames 2018-01-25 06:50:49 +00:00
UbitUmarov
3aff72e403 change DataSnapeShoot init again. May still fail on multi regions instances 2018-01-25 00:55:34 +00:00
UbitUmarov
22666ad18a cleanup a bit more 2018-01-24 11:43:42 +00:00
UbitUmarov
fc224b444a avoid some large unnecessary strings 2018-01-24 10:02:18 +00:00
UbitUmarov
5a246026a0 let MinHeap self trim on empty; cleanup 2018-01-24 04:48:10 +00:00
UbitUmarov
e7b834874e another change to httpserver dll 2018-01-24 04:12:27 +00:00
UbitUmarov
c87585ad96 simplify http bycontext key 2018-01-24 03:12:56 +00:00
UbitUmarov
3f7ffc12c4 reduce max keepalime time to 60s 2018-01-24 03:10:11 +00:00
UbitUmarov
cf3d3f4f4a move datasnapshot notification to last, but still a issue with very fast service servers 2018-01-22 23:51:15 +00:00
UbitUmarov
a67b523acf Merge branch 'master' into httptests 2018-01-22 21:44:05 +00:00
UbitUmarov
af9bff7ed2 try fix mantis 8283 2018-01-22 21:43:21 +00:00
UbitUmarov
b164925262 Ooops 2018-01-22 20:07:59 +00:00
UbitUmarov
e326792aa3 move datasnapshot notification to when region is actually loaded 2018-01-22 19:56:40 +00:00
UbitUmarov
9e4bf3439c change throtle datasnapshot get 2018-01-22 19:50:07 +00:00
UbitUmarov
efc7480342 throtle datasnapshot gen 2018-01-22 18:37:39 +00:00
UbitUmarov
e3fc272f50 missing files.. 2018-01-22 17:27:40 +00:00
UbitUmarov
d38161f83d retire our BlockingQueue replaced by BlockingCollection and cross fingers 2018-01-22 17:09:38 +00:00
UbitUmarov
437369778d give BlockingCollection more chances 2018-01-22 02:42:50 +00:00
UbitUmarov
d4a5454f3c give BlockingCollection more chances 2018-01-22 00:43:33 +00:00
UbitUmarov
73b587989c give BlockingCollection more chances 2018-01-22 00:24:29 +00:00
UbitUmarov
855dcda9c3 give BlockingCollection another chance 2018-01-21 21:02:07 +00:00
UbitUmarov
ccdaebaed6 give concurrentqueue another chance 2018-01-21 20:22:28 +00:00
UbitUmarov
0dbed94e13 no need to set MuteListsService twice 2018-01-21 20:09:56 +00:00
UbitUmarov
cb5a7246a2 cosmetics (or not) 2018-01-21 16:40:58 +00:00
UbitUmarov
56535cdb47 change version numbers back to 0.9.1.0 2018-01-20 13:30:15 +00:00
UbitUmarov
49b4408782 some cleanup 2018-01-20 12:11:07 +00:00
UbitUmarov
ccd47d0cf1 improve LLSDHelpers DeserialiseOSDMap 2018-01-20 10:43:19 +00:00
UbitUmarov
e32efe5d22 add sqlite files for mutes module ( done only minimal tests) 2018-01-20 07:09:37 +00:00
UbitUmarov
c34f07b6f3 silent ignore mutes on HG visitors, let viewers do it on cache only, proper HG suport is another story... and questionable 2018-01-20 01:28:00 +00:00
UbitUmarov
e89f1e635b fail to connect to estates service is a fatal error 2018-01-18 13:04:05 +00:00
UbitUmarov
a7db6d3097 Ooops worng ';' 2018-01-18 08:11:42 +00:00
UbitUmarov
dd491bba57 abort uploading large region map tiles as soon one fails 2018-01-18 04:28:05 +00:00
UbitUmarov
0a81e35697 pesty warning 2018-01-18 02:53:00 +00:00
UbitUmarov
a6e0ba262a iStackTrace(targetThread, true) is no longer safe on windoes also 2018-01-18 02:40:59 +00:00
UbitUmarov
20f3c46b78 NDesk.options .net4.6 2018-01-18 01:18:10 +00:00
UbitUmarov
389e54214d pesty warnings - run prebuild needed 2018-01-18 00:24:51 +00:00
UbitUmarov
4b1a153cfb pesty warning 2018-01-18 00:02:29 +00:00
UbitUmarov
0ad6ba11fe pesty warning 2018-01-17 23:55:30 +00:00
UbitUmarov
707eb8de82 remove more xml things no longer needed on .net >4.5.2 2018-01-17 07:17:24 +00:00
UbitUmarov
e9d2d81880 pesty warnings 2018-01-17 07:04:07 +00:00
UbitUmarov
ade0d8a81f missed a few 2018-01-17 04:32:22 +00:00
UbitUmarov
029d6e40f6 remove those xml things no longer needed on .net >4.5.2 2018-01-17 04:18:43 +00:00
UbitUmarov
2c8251d450 update DotNetOpenId (.net4.6) 2018-01-17 03:46:24 +00:00
UbitUmarov
be02aece36 update C5 (.net4.6) 2018-01-17 03:02:03 +00:00
UbitUmarov
6dec7869b8 update LukeSkywalker.IPNetwork (.net4.6) 2018-01-17 00:55:55 +00:00
UbitUmarov
2c252032c7 test adding missing dep 2018-01-17 00:14:55 +00:00
UbitUmarov
d1f6ffc2fd make mono.Addins files show version 1.3.7 2018-01-16 23:47:01 +00:00
UbitUmarov
5579144c16 update mono.Addins to version 1.3.7(.net4.6) 2018-01-16 23:37:16 +00:00
UbitUmarov
c35803964f Merge branch 'master' into httptests 2018-01-16 19:12:19 +00:00
UbitUmarov
8fe16a1974 Ooops... fix the parentesis 2018-01-16 19:10:56 +00:00
UbitUmarov
b903287dd1 Merge branch 'master' into httptests 2018-01-16 17:17:44 +00:00
UbitUmarov
d39bf37926 do not timeout BackupWorker threads 2018-01-16 17:16:40 +00:00
UbitUmarov
8f1a68633e update lsl2c tools and parsing files. This may fix some issues with precendence of unary operators in same case, hope not break on others :( 2018-01-16 01:44:16 +00:00
UbitUmarov
49848b09e6 replace ICSharpCode.SharpZipLib with target .net4.6 2018-01-16 00:44:51 +00:00
UbitUmarov
ae04a24e7a recover a lost null check 2018-01-15 18:57:15 +00:00
UbitUmarov
6f3e538c79 replace Newtonsoft.Json and Zlib.net with target .net4.6 2018-01-15 18:13:56 +00:00
UbitUmarov
c92ba1cc04 shut up some pesty warnings 2018-01-15 16:23:19 +00:00
UbitUmarov
7a09a10f58 update PrimMesher to a newer version from dahlia (thx dahlia), targeted .net4.6 2018-01-15 15:12:21 +00:00
UbitUmarov
01448d751a update PrimMesh to lkalif 2013 version, .net4.6 and libomv again 2018-01-14 03:25:59 +00:00
UbitUmarov
3d87e37d99 make old Ode PInvoke follow ms coding rules 2018-01-14 01:40:49 +00:00
UbitUmarov
88511bfab2 make ubOde PInvoke follow ms coding rules 2018-01-14 01:02:21 +00:00
UbitUmarov
8a68c330e8 fix a string format 2018-01-14 00:47:12 +00:00
UbitUmarov
1d6a157134 change version to 0.9.1.1 so we can see it inworld 2018-01-13 22:40:44 +00:00
UbitUmarov
4e8fa27411 update again libomv that may depend on new log4net and XMLRPC 2018-01-13 20:43:09 +00:00
UbitUmarov
a3d78b24fd add log4net apache license terms, remove axiom 2018-01-13 18:35:28 +00:00
UbitUmarov
e0b695a776 testing update log4net to version2.0.8 to .net4.6 ( this more likely to smoke 2018-01-13 18:32:08 +00:00
UbitUmarov
eafad5a4cb testing update Nini.dll to .net4.6 2018-01-13 16:20:59 +00:00
UbitUmarov
d91c7c5958 testing update Iconic.Zip.dll to .net4.6 2018-01-13 16:08:44 +00:00
UbitUmarov
d3ff4e0806 clean some modules api 2018-01-13 14:40:31 +00:00
UbitUmarov
4345d225f1 remove unused dll - XMLRPC is used not this 2018-01-12 19:19:26 +00:00
UbitUmarov
792a1c6e3d fix a string format 2018-01-12 18:09:38 +00:00
UbitUmarov
fa78a6fd90 fix some odd sql queries ap not in use 2018-01-12 18:07:37 +00:00
UbitUmarov
271fab6ac2 testing update libomv CSj2k dll to .net4.6, remove unused Axiom dll 2018-01-12 12:45:46 +00:00
UbitUmarov
41633de8cb remove the temporary Xmutes module, replace MuteListModule byt the new one, previusly named MuteListModuleTst 2018-01-12 04:06:02 +00:00
UbitUmarov
17f2838757 testing update libomv dlls to .net4.6 2018-01-12 03:32:55 +00:00
UbitUmarov
a3e50ef8dc testing update Warp3d.dll to .net4.6 2018-01-12 03:15:48 +00:00
UbitUmarov
98f79cf735 testing update XMLRPC.dll to .net4.6, not this is not same source that previus one.. so we may have other issues 2018-01-12 03:12:01 +00:00
UbitUmarov
3c3b8fc759 testing update httpserver.dll to .net4.6 2018-01-12 03:07:51 +00:00
UbitUmarov
c69920376b change target framework to 4.6 for testing 2018-01-12 00:10:45 +00:00
UbitUmarov
439cbf0d4d missed a few.. 2018-01-09 19:48:13 +00:00
UbitUmarov
e908c0ecad give up on a property that old monos do compile, but then smore ok exec 2018-01-09 19:47:10 +00:00
UbitUmarov
1a6770191c test our obsolete jenkins ... 2018-01-08 12:30:43 +00:00
UbitUmarov
eec3921800 fall back to a obsolete property since several monos in use (include our own) do not suporte the proper .net4.0 one 2018-01-08 12:00:21 +00:00
UbitUmarov
250acf891f exclude folders obj from projects 2018-01-06 00:20:07 +00:00
UbitUmarov
875ca104b8 Merge branch 'master' into httptests 2018-01-05 22:37:42 +00:00
UbitUmarov
89a690c11f a few more xml things 2018-01-05 12:24:07 +00:00
UbitUmarov
0b96cd56fc don't be bad Jenkins.. 2018-01-05 00:30:00 +00:00
UbitUmarov
ce0aa53cc4 let tau do something in avatar MoveToTarget 2018-01-04 23:59:47 +00:00
UbitUmarov
ec6f87d3ef disable some XmlResolver 2018-01-04 23:51:43 +00:00
UbitUmarov
7f49364d65 remove some tabs added to config files 2018-01-04 22:52:29 +00:00
UbitUmarov
2811e5cef3 update configuration files and examples for mutes 2018-01-04 21:21:38 +00:00
UbitUmarov
48dbba3441 add more files for robust mutes suport. (module is still named MuteListModuleTst for testing, others in core will be removed later 2018-01-04 20:56:48 +00:00
UbitUmarov
3576d6d764 Merge branch 'master' into httptests 2018-01-03 10:48:38 +00:00
UbitUmarov
8eea9531ee fix estates URI 2018-01-03 10:21:07 +00:00
UbitUmarov
7ffb0aca44 fix/clean error messages on MySQLUserProfiles (profilesV2) 2018-01-02 01:51:14 +00:00
UbitUmarov
0259019431 fix merge 2017-12-30 15:50:03 +00:00
UbitUmarov
a7803409f6 clean some extra space chars 2017-12-30 15:46:32 +00:00
UbitUmarov
8032898773 mantis 8271: work around missing encoding of estate bans on the pseudo url encode used on POST, without changing the xml also used elsewhere. Possible this can be used in other case 2017-12-30 15:28:26 +00:00
UbitUmarov
f0fd15ccc9 add missing entry on prebuid.xml for mutelist service 2017-12-20 18:20:26 +00:00
UbitUmarov
3b141e6e6f Merge branch 'master' into httptests 2017-12-14 05:37:07 +00:00
UbitUmarov
201c916670 add a missing return on a mesh decode error in ubOdemeshmerizer 2017-12-14 05:36:15 +00:00
UbitUmarov
17b79cec91 mantis 8255 update example_web.xml 2017-12-13 02:14:51 +00:00
UbitUmarov
b35a10e2be mantis 8250: try to work around timing issues 2017-12-13 01:10:21 +00:00
UbitUmarov
ab0f866087 Merge branch 'master' into httptests
# Conflicts:
#	prebuild.xml
2017-12-12 22:19:31 +00:00
UbitUmarov
d32debe618 commit what i did so far for core mutes module, befere i lose it 2017-12-11 23:58:27 +00:00
UbitUmarov
a95e286168 increase sample rate of WaitGetScenePresence() 2017-12-11 23:36:42 +00:00
UbitUmarov
1e3cb82756 move some sharable items out of Xmute to Framework; add another test mutelistmodule, ignore it 2017-11-17 01:30:39 +00:00
UbitUmarov
4150a616c5 try kick jenkins/nant 2 2017-11-16 18:45:01 +00:00
UbitUmarov
366cdac656 try kick jenkins/nant 2017-11-16 18:13:32 +00:00
UbitUmarov
2f13b68d4f add missing part of mutes list protocol 2017-11-16 17:50:06 +00:00
Melanie Thielker
d35ab8c86c Donating the Avination Mute Module
This lived out-of-tree and therefore wasn't part of the big code
drop. It's classic Avination, tied to MySQL and a direct database
connection and I don't have the bandwidth to fix it to core methods.
However, it has all the strange mute logic that OpenSim was missing
and maybe someone can step up to make it work in an open grid context.
2017-11-14 12:12:07 +00:00
UbitUmarov
873d42005f add AGENT_LIST_EXCLUDENPC bit mask option to llGetAgentList scope to exclude NPCs 2017-11-14 03:49:32 +00:00
TomTheDragon
98f90f4eed Changing map tile colors This change also allows setting the water color, as well as the 4 colors for textured map tiles.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-11-13 20:43:16 +00:00
UbitUmarov
17c65d918a Merge branch 'master' into httptests 2017-11-12 12:11:29 +00:00
UbitUmarov
6546ea6da6 mantis 8253: don't let attachments delete remove controls from viewers on crossings. 2017-11-12 12:00:03 +00:00
UbitUmarov
f2b54c8cf9 mantis 8200: move changes in PGSQL from last commit to a new transaction (13) 2017-11-12 09:16:32 +00:00
TomTheDragon
6a75b7c65e PGSQL EstateStore create estate_settings_id SEQUENCE
Missing creation for estate_settings_id sequence causes first run
to fail unless manually added.

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-11-12 09:07:09 +00:00
UbitUmarov
cdb7d506fd Merge branch 'master' into httptests 2017-11-12 03:26:48 +00:00
UbitUmarov
eaa239eb06 add a warning in opensim.ini.example mute lists, about the fact viewers cache beening shared by all grids, and that can be confusing 2017-11-12 03:26:10 +00:00
UbitUmarov
ca4804b758 Merge branch 'master' into httptests 2017-11-12 03:18:02 +00:00
UbitUmarov
8e8108c78c change opensim.ini.example mutes coments to express what our current code does 2017-11-12 03:16:40 +00:00
UbitUmarov
e0fd966186 off line module V2 must not sent a empty mutes list. That is mutes modules job (or let viewers use they cached entries if none) 2017-11-12 02:51:59 +00:00
UbitUmarov
fcb8b2a3c3 mantis 8260 fix script count on delete and remove redundantTriggerRemoveScript in 2 points 2017-11-08 09:10:56 +00:00
UbitUmarov
8eb9bc8b19 mantis 8263: recover the ignore of texture changes if only materialID changed. That should be done by respective cap (as before) 2017-11-08 06:51:55 +00:00
UbitUmarov
8479658cd0 remove a potencial (and silly) deadlock; let other texture parameters changes trigger Changed.TEXTURE event 2017-11-08 01:53:36 +00:00
TomTheDragon
56d2db3a18 Add a new experimental implementation of PGSQL FSAssets
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-11-03 05:10:37 +00:00
UbitUmarov
39d1426f27 Merge branch 'master' into httptests 2017-10-30 19:06:17 +00:00
UbitUmarov
5360a8fea4 mantis 8258: also limit mesh basic shape torus hole sizeY on (some) existent objects. 2017-10-30 18:56:05 +00:00
UbitUmarov
3fb61f4470 mantis 8258: change Mesh basic shape pathScaleY in case of Torus 2017-10-30 18:26:15 +00:00
UbitUmarov
16a8e166ff Merge branch 'master' into httptests 2017-10-26 19:01:16 +01:00
Kevin Cozens
6a5b234262 Fixed typo in a comment. 2017-10-26 13:43:36 -04:00
Kevin Cozens
70d693eff2 Added missing Allow line for osGetSimulatorMemoryKB. 2017-10-26 13:42:54 -04:00
Kevin Cozens
5cc41eee34 Sorted the groups of Allow statements by alphabetical order. 2017-10-26 13:40:59 -04:00
Kevin Cozens
fbb2f7f319 Corrected name of function in call to CheckThreatLevel. 2017-10-26 13:29:14 -04:00
Kevin Cozens
d65f055e4e Whitespace cleanup. 2017-10-26 11:26:49 -04:00
UbitUmarov
f81375cf1e mantis 8253: try to recover information about takecontrols pass=false controls on crossings, also tell viewers about them. this may still not be correct. Use of multiple TakeControls on same avatar can still give unpredictable results (also on normal operation). In same cases last executed my override previus or not. Also change agent updates wait code 2017-10-25 02:59:19 +01:00
UbitUmarov
c220c277e2 Merge branch 'master' into httptests 2017-10-15 23:03:39 +01:00
UbitUmarov
3d6553afee add osGetSimulatorMemoryKB(). This allows work around the fact osGetSimulatorMemory() reports at most 2GB. This one limit is now 2TB, should ne enought for a while 2017-10-15 14:46:21 +01:00
UbitUmarov
68e9baf2e0 Merge branch 'master' into httptests 2017-10-13 20:36:29 +01:00
Robert Adams
b51b4d4171 Merge branch 'master' of git://opensimulator.org/git/opensim (Ubit beat
me to the repository).
2017-10-13 12:04:52 -07:00
UbitUmarov
dd58f15bff mantis 8249: give better data to llDetectedGrab 2017-10-13 20:00:38 +01:00
Robert Adams
df3759e099 BulletSim: Add parameter "[BulletSim]AvatarWalkVelocityFactor=1.0" to
adjust the walking speed passed from the simulator. Default is 1.0f so
there should be no change for regions who do not change the factor.

The adjustment for walking speed and AlwaysRun speed should be in the
simulator and not the physics engines (who all assume TargetVelocity.set
is only used for avatar walking/running) but that would require tweaking
all the phyiscs engines.
2017-10-13 12:00:07 -07:00
UbitUmarov
59afeb6c4c remove a dead line of code 2017-10-06 02:43:46 +01:00
UbitUmarov
8520ceed63 mantis 8246: don't allow 'delete object name' to delete attachments, but allow delete object id, with confirmation 2017-10-06 02:40:28 +01:00
UbitUmarov
b1814d3492 Merge branch 'master' into httptests 2017-10-01 18:05:10 +01:00
UbitUmarov
db88c93243 bug fix: add missing stub for osSetInertia 2017-10-01 18:03:19 +01:00
Robert Adams
cc915b4d05 BulletSim: update MacOS version of libBulletSim to latest version.
See Mantis 8232.
   Thanks Gavin Hird.
2017-09-20 21:02:00 -07:00
UbitUmarov
e4dfa50654 replace libomv saving a few op on vector * quaternion 2017-09-17 04:43:53 +01:00
UbitUmarov
765f4eef1e Merge branch 'master' into httptests 2017-09-16 19:01:22 +01:00
UbitUmarov
2247251c2f bug fix: Of course i had to pick a wrong number for profileBegin 2017-09-16 18:58:10 +01:00
UbitUmarov
5687c5d494 Merge branch 'master' into httptests 2017-09-16 01:00:28 +01:00
UbitUmarov
997a85568e double request.ReadWriteTimeout 2017-09-16 00:46:26 +01:00
UbitUmarov
05da6b9f14 bug fix. Increase the values of profileHollow and profileBegin used to match pbs number of faces and the Mesh number of faces. The small values i used before seem to be randomly lost. 2017-09-16 00:19:58 +01:00
UbitUmarov
b581a64788 ubOde: comment out some debug stats 2017-09-08 20:04:16 +01:00
UbitUmarov
0ac81f6a09 ubOde: hashSpaces aren't that nice 2017-09-08 19:59:38 +01:00
UbitUmarov
ca493a1beb Merge branch 'master' into httptests 2017-09-05 20:25:12 +01:00
Robert Adams
921e3ceb09 BulletSim: Merge branch 'BulletSim2017'
Adds raycast using Bullet physics engine.
2017-09-05 06:24:04 -07:00
Robert Adams
4608b44817 BulletSim: add raycast filtering 2017-09-05 06:19:49 -07:00
UbitUmarov
86493d75fa Merge branch 'master' into httptests 2017-09-04 18:39:42 +01:00
Kevin Cozens
e08b051ca6 Fixed typos in comments in osslEnable.ini 2017-09-04 13:30:16 -04:00
Kevin Cozens
05db0c977f Fixed typo in function name HaveNotifiedLogOfScriptStopMistmatch. 2017-09-04 13:28:31 -04:00
Robert Adams
f348f7fa90 BulletSim: first version of raycast. Only single contact point and no
filtering.
2017-09-03 17:15:27 -07:00
Robert Adams
6c5cfbafba BulletSim; Update BulletSim.dll's and so's for raycast. 2017-09-03 17:14:59 -07:00
Robert Adams
33e773959f BulletSim: modify taint processing which use locks.
(Merge branch 'bullettaint' into bulletcast)
2017-09-02 13:08:54 -07:00
Robert Adams
0afa3a294a BulletSim: most of the plumbing for raycast. Needs new BulletSim.dll to
work.
2017-09-02 13:06:36 -07:00
UbitUmarov
34da125a4d fix our name is OpenSimulator not OpenSim 2017-08-31 15:25:14 +01:00
UbitUmarov
3fe3471532 improve Prefer32bit configuration option 2017-08-31 15:17:42 +01:00
UbitUmarov
c9198dc1d4 .net4.5, take2; vs2010 does not do it, try to make mono5.x msbuild more happy 2017-08-31 13:42:58 +01:00
UbitUmarov
566e79b574 test: .net framework4.5 2017-08-31 13:20:47 +01:00
UbitUmarov
a578df9589 CSharp targets name still wrong 2017-08-31 11:29:00 +01:00
UbitUmarov
b9fc629bdf fix a whitecode bug, add missing files 2017-08-31 11:23:03 +01:00
UbitUmarov
a30d8f8e64 fix a prebuild VS targets assembly name 2017-08-31 09:59:44 +01:00
UbitUmarov
46ead8dcb2 make option Prefer32bit default to false. Thanks Freaky Tech 2017-08-30 22:49:13 +01:00
UbitUmarov
41e8b9f91f update Prebuild with WhiteCore version 2017-08-30 22:24:07 +01:00
UbitUmarov
d4a3aa5e08 Merge branch 'master' into httptests 2017-08-29 07:53:34 +01:00
UbitUmarov
22c7450363 fix cache.cs (used on parcels info) 2017-08-29 07:38:52 +01:00
Robert Adams
5c36561424 BulletSim: add clock and change logic for taint processing a little
so taints check if they are not in simulation time and execute
immediately if not.
2017-08-28 15:23:32 -07:00
UbitUmarov
e4747b938b update httpserver 2017-08-28 13:33:37 +01:00
UbitUmarov
47648557c1 fix some nunit tests 2017-08-28 10:48:46 +01:00
UbitUmarov
b3eec90d3c Merge branch 'master' into httptests 2017-08-25 23:47:40 +01:00
UbitUmarov
396ab1424c in some cases ll TPVs can only see avatar rotations around Z or camera misbehaves 2017-08-25 23:44:59 +01:00
UbitUmarov
dfdc3e3adf change camera view constraint. we need to do it a lot more :( 2017-08-25 20:53:07 +01:00
UbitUmarov
a1aa2f1add Merge branch 'master' into httptests 2017-08-24 02:18:40 +01:00
UbitUmarov
05b8ead8b2 frozen avatars should not do local teleports. Possible none should not be allowed, but that may be abusive 2017-08-24 02:11:40 +01:00
UbitUmarov
c5802c9460 change a few more parcel eject code paths 2017-08-24 01:47:01 +01:00
UbitUmarov
1a7c8893ee add missing file. Also in last commit comment the flag was relative to (un)freeze no t(un)eject 2017-08-24 01:38:04 +01:00
UbitUmarov
74524cb3be (un)eject flag is only lowest bit, only protect active gods from freeze; do not check landing point (telehubs) on eject. 2017-08-24 01:30:57 +01:00
UbitUmarov
b1fdb02be1 Merge branch 'master' into httptests 2017-08-22 18:39:30 +01:00
UbitUmarov
1ca70232a5 mantis 8233: media changes flag object updated in region db 2017-08-22 18:37:35 +01:00
UbitUmarov
8434def603 update ODE bins for windows to 0.13.3 ( old ode will now also have stati/dynamic friction, cant avoid it 2017-08-21 05:00:18 +01:00
UbitUmarov
6cf27e2191 ubOde move static/dynamic friction to unmanaged code. Note this now requeries ode version OS0.13.3 currently at opensim-libs repo trunk/unmanaged/ODE-OpenSim-Test 2017-08-21 04:54:01 +01:00
UbitUmarov
f9c01db33c Merge branch 'master' into httptests 2017-08-19 22:48:31 +01:00
UbitUmarov
539c006cb8 change SOP updates throttles again. Small values of omega on llSetTargetOmega where skiped 2017-08-19 22:44:18 +01:00
Robert Adams
1fdd56f987 BulletSim: Update macOS version of BulletSim with the actual Bullet
2.86. (the last commit was really an update to 2.82).
    Thanks Gavin Hird.
2017-08-18 12:44:29 -07:00
UbitUmarov
e2ca5853fc Merge branch 'master' into httptests 2017-08-18 04:33:21 +01:00
Diva Canto
2df4c1bb91 Replaced libomv dlls with newly compiled ones to solve crashes with pCampBot. See
e8250162cc
2017-08-17 17:43:58 -07:00
UbitUmarov
ea53cb0dfa temporary change pcampbot bots lastname convention, to test at osgrid 2017-08-17 22:17:36 +01:00
Diva Canto
3acdae74db Make VERSION_FLAVOUR public too, per request. I question the practice of insulating modules against OS versions this way, but hey! -- different folks, different styles. Given that all other components of the version info are public, there's no reason for keeping this one different. 2017-08-17 11:36:18 -07:00
Robert Adams
c804835801 BulletSim: Update macOS version of BulletSim with Bullet 2.86 and collision fixes.
Thanks Gavin Hird.
2017-08-17 10:33:18 -07:00
UbitUmarov
c54cd4d808 Merge branch 'master' into httptests 2017-08-17 00:16:29 +01:00
UbitUmarov
218160494e fix llRot2Axis(ZERO_ROTATION) and non normalized inputs, same for llRot2Angle() 2017-08-16 23:44:34 +01:00
UbitUmarov
6d4b0a8ce3 Merge branch 'master' into httptests 2017-08-16 05:05:57 +01:00
Robert Adams
78c78f69b1 Merge branch 'master' into BulletSim2017 2017-08-15 09:04:03 -07:00
UbitUmarov
bf84e46c59 update libode for MAC, thanks again Gavin Hird 2017-08-15 16:01:56 +01:00
Robert Adams
9e86721d70 BulletSim: remove chatty debug message. 2017-08-14 21:33:26 -07:00
Robert Adams
a754ab0e4f Refactor archive loading to optionally start script engine after loading. 2017-08-14 21:27:53 -07:00
Robert Adams
36ee8e3941 BUlletSim: return better terrain height in
BSTerrainHeightMap.GetTerrainHeightAtXYZ().
Partial fix for Mantis 8011. Problem is that computed terrain height
is different than mesh height in the physics engine. For small shapes,
they would have their position corrected to above terrain so they would
never collide.
2017-08-14 21:20:59 -07:00
Robert Adams
8f3c17189c Merge branch 'master' into BulletSim2017 2017-08-14 18:48:10 -07:00
Robert Adams
76c29cb106 Update BulletSim with corrected collision computations.
A fix for Mantis 8010.
2017-08-14 18:46:16 -07:00
Diva Canto
eb837defdf Revert "Let's try giving Common a default constructor instead of the workaround"
This reverts commit 8b6557e377.
2017-08-14 16:55:50 -07:00
Diva Canto
8b6557e377 Let's try giving Common a default constructor instead of the workaround 2017-08-14 16:49:11 -07:00
Diva Canto
6a0b7a607f This is the correct work around. Jenkins is confuzzled. 2017-08-14 16:40:36 -07:00
Diva Canto
40f4b30361 Strengthen the tests for the possibility that SetUpFixture does not run in the beginning. 2017-08-14 16:33:21 -07:00
Diva Canto
26a4c5ff85 Comment to trigger jenkins 2017-08-14 16:15:08 -07:00
Diva Canto
856d218f99 Comment that test dll for now. It's making jenkins fail. 2017-08-14 15:58:42 -07:00
Diva Canto
ea448d9d6b Forgot to add this too (nant auto tests) 2017-08-14 15:26:06 -07:00
Diva Canto
5e9b090845 Listed new testable dll in THIS file 2017-08-14 15:13:32 -07:00
Diva Canto
af5573728a Another comment for testing jenkins 2017-08-14 15:01:19 -07:00
Diva Canto
3052c7080a Added comment just to trigger jenkins 2017-08-14 14:48:38 -07:00
UbitUmarov
1dbf3215b0 jenkins tests still don't set scene.IsRunning 2017-08-13 06:34:52 +01:00
UbitUmarov
82e2e1e00c change locking on sop updates 2017-08-13 06:04:39 +01:00
Robert Adams
2afd158b1d Update BulletSim with Bullet V2.86.
Should be no functional changes.
2017-08-09 13:43:44 -07:00
Kevin Cozens
e9b7971929 Remove profile from basic configuration 2017-08-05 15:44:05 -04:00
UbitUmarov
a4e7ab6fcf avoid a null ref 2017-08-03 18:09:26 +01:00
UbitUmarov
f658b68181 add a few locks 2017-08-03 17:59:30 +01:00
UbitUmarov
1830387840 Oops fix also default UseMeshiesPhysicsMesh also on ubOde 2017-08-02 03:47:53 +01:00
Kevin Cozens
cf855c3842 Corrected index number in ErrorFormat based Exception message 2017-07-30 12:27:27 -04:00
UbitUmarov
fc4212bc81 mantis 8222 2017-07-29 17:54:18 +01:00
UbitUmarov
169a50286b upload ODE lib for linux. Plz keep previus version in case something goes wrong. Thanks jakdaniels for the compilation 2017-07-29 00:08:40 +01:00
UbitUmarov
ad930f8e41 fix typo 2017-07-28 19:01:07 +01:00
UbitUmarov
21b71ff1d8 partial mantis 8219; on creating or updating items (animationsets, wearables) that reference assets, and user does not have permissions on those, abort and warn, instead of silent invalition of the references to those assets, creating a broken item 2017-07-28 17:36:40 +01:00
UbitUmarov
324bda8ab9 mantis 8218 make Meshmerizer UseMeshiesPhysicsMesh defualt to true, to match stated on ini files. 2017-07-27 16:23:08 +01:00
UbitUmarov
6996bab4a1 display remaining pass time in hours, mins or seconds acording to value 2017-07-26 20:13:30 +01:00
UbitUmarov
0b23964349 change buypass insuficent funds to make clear that its on that region money system (buypass now uses the new MoveMoney) 2017-07-26 19:12:12 +01:00
UbitUmarov
0bbe7bab7b add new funtion bool MoveMoney(UUID fromUser, UUID toUser, int amount, MoneyTransactionType type, string text). this should be called async allowing time for money module to process it. If returns true, the transation did sucess, so if its use was to pay something, the payed item/service must be provided without fail, otherwise another method is needed so a refund is possible 2017-07-26 19:01:11 +01:00
UbitUmarov
a91ceae826 add comments to make that more clear 2017-07-26 14:26:28 +01:00
UbitUmarov
025e82341f do not allow setting land passes on group owned land, because currently we cant give money to the group 2017-07-26 14:24:21 +01:00
UbitUmarov
74389c74cb only allow pass renovation on the last quarter of parcel pass time. go back to MoneyMove charging method 2017-07-26 12:58:47 +01:00
UbitUmarov
d52a64c7a3 avoid leasing issues on lsl_list on domain crossings. This will make their use even more slow. AppDomainLoading just needs to be set false to have acceptable scripts performance 2017-07-26 12:53:12 +01:00
UbitUmarov
8739ceb00f lets try using older EventManager.TriggerMoneyTransfer to pay parcel passes 2017-07-25 04:18:38 +01:00
UbitUmarov
35b1166ba8 add a few more... 2017-07-25 04:10:22 +01:00
UbitUmarov
1557b78d67 add missing session ID verification 2017-07-25 04:04:55 +01:00
UbitUmarov
1071c92bb0 fix lsl group role powers to change parcel passes 2017-07-25 03:44:52 +01:00
UbitUmarov
86c9c86eeb allow pass recharge with no loss of current time up to 1/4 of parcel pass time. 2017-07-25 03:13:03 +01:00
UbitUmarov
c5b34a51fd Ooops.. pay to land owner, not grid. group owned parcel not suported for now. (the pass already expired with kick action) 2017-07-25 02:39:12 +01:00
UbitUmarov
81d1ebc510 add first code to process parcel buy pass. Still testing, and still no kick on expire ( does expire on entry ) 2017-07-25 01:30:35 +01:00
UbitUmarov
13564aa984 only hide parcel info from banned avatars 2017-07-24 22:04:36 +01:00
UbitUmarov
6bf96f83c5 mantis 8212 fix sqlite parameter prefixing 2017-07-23 14:29:11 +01:00
UbitUmarov
8b2e95d1c1 add a rudimentary version control to ubOde meshs cache 2017-07-23 14:23:44 +01:00
UbitUmarov
04eeb0e5cb mantis 8212 do use defined sqlite connection 2017-07-22 23:33:03 +01:00
UbitUmarov
3ae210d36f ubOde: let small spheres still be spheres 2017-07-22 02:04:02 +01:00
UbitUmarov
618e142cf8 ubOde: remove some dead code 2017-07-22 01:45:42 +01:00
UbitUmarov
93582523a7 ubOde: make option MinSizeToMeshmerize visible in OpenSimDefaults.ini 2017-07-22 01:44:29 +01:00
UbitUmarov
d71d13f72b ubOde: represent small objects as a box. A object is small is all scale dimensions are less or equal to option MinSizeToMeshmerize (in ODEPhysicsSettings) with default of 0.1. This is needed because this objects hit narrow phase with high overlaps alot more, and so have high cpu cost. 2017-07-22 01:31:39 +01:00
UbitUmarov
98c64f1aa9 ubOde remove ols pseudo convex for sculpts 2017-07-22 00:00:46 +01:00
UbitUmarov
c1ab1289ab shape convex should not trigger complex cost (LI) alone 2017-07-21 16:07:04 +01:00
UbitUmarov
f6f0b1c513 fix a few EN typos 2017-07-21 14:41:13 +01:00
UbitUmarov
66a5b4d120 ubOde suport convex shapes on all normal prims and sculpts. Since code is experimental this is controled by options ConvexPrims and ConvexSculpts, on section Mesh, that can be set to false in case of problems 2017-07-21 14:11:03 +01:00
UbitUmarov
d1f7fac570 fix merge issues 2017-07-20 14:28:26 +01:00
UbitUmarov
fe6ad384e4 merge 2017-07-20 11:30:12 +01:00
UbitUmarov
4293b2cb3c fix object updates throttle for scripts doing motion by direct change of position. Most this scripts are bad, making no use of viewers interpolators. Tanks lotek. 2017-07-18 14:09:30 +01:00
UbitUmarov
f921ad005f KFM: changes on update method implies other changes. Still not that good. Note: objects motion timing can't be done using timers. On windows at least, those can have jitter of tens of ms 2017-07-17 00:58:35 +01:00
UbitUmarov
59de8fbba0 fix placement of xml ReadEndElement() 2017-07-16 06:10:24 +01:00
UbitUmarov
2f9222bec3 test scenes do not set IsRunning 2017-07-16 05:52:01 +01:00
UbitUmarov
9ae26fc5af store kfm on inventory. this may still be a bit confusing on rez 2017-07-16 05:19:27 +01:00
UbitUmarov
04b97be71e ode does not like null refs 2017-07-16 02:55:39 +01:00
UbitUmarov
cd15de628d don't start moving KFM things on region start that where stopped on last shutdown 2017-07-16 01:31:37 +01:00
UbitUmarov
4ef64d4425 trigger moving_end also KFM stop and pause 2017-07-16 01:10:27 +01:00
UbitUmarov
101413ddd9 make KFM use scheduled terse updates. This may increase some rubber band, but is needed, and should work better with recent changes on sop terseupdates control 2017-07-16 00:48:04 +01:00
UbitUmarov
ad46a29d9e Ooopsss 2017-07-15 20:59:16 +01:00
UbitUmarov
4b7f79e296 fixes and changes on TreePopulatorModule. Please read OpenSimDefaults.ini
[Trees] section. Does need more work, and some hardcode settings may not
be the optimal still"
2017-07-15 04:07:03 +01:00
UbitUmarov
8b16131206 add Util.GetTimeStamp() that returns the stamp in seconds; use it on ubOde; separed land collsions dispatch from the others... 2017-07-13 20:21:18 +01:00
UbitUmarov
4fe13ef639 update libomv fixing EnUsCulture 2017-07-13 05:21:00 +01:00
UbitUmarov
a17abe7518 typo fix 2017-07-13 04:28:35 +01:00
UbitUmarov
bd249bdf5b replace the wrong libOMV user modifiable Utils.EnUSCulture by our own no User modifiable Culture.FormatProvider, and also for internal coerence. We do use the libomv on other code paths, so that must be fixed 2017-07-13 04:14:33 +01:00
UbitUmarov
61e3fe42bd fix wrong test 2017-07-13 03:26:43 +01:00
UbitUmarov
51d32e3bed add more missing en-us culture on scene serializer writes 2017-07-13 02:57:57 +01:00
UbitUmarov
457551d069 rename SOG.UpdatePrimFlags as just UpdateFlags since this is relative to the group never individual prims/parts and so confusing 2017-07-12 10:28:11 +01:00
UbitUmarov
aff9c345dd osSetParcelDetails: add more land update code 2017-07-12 07:27:21 +01:00
UbitUmarov
a069ed09a8 osSetParcelDetails: make seeAVs send updates. This is a temporary patch, this function does need to call a framework land function that deos issue proper updates about all fields to all cleints. ( sounds will not stop/start also for now) 2017-07-12 03:47:34 +01:00
UbitUmarov
3847f861e3 osSetParcelDetails: allow parcel group to be cleared also 2017-07-12 01:52:01 +01:00
UbitUmarov
c8a9b0321f osSetParcelDetails: place hard restrictions on change owner,claimdate (both estate owner or manager) and group (same plus parcel owner that also needes to be a member of the new group); add PARCEL_DETAILS_SEE_AVATARS, PARCEL_DETAILS_ANY_AVATAR_SOUNDS and PARCEL_DETAILS_GROUP_SOUNDS 2017-07-12 01:44:34 +01:00
UbitUmarov
f5324833ee remove wrong comment on lsl object rez. we can't add delays on async process 2017-07-11 02:47:37 +01:00
UbitUmarov
72bce8c4b4 do lsl object rez checks on script thread before wasting time possible creating a new poll thread 2017-07-11 02:33:48 +01:00
UbitUmarov
40b16f1705 SimpleAngularDistance update prioritization scheme ameks no sense without ordered dequeue of the updates 2017-07-10 22:01:38 +01:00
UbitUmarov
f8cdccc167 a few more changes on entities updates 2017-07-10 21:12:34 +01:00
UbitUmarov
9dbcb4e5f6 on entities updates throttles vectors needed to be compared as vectors, not just their norms 2017-07-10 19:31:35 +01:00
UbitUmarov
63e3fc21ef fix the name of a funtion on last commit 2017-07-10 13:48:28 +01:00
UbitUmarov
cc5d6f6b7b throttle collision sounds on a SOG. 2017-07-09 00:14:30 +01:00
UbitUmarov
ead95e85c5 bug fix: dynamic testures set to ALL_SIDES, preserve other face data already present 2017-07-07 04:57:57 +01:00
UbitUmarov
dfef16297b ubOde don't use old ode body sleep option, a few changes on sleep control, update ode.dll (windows, others needed) (keep older versions.. bc.. well bugs happen) 2017-07-07 01:49:34 +01:00
UbitUmarov
1dc56eb15f ubOde: but only do that if sphere is physical.. 2017-07-03 23:38:55 +01:00
UbitUmarov
39751891f4 ubOde: dont do avatar step climb on small true spheres. lets play simple football 2017-07-03 22:47:27 +01:00
UbitUmarov
c5a4c299cb update ode.dll ( windows) 2017-07-02 05:59:49 +01:00
UbitUmarov
f3a920237b oops i forgot the avatar knees bending on ramps... so go back.. 2017-07-02 01:34:06 +01:00
UbitUmarov
edc7575f9e a few changes to ubOde avatar collisions 2017-07-01 01:43:58 +01:00
UbitUmarov
965d004fbe do calls to m_host.AddScriptLPS() on the right place on osslm this stat is of course still wrong LPS does not mean api function calls 2017-06-30 22:39:19 +01:00
UbitUmarov
6b0a3e981c put osGetAgentIP() in threat control with level Severe so it can be disabled even for inworld administrators as needed on some grids. rearrage the osslEnable.ini file segregating the funtions only listed for information 2017-06-30 22:04:56 +01:00
UbitUmarov
aa4eb2bc14 update ode.dll (windoes only. need bins for others :( ) 2017-06-30 00:30:46 +01:00
UbitUmarov
cb2607d4fa fix scripts xmlrpc threads names 2017-06-29 21:17:41 +01:00
UbitUmarov
190874344b ScriptsHttpReq does not need a permanent thread 2017-06-29 21:14:20 +01:00
UbitUmarov
6bac44e767 bug fix 2017-06-29 00:42:35 +01:00
UbitUmarov
e243dd0519 put back getAgentIP bug restricted, script owner must be a Administrator (god) 2017-06-28 02:19:27 +01:00
UbitUmarov
b0a0163253 BUG FIX: change lludp hovertext utf-8 cut point. Thx djphil 2017-06-28 01:29:49 +01:00
UbitUmarov
936aee412d remove osGetAgentIP() this was not a good idea to have :( 2017-06-27 01:41:06 +01:00
UbitUmarov
5242853d68 dont list deleted ones, that still don't know they are gone 2017-06-26 20:55:44 +01:00
UbitUmarov
b319977a3f dont list deleted ones, that still don't know they are gone 2017-06-26 20:51:40 +01:00
UbitUmarov
e53f439981 add osGetNPCList() 2017-06-26 20:42:49 +01:00
UbitUmarov
b59ce7c968 also on the actual source file 2017-06-26 20:28:16 +01:00
UbitUmarov
3fda7c6315 take a few more out of level check 2017-06-26 20:23:24 +01:00
UbitUmarov
9ea6580c37 update osslEnable.ini. functions that have no level check are still listed but commented, just to be more visible 2017-06-26 20:05:11 +01:00
UbitUmarov
f660aa37ac add similar restrictions to osObjectTeleport :( 2017-06-26 19:40:20 +01:00
UbitUmarov
cbd0af3cab let osTeleport* always work on script prim owner 2017-06-26 18:26:45 +01:00
UbitUmarov
ef74efeaa7 and add a missing bracket :) 2017-06-26 09:18:31 +01:00
UbitUmarov
e075cf4461 fix bad english 2017-06-26 09:08:23 +01:00
UbitUmarov
0c5f412ed4 put back restriction that on osTeleport the target must be on land owned by the script owner or this is a estate manager/owner, or target did gave script permission. 2017-06-26 02:49:20 +01:00
UbitUmarov
0418542344 some shortcuts on local osTeleport, reduce its time penalty, do it with script thread 2017-06-26 00:18:46 +01:00
UbitUmarov
3ce909528d change Backup calls overlap control code 2017-06-25 15:42:36 +01:00
UbitUmarov
84abdf866a add respective ossl helper funtion osDrawScaleTransform(string drawList, LSL_Float x, LSL_Float y) 2017-06-25 02:26:36 +01:00
UbitUmarov
a9a44eaeb5 add vectorrender string command ''ScaleTransf x,y;''. this allows scaling of objects to draw next. -1,1 will make text be drawn with x direction flipped (it is like the texture scale) 2017-06-25 02:17:02 +01:00
UbitUmarov
cb8975e567 add string osDrawTranslationTransform(string drawList, LSL_Float x, LSL_Float y), string osDrawRotationTransform(string drawList, LSL_Float x) and string osDrawResetTransform(string drawList) helper functions for the new vector renderer comands. Removed ThreadLevel check of similar funtions that had it None, and actually only set strings 2017-06-24 23:04:37 +01:00
UbitUmarov
5d776fca3a add dyn textures vectorrender comands ''ResetTransf;'', ''TransTransf x,y;'' and ''RotTransf x'' string only, no ossl helper api still 2017-06-24 21:42:11 +01:00
UbitUmarov
1a8a77c41e revert the thread level change; remove unused dynamic texture timer from internal code; let blend alpha work if < 255; let blend work with the selected face; etc 2017-06-24 09:24:56 +01:00
UbitUmarov
8d1dd44edb simplify vectorrender background draw 2017-06-24 07:39:22 +01:00
UbitUmarov
ed8fc359f3 change thread level of osSetDynamicTextureDataBlendFace to VeryHigh 2017-06-24 06:11:10 +01:00
UbitUmarov
72db6f76b5 remove a DynamicTexture leak, make it actually return the new texture ID to ossl, do delete previus texture from local cache if temporary,at least on same cases... but still very broken.. 2017-06-24 05:22:02 +01:00
UbitUmarov
ae4266916c add string osSetDynamicTextureDataFace(string dynamicID, string contentType, string data, string extraParams, int timer, int face) to easy only setting a prim face 2017-06-24 04:23:13 +01:00
UbitUmarov
c3dbf91152 osDrawFilledEllipse or string comand FillEllipse identical do Ellipse one 2017-06-24 03:21:23 +01:00
UbitUmarov
191661b51d a few more changes to iar/oar assets save error/warning to show problems known to be asset errors 2017-06-24 02:01:48 +01:00
UbitUmarov
0a1f497dee code actually has no ideia if a id is a asset or not and does try to handle all as assets, it really can't report errors. Change messages to make more clear they are only warnings and may mean nothing at all 2017-06-23 19:55:23 +01:00
UbitUmarov
83e443bca1 do the same on OAR saves 2017-06-23 17:48:59 +01:00
UbitUmarov
95595a8360 coment out missing or damage assets messages in uuidgather that are not very usefull. In IAR save display information about items that contain references to broken assets. Note that as explained on mantis 8195 this can't will not detect all problems 2017-06-23 17:23:28 +01:00
UbitUmarov
3c6790b061 several changes to iar/oar assets error reports 2017-06-23 15:50:16 +01:00
UbitUmarov
28caf1e089 actually iar do it for iar 2017-06-22 22:09:00 +01:00
UbitUmarov
cbae148f68 show the count of broken assets we now have from gather on iar/oar pre save information 2017-06-22 21:48:26 +01:00
UbitUmarov
aea49070c9 change uuidgather a bit more 2017-06-22 21:37:51 +01:00
UbitUmarov
66c8b7202b split some asset uuids gather i stages with dif possible errors, and dont let them be fatal 2017-06-22 19:38:38 +01:00
UbitUmarov
11d3860781 avoid some broken object assets present in osgrid inventories due to past problems, etc 2017-06-21 21:38:12 +01:00
UbitUmarov
1bfe4da378 do not try to store on oars temporary or in transit objects ( they may be deleted during the save) 2017-06-21 20:15:35 +01:00
UbitUmarov
637d35631c make oar/iar assets writer be done by caller thread like the rest of the
oar/iar save. This may look more painfull but should reduce errors and
threads fights. Fill lucky i just don't stop the entire simulation during
this
2017-06-21 18:40:53 +01:00
UbitUmarov
70da902732 changes to AutoBackModule. Store folder and number of days expire is now also only defined in OpenSim.ini and so same for all regions. 2017-06-21 13:35:36 +01:00
UbitUmarov
36442c004f changes to AutoBackModule. Add option ALL to dooarbackup to save all regions in instance 2017-06-21 03:56:43 +01:00
UbitUmarov
651952e01e changes to AutoBackModule. Time interval is now unique and only definable on OpenSim.ini. All enabled regions will be saved in sequence whne it expires. Interval is time since last region save end, so will not follow wall clock. This reduces the chance of overlapped saves. Console command renamed to dooarbackup to be more distint from db backup. Lost the region load checks, to put back later 2017-06-21 03:31:07 +01:00
UbitUmarov
79e166e9aa revert EnvironmentTick back to orignal clock, since change may cause issues on some code paths. Clean a bit get mesh and get texture throttle 2017-06-19 05:22:38 +01:00
UbitUmarov
3fc6f62c45 Merge branch 'master' into httptests 2017-06-19 03:20:40 +01:00
UbitUmarov
fe0fce424c a defual can me comented out 2017-06-19 03:19:55 +01:00
UbitUmarov
4df19ece53 framework main thread pool is always active and in use ( even id hard to catch) so show in on show stats. Disable ServerStatsCollector by default, since most don't use it, Adicionally it uses shared framework performance counters system that may be affected if a region crashs 2017-06-16 18:16:26 +01:00
UbitUmarov
10d526f961 Merge branch 'master' into httptests 2017-06-16 02:43:36 +01:00
UbitUmarov
822574df9f change the clock source for EnvironmentTickCount so it does get a bit more resolution if avaiable (1ms) specially on windows. This until all calls to this are removed. Coment out some stats in workpool/threads creation path 2017-06-15 20:28:20 +01:00
UbitUmarov
969d5f742c update inventory item permissions on deattach 2017-06-15 04:20:32 +01:00
UbitUmarov
1c64b5018a fix llsd DeserialiseOSDMap cast from boolean to int, this seems to fix alchemy beta 5.0 scripts upload, but this viewer seems to be of no use for opensim, sice it does crash.. insists lbsa is at second life etc 2017-06-14 22:05:53 +01:00
UbitUmarov
d9a300fa8e some cleanup.. remove some stats that only some do look at once on a lifetime 2017-06-14 20:19:13 +01:00
UbitUmarov
8e3a50212c remove options about script compilers the got back somehow on defaults also 2017-06-14 16:03:03 +01:00
UbitUmarov
ef87370cf1 remove options about script compilers the got back somehow 2017-06-14 15:58:02 +01:00
UbitUmarov
84946e3061 Merge branch 'master' into httptests 2017-06-14 03:04:14 +01:00
UbitUmarov
5e67bd5778 main generic use JobEngine also does not need a permanent thread.. actually doesn't even seem to be in use 2017-06-14 00:51:22 +01:00
UbitUmarov
614a5266c5 guess HGEntityTransferModule jobengine does not need a permanet thread 2017-06-13 22:45:31 +01:00
UbitUmarov
ed8526bcfb coment out tests that now depend on active thread pool 2017-06-13 20:34:21 +01:00
UbitUmarov
ad43cc6784 change llclient async udp packets processing. Removed the shared Jobengine that made only one thread do some packets for all users, and removed the FireAndForget, so each user could issue a unlimited number of threads. Added a new JobEngine per client, so each gets at most one thread,and that thread can be released if iddle (for 5 seconds ) 2017-06-13 19:04:18 +01:00
UbitUmarov
482ff06e13 make JobEngine be a workitem of mail pool (smartThread), with the option to release thread after a idle time, so is free to do other service elsewhere 2017-06-13 18:50:34 +01:00
UbitUmarov
5ce15566ac add option for Fireandforget not timeout (our access to main smartThreadPool) 2017-06-13 18:39:42 +01:00
UbitUmarov
f33a871d61 hope gc does remove a little dic and contents 2017-06-13 14:15:28 +01:00
UbitUmarov
fd8836e493 dont let time go back 2017-06-13 14:09:34 +01:00
UbitUmarov
9526a96b4f some cleanup 2017-06-13 13:22:01 +01:00
UbitUmarov
3ba63dde6e udp is not tcp. If mono versions have bronke udp sento, better update, also having 300 threads because object select is not funny 2017-06-13 12:17:39 +01:00
UbitUmarov
e650a4ff16 remove excessive notion of paralelism 2017-06-13 08:56:21 +01:00
UbitUmarov
25371933b4 update Robust32.exe build files 2017-06-12 20:36:36 +01:00
UbitUmarov
46ba2ead1a add Robust32.exe so recovering the option to run it also in 32bit on windows 2017-06-12 20:28:14 +01:00
UbitUmarov
a18d45fbdc fix some issues on ubOde physics shape type changes 2017-06-12 16:19:29 +01:00
UbitUmarov
f62400c4ca improve english on few messages (thx) 2017-06-12 13:34:39 +01:00
UbitUmarov
70be8ba6de make some web request errors visible, so cause of later asset not found is clear 2017-06-12 13:29:14 +01:00
UbitUmarov
617f42bcfa try to mk jenkins happy 2017-06-12 01:32:18 +01:00
UbitUmarov
dd7ab862ab stop doing UpdateMovementAnimations on avatar collisions, that may cause incorrect changes 2017-06-12 01:07:38 +01:00
UbitUmarov
953872510f add/replace sources of OpenSim32.exe 2017-06-11 22:36:08 +01:00
UbitUmarov
d0afd4335c fix a error message 2017-06-11 22:32:56 +01:00
UbitUmarov
5e83c2e422 forget about stupid mono 32bit 2017-06-11 19:29:59 +01:00
UbitUmarov
8c5f09f44b actually.. its opensim, use same log file name in 32b mode 2017-06-11 18:56:34 +01:00
UbitUmarov
bd2da771a4 remove a ref to old 32bitlauncher 2017-06-11 18:38:54 +01:00
Kevin Cozens
46c8c4854e Set the execute bit on the bin/opensim*.sh files 2017-06-11 13:30:12 -04:00
UbitUmarov
7941f8da23 add opensim.sh and opensim32.sh for linux, replacing old opensim-ode.sh 2017-06-11 18:12:25 +01:00
UbitUmarov
08659811c7 put back opensim 32bit launcher, renamed as OpenSim32.exe. This allows opensim to run in 32bit mode on 64bit machines. Possible most opensim regions should be running like this. 2GB of Virtual memory is still a lot on memory 2017-06-11 13:04:34 +01:00
UbitUmarov
5842d5f7b0 revert. The .net concurrent objects look nice, but mono5 cpu load with them does not 2017-06-10 13:58:16 +01:00
UbitUmarov
73aa752034 replace some locked objects by .net4.0 concurrent objects 2017-06-10 04:18:31 +01:00
UbitUmarov
b5910cfdb7 merge 2017-06-10 02:48:51 +01:00
UbitUmarov
be975d1e89 add a adicional in transit flag to signal HG tps, and use it to ignore usernames requests sent to start region during tp; don't send unknows display names ( getdisplaynames cap ) 2017-06-09 23:27:33 +01:00
UbitUmarov
e8165a7b51 only silent remove threads from watch list if they stopped ( ie still consider aborted etc ) 2017-06-09 20:14:56 +01:00
UbitUmarov
f69e48bedc make SendCoarseLocations async, since it is http. Make some actions use thread from pool and not a new one. Threading does need a deep cleanup one of this days. This stops mantis 8183 warnings, but as side effect only 2017-06-09 17:32:07 +01:00
Kevin Cozens
3cddfddc3f Minor changes to commented text in bin/OpenSim.ini.example 2017-06-09 10:14:09 -04:00
Kevin Cozens
0ac6b74c5e Fixed typo in log message 2017-06-09 10:14:09 -04:00
UbitUmarov
d12957dc2c still losing time with of halcyon incompatibile oars... cathch exceptions of the function that actually throws; Reduce log spam; don't let a broken MOAP stop all object deserialization. Fixing MOAP does not mean halcyon oars issues are fixed, just one. And really we should not even try to go against halcyon decison to be incompatible.(our MOAP encoding did not change since 2010) 2017-06-09 12:14:13 +01:00
Robert Adams
5bfe8b18fe Another attempt at parsing MOAP <Media> elements in OAR files.
Seems there are multiple interpretations of the format of the content of the
<Media> element in OAR files. OpenSimulator (for reasons lost in the mist of time)
escapes the XML in the element and then reparses it was a separate XmlReader.
Other simulators fill the <Media> element with regular XML.

This patch parses the <Media> escaped XML content as it always has and, if
the parsing fails, falls back to trying to parse the pure XML.
2017-06-08 21:41:34 -07:00
UbitUmarov
1e3a19e673 bug fix plus some cleanup 2017-06-09 00:15:53 +01:00
UbitUmarov
ef2fd8fcea keep the reverted code, that does work. Our code likes to have pbs.Media == null when there is no MOAD defined, so handle possible odd oars that may have llsd <array /> on that case 2017-06-08 20:47:51 +01:00
UbitUmarov
29f2421d4f revert fa5bf4fd0b for test 2017-06-08 11:45:33 +01:00
UbitUmarov
7bea4f1578 Merge branch 'master' into httptests 2017-06-07 20:12:49 +01:00
UbitUmarov
02b51b84f4 so no real need for Maintenance thread.. so removed 2017-06-07 19:09:16 +01:00
UbitUmarov
2d93008bd9 course locations is a also heartbeat job (for now sync) 2017-06-07 18:52:56 +01:00
UbitUmarov
eca89c6e61 remove some more dead scene options 2017-06-07 18:15:15 +01:00
UbitUmarov
c8b3925085 remove nonsense SendPeriodicAppearanceUpdates. if we need such a thing, then a lot is broken. Remove duplicated CleanTempObjects() call, rename BackupWaitCallback thread as BackupWorker ( still didn't found cause for mantis 8783) 2017-06-07 18:04:02 +01:00
UbitUmarov
7d58b73bbc some changes on pollevent 2017-06-06 21:55:47 +01:00
UbitUmarov
8971e9f126 Merge branch 'master' into httptests 2017-06-06 21:47:55 +01:00
UbitUmarov
9011ca8461 set optional group position and rotation before attach to scene 2017-06-06 20:38:17 +01:00
UbitUmarov
773914591d Merge branch 'master' into httptests 2017-06-06 03:28:30 +01:00
UbitUmarov
a23f99366f bug fix: handle current region on GetChildAgentsToClose 2017-06-06 03:22:11 +01:00
UbitUmarov
258d169392 Merge branch 'master' into httptests 2017-06-06 00:30:01 +01:00
Robert Adams
fa5bf4fd0b Correct parsing of 'Media' XML element in PrimitiveBaseShape when reading an OAR file.
The code used to call Serializer.ReadElementContentAsString() and then expected to
pass the XML to PrimitiveBaseShape.FromXml to parse. This would throw as
ReadElementContentAsString does not allow any children of the element.
Reading with Serializer.ReadInnerXml() was the fix.
This was only not a problem because most often shapes don't have media and
most simulators don't output anything if the media array is empty.
2017-06-04 20:51:56 -07:00
UbitUmarov
aea282ba38 Merge branch 'master' into httptests 2017-06-03 07:20:31 +01:00
UbitUmarov
4320758d97 remove redundant UpdateMovementAnimations(); 2017-06-03 07:19:20 +01:00
UbitUmarov
01bd578bb0 Merge branch 'master' into httptests 2017-06-03 07:08:43 +01:00
UbitUmarov
f26ad07ce1 add a delayed stop so fast tap on move keys does not stop the avatar in some cases 2017-06-03 07:01:07 +01:00
UbitUmarov
67e540e05c cross mouse buttons state 2017-06-03 04:28:43 +01:00
UbitUmarov
12a6625dc7 fix MouseDown in case it gets any use 2017-06-03 03:48:49 +01:00
UbitUmarov
7310b7625e move a execution overlap guard to end of job 2017-06-02 12:58:04 +01:00
UbitUmarov
de153c2b62 Merge branch 'master' into httptests 2017-06-02 06:26:20 +01:00
UbitUmarov
b920f784ea avoi null refs on tests simple clients 2017-06-01 00:14:59 +01:00
UbitUmarov
c68e7b6621 change child agents close control; disablesimulator is not a caps event message 2017-05-31 23:31:02 +01:00
UbitUmarov
5c156508e2 mantis 8182: update/fix GenerateRandomAnimation(). not updating libomv avatar data bc have no idea why do do have it, so leave it to who does know 2017-05-31 12:33:35 +01:00
UbitUmarov
55babdc160 Merge branch 'master' into httptests 2017-05-31 07:21:21 +01:00
UbitUmarov
7217c20291 we don't need to keep refs to baked textures assets 2017-05-31 07:12:03 +01:00
UbitUmarov
f5f0fa5d1f we don't need to keep refs to baked textures assets 2017-05-31 06:18:05 +01:00
UbitUmarov
74da81890c oops.. 2017-05-31 06:04:59 +01:00
UbitUmarov
720a69a49b remove the option to store baked textures on assets service, thats suicide use xbakes 2017-05-31 04:47:59 +01:00
UbitUmarov
b1c585718c remove debug messages 2017-05-31 04:30:00 +01:00
UbitUmarov
e5991124dd merge LocalNeighbourServicesConnector and RemoteNeighbourServicesConnector in single NeighbourServicesOutConnector 2017-05-31 01:29:38 +01:00
UbitUmarov
0fa3af96a4 remove anoying crossing messages on open borders 2017-05-30 16:51:49 +01:00
UbitUmarov
79b2926ce1 do another dns request via new cache. My problems bf wheren't mono after all, but ubuntu systemd.resolver and google public dns, killing one and not using other did improve dns a lot 2017-05-30 15:34:22 +01:00
UbitUmarov
90da5280af put back soft http close 2017-05-30 09:01:39 +01:00
UbitUmarov
e5bebe3a32 webrequests serialiazation per endpoint its now ServicePointManager job 2017-05-30 08:20:58 +01:00
UbitUmarov
91caf98308 change servicePoint dns expire also to 5min, let the endpoints expire slide. This should reduce impact of absurd dns fails observed on my test ubuntu VM 2017-05-29 07:48:09 +01:00
UbitUmarov
a317bba8cf cache endpoints (and other paths) dns requests for 5min, this delay should be acceptable in all cases ? 2017-05-29 07:11:13 +01:00
UbitUmarov
0f0673552c remove a unnecessary dns check 2017-05-29 06:50:55 +01:00
UbitUmarov
8f86de265c some cleanup and assume Linux/mono DNS is just broken... 2017-05-29 05:22:21 +01:00
UbitUmarov
7be6e16555 no.. still a fail 2017-05-29 03:41:09 +01:00
UbitUmarov
27afe136d4 mono is a total crap 2017-05-29 03:13:56 +01:00
UbitUmarov
2c19d08448 cleanup util.cs get dns 2017-05-29 02:07:53 +01:00
UbitUmarov
6d23e0bc31 add temporary debug msgs 2017-05-29 01:27:02 +01:00
UbitUmarov
d94b2e6f6d remove a now anoying message.. 2017-05-29 00:20:14 +01:00
UbitUmarov
5274a3181e enclose GetRequestStream on try/catch 2017-05-28 23:54:43 +01:00
UbitUmarov
99111e5052 enclose GetRequestStream on try/catch 2017-05-28 23:51:13 +01:00
UbitUmarov
687c01b29e need to delay even more agent close after teleport to compensate for slow machines and user connections. This one of current tp teleport protocol flaws 2017-05-28 03:17:34 +01:00
UbitUmarov
d1306c8976 a null ref check left behind on previus commits 2017-05-28 02:11:40 +01:00
UbitUmarov
572e84c822 make use of a rare thing called StringBuilder on LSL_List. LSL_List uses may need a revision to make sure they are passed by ref and not by value, with necessary adjustments. This does not have much impact on AppDomains, since if they cross, they are always serialized. Since lists are important parts of LSL, the AppDomainLoading option needs to be replaced by something else 2017-05-28 01:56:52 +01:00
UbitUmarov
18f1ea1086 make LSL_list a CLASS again. Now we need to it allover again. Scripts need to be recompiled ( delete contents of bin/ScriptEngines) 2017-05-28 01:11:53 +01:00
UbitUmarov
6a0eba3d7b disable llhttprequests secure con, since it still collides with main ssl settings 2017-05-27 14:39:56 +01:00
UbitUmarov
a2c824e124 get back to .net4.0 for now 2017-05-27 13:56:28 +01:00
UbitUmarov
2603363e3e update test httpserver, be more tolerant on protocols 2017-05-27 12:51:32 +01:00
UbitUmarov
a7db505caf stupid mono5 doesn't know about Subject Alternative Name IPAddress 2017-05-27 12:38:31 +01:00
UbitUmarov
117e6ec266 fix wrong cert ip compare 2017-05-27 08:30:12 +01:00
UbitUmarov
6609965f6e ops no 2017-05-27 06:50:45 +01:00
UbitUmarov
d5d09253bc add test cert 2017-05-27 06:47:54 +01:00
UbitUmarov
582dc75381 remove a accent from a method name 2017-05-27 06:30:23 +01:00
UbitUmarov
c54985f8a1 Merge branch 'master' into httptests 2017-05-27 05:47:05 +01:00
UbitUmarov
f7ae87a0d5 minor cleanup 2017-05-27 05:44:50 +01:00
UbitUmarov
289d4ca128 minor cleanup 2017-05-27 05:41:40 +01:00
UbitUmarov
2be362bd67 lose a ref 2017-05-26 21:30:06 +01:00
UbitUmarov
e7c2674dec cleanup (grid)region info endpoint; add log to try to find some xml decode issues 2017-05-26 21:26:51 +01:00
UbitUmarov
8f10db0a6a mantis 8181: don't try to delete contents of a non exitent folder 2017-05-26 05:32:59 +01:00
UbitUmarov
426f2130fc change opensim-ode.sh to use the ode engine defined on opensim.ini 2017-05-26 01:50:54 +01:00
UbitUmarov
5287489a3c avoid some wrong watchdog timeouts 2017-05-26 00:53:21 +01:00
UbitUmarov
7a82c7c5b2 make BlockingQueue.Dequeue timeouts more coerent (just less than watchdog timeout) 2017-05-26 00:47:08 +01:00
UbitUmarov
8d8236cfb2 missing file change.. actually use watchdog threads on assetsconnector and
avoid null refs on JobEngine
2017-05-26 00:34:46 +01:00
UbitUmarov
d90b68c2a6 change wrong watchdog stopped thread check code, and don't log it 2017-05-26 00:05:35 +01:00
UbitUmarov
2777995331 Merge branch 'master' into httptests 2017-05-25 10:23:52 +01:00
UbitUmarov
31b4a31246 add some checks for valid endpoints 2017-05-25 09:46:29 +01:00
UbitUmarov
772c5b7db0 move assetsconnector threads to whatchdog; Abort all alive threads known to watchdog before exit 2017-05-25 06:05:02 +01:00
Geir Nøklebye
0d31898fd6 Update macOS version of libode to 0.13.2. The library is build as a fat library with both 32 and 64 bit code. O3 optimization and built with macOS 10.11 SDK.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-25 05:03:27 +01:00
UbitUmarov
e5377eb839 use threads from main pool on assetsconnector 2017-05-25 04:51:45 +01:00
UbitUmarov
65e9421058 minor changes 2017-05-25 04:24:23 +01:00
UbitUmarov
8195cd5153 another one 2017-05-25 02:24:15 +01:00
UbitUmarov
b6c23fe911 make a few more threads background ones 2017-05-25 02:01:36 +01:00
UbitUmarov
4286ae43f2 make some threads background ones 2017-05-25 01:51:53 +01:00
UbitUmarov
9a1d94f455 remove use of libomv BlockingQueue 2017-05-25 01:28:02 +01:00
UbitUmarov
dca3a45803 add a bit more pre exit cleanup 2017-05-24 22:17:04 +01:00
UbitUmarov
2008e65695 mantis 8780 replace ode bins for linux with ones compiled against older Glibc, Thanks Jak 2017-05-24 21:08:21 +01:00
UbitUmarov
8989e8ef3a give up on the code to stop AsyncCommandManager. It fails with many scripts running, and its only done deep on exit code. It is a backgroud thread should not block exit and never did 2017-05-24 02:19:25 +01:00
UbitUmarov
c0bfaac0ac merge master 2017-05-23 07:35:02 +01:00
UbitUmarov
07e614a32c dont log timeouts on stopped threads 2017-05-23 06:38:19 +01:00
UbitUmarov
3c97bb1e6f fix lock position removing a not necessary function 2017-05-23 06:03:51 +01:00
UbitUmarov
e1aa591815 allow new thread creation if it was aborted on AsyncCommandManager 2017-05-23 05:59:14 +01:00
UbitUmarov
d5e8e116d4 protect AsyncCommandManager thread from fails on the several things it checks 2017-05-23 05:41:04 +01:00
UbitUmarov
8e777d50a6 only remove AsyncCommandManager thread when last instance is deleted 2017-05-23 05:34:25 +01:00
UbitUmarov
e69057a1b6 dont fail saving a OAR because of a broken material 2017-05-23 04:21:03 +01:00
UbitUmarov
f3eb73926e stop a few more threads on exit 2017-05-23 04:05:31 +01:00
UbitUmarov
928733efc9 please DIE! PLEASE?? 2017-05-23 03:26:32 +01:00
UbitUmarov
7b80bcc57a no all mono versions know DnsRefreshTimeout 2017-05-23 00:52:40 +01:00
UbitUmarov
c080d9fa23 remember mono about the default for DnsRefreshTimeout 2017-05-23 00:10:11 +01:00
UbitUmarov
24885819fc check XFF headers of caller, but be quiet about them 2017-05-22 22:05:56 +01:00
UbitUmarov
4da5d249d8 receivers can't tell if there where proxies on path unless they look 2017-05-22 21:22:04 +01:00
UbitUmarov
ea88927a65 remove some code for NAT that was disabled by its author Adam Frisby since 2009, and i don't see how to mk work with current viewers at that point at least 2017-05-22 20:18:01 +01:00
UbitUmarov
73222e4dd4 fix IClientIPEndpoint broken by justin long ago.. but stop using it
except on SceneBanner, later it my be also removed from there and
 everywhere
2017-05-22 19:16:42 +01:00
Geir Nøklebye
8f9256ea1c PGSQL: Another missing cast in XInventoryData
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-22 16:24:52 +01:00
UbitUmarov
fcb435deb4 make sure we drop requests if DoHTTPGruntWork fails 2017-05-22 05:53:59 +01:00
UbitUmarov
bad00670a9 disable keepalive on llHttpRequest 2017-05-22 05:02:42 +01:00
UbitUmarov
0320225ca8 reenqueue poll events while conn is open, and not expired 2017-05-21 07:02:35 +01:00
UbitUmarov
7c3200b393 cross avatar group info also if title is empty string 2017-05-21 05:16:18 +01:00
UbitUmarov
e520dba717 Merge branch 'master' into httptests 2017-05-21 02:20:40 +01:00
UbitUmarov
a2c2456076 remove LongPoll type and queues. Events should now have reduced latency also. About previus commit, it maybe a modified ingen-e3s-v1.33 script that is broken, and not the original version, can't tell 2017-05-21 02:11:53 +01:00
UbitUmarov
319ccf17c8 add a bit more protection for broken scripts like ingen-e3s-v1.33 2017-05-21 01:52:27 +01:00
UbitUmarov
c7fdb2ec53 on recover form nom finite avatar pos, don't add it physics it it had none 2017-05-21 00:52:18 +01:00
UbitUmarov
a5e3aab575 fix a null ref in ubOde character 2017-05-20 23:37:14 +01:00
UbitUmarov
046ec66ff9 fix a cast that makes LitJson unhappy 2017-05-20 22:21:27 +01:00
UbitUmarov
02a4298b02 mantis 8172: fix llList2Json() in case of vector or rotation types 2017-05-20 21:29:33 +01:00
UbitUmarov
49d42ee08a mantis 8171 fix redirection on llHttpRequest 2017-05-20 17:56:04 +01:00
UbitUmarov
774e00b3ee merge 2017-05-20 17:02:25 +01:00
UbitUmarov
78c4f8000e Merge branch 'master' into httptests 2017-05-20 14:30:49 +01:00
UbitUmarov
9397b358d3 mantis 8170: let physics know Always_run on adding the avatar 2017-05-19 19:51:23 +01:00
UbitUmarov
52dd683326 fix a null ref on parcels join 2017-05-19 18:03:02 +01:00
UbitUmarov
7c9615f000 fix land parcel group been lost on region upload 2017-05-19 17:35:49 +01:00
UbitUmarov
2717ef5da9 change some confusing comands help 2017-05-19 05:34:49 +01:00
UbitUmarov
40091f9be5 Merge branch 'master' into httptests 2017-05-19 03:23:57 +01:00
UbitUmarov
ef35805176 reWrite lsl json functions, forward slash is not escaped as LitJson spec; code can use some cleanup. Scripts need to be recompiled 2017-05-19 03:08:35 +01:00
UbitUmarov
c5d0c69a35 update libomv LitJSON to version 0.9.0 2017-05-19 02:51:37 +01:00
UbitUmarov
c28430d527 oops... 2017-05-15 18:12:17 +01:00
UbitUmarov
c74e0e2d9b remove a Paralell.For (actually not used). That kind of fine gained multitask makes no sense on already heavy multitasked server application like opensim. CPU cores are already busy or needed elsewhere. 2017-05-15 18:10:08 +01:00
Geir Nøklebye
7f163e8f76 Update NPGSQL from version 2.0.14.3 to 2.1.3. This is a relatively big update where 2.1.0 has a number of bug fixes, new functionality and improved performance. (see details at https://github.com/npgsql/npgsql/releases/tag/v2.1.0) The binaries supplied are for .NET 4.0 If you need binaries for older versions they can be dowloaded from https://github.com/npgsql/npgsql/releases/tag/v2.1.3. There are also binaries for 4.5.
The performance improvement is particularly evident on terrain load and other repeated queries to the database. This version will automatically generate prepare statements if it sees 5 consecutive identical statements and cache them for later use. The prepare statement will skip the analyze portion of the query planner once a statement has been created.  In addition there are improvements in the connection pool logic that will improve performance once connections get scarce.

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-14 18:59:24 +01:00
Geir Nøklebye
c1d06a806d Updated Npgsql.dll to version 2.0.14.3 built for .NET 4.0 Mono.Security has been updated for the same build.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-14 18:58:16 +01:00
UbitUmarov
eea247fcc5 Merge branch 'master' into httptests 2017-05-14 07:52:50 +01:00
UbitUmarov
156707edfb clear land object on delete 2017-05-14 06:27:29 +01:00
UbitUmarov
92df6095d5 don't round to nearest int 2017-05-14 05:49:01 +01:00
UbitUmarov
f968118e23 don't do dwell if there is no module active 2017-05-14 05:39:22 +01:00
UbitUmarov
9ab8ce1404 fix remote requests for dwell, so dwell module still called 2017-05-14 04:17:48 +01:00
UbitUmarov
cb21caae77 fix some issue on parcels loading and make parcels dwell show something. Resolution is 2.5min aprox. 2017-05-14 01:44:04 +01:00
UbitUmarov
25ca8695f3 find parcels by GlobalID.. well most time 2017-05-13 20:21:56 +01:00
UbitUmarov
dd0269df48 fix passcollisions bool value on store 2017-05-13 17:22:56 +01:00
Geir Nøklebye
7cf82a71d6 PGSQL: Convert PassCollision in table prims to bool to avoid a hopeless cast that fails with newer versions of NPGSQL.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-13 17:15:47 +01:00
UbitUmarov
16f02cb6fd we can't allow abort to change only one dic 2017-05-13 16:34:29 +01:00
UbitUmarov
9ea49d107d fix wrong locking on unused path it case it does get uses. Thanks LaNani Sundara 2017-05-13 15:58:35 +01:00
UbitUmarov
086eb28a91 a bit more on ServicePointManager 2017-05-12 22:03:53 +01:00
UbitUmarov
948138a3a4 lower connection limits again 2017-05-12 16:45:58 +01:00
UbitUmarov
566c96dc85 revert changes to *exe.config since a host mask of * produces identical effects as runtime setting 2017-05-12 15:54:54 +01:00
UbitUmarov
d08df7bda7 mantis 8165: fix a null ref on hg gatekeeper on another place 2017-05-12 15:22:16 +01:00
UbitUmarov
5e577baa10 fix a null ref on hg gatekeeper 2017-05-12 14:42:21 +01:00
UbitUmarov
0f2ab6bddd soem changes on connections limits 2017-05-12 14:20:06 +01:00
UbitUmarov
8bdd4c3ed9 yes it is not destiny grid but destination.. thx u know who :) 2017-05-12 12:30:59 +01:00
UbitUmarov
9c46e4921a remove forgotten refs to Mono.Posix.dll 2017-05-12 04:08:55 +01:00
UbitUmarov
a932f24ba4 minor fix on sensorrepeat 2017-05-12 03:53:18 +01:00
UbitUmarov
dcdc527401 Merge branch 'master' into httptests 2017-05-12 01:55:15 +01:00
UbitUmarov
19d141c9a5 avoid a null ref 2017-05-11 23:46:06 +01:00
UbitUmarov
1b7aee89d3 Merge branch 'master' into httptests 2017-05-11 23:14:02 +01:00
UbitUmarov
97d02ecf32 remove a coment added by mistake 2017-05-11 21:44:57 +01:00
UbitUmarov
b8138c37d3 hide a nonsense option 2017-05-11 21:41:33 +01:00
UbitUmarov
cc95b7e2d4 don't allow multiple presences of same avatar also on HG gatekeeper 2017-05-11 20:26:06 +01:00
UbitUmarov
f09fafff34 some cleanup 2017-05-11 20:24:47 +01:00
UbitUmarov
fb427daa34 avoid a null ref 2017-05-11 19:06:49 +01:00
UbitUmarov
211a1fe9d4 do not allow multiple logins of same avatar. No HG case, that needs work on some paths. option m_allowDuplicatePresences is checked, but is is a total nonsense.. Presences control will get broken if allowed, No one ever added code to suport it correctly. 2017-05-11 17:59:37 +01:00
UbitUmarov
5968c6372a let new regions know about grid services god 2017-05-11 17:30:57 +01:00
UbitUmarov
7e8c996d1b add a grid services god account 2017-05-11 17:15:02 +01:00
UbitUmarov
09c4952c6d merge 2017-05-09 23:22:36 +01:00
UbitUmarov
731510c305 let .net decide GC mode from its defaults on the platform 2017-05-09 18:27:06 +01:00
UbitUmarov
52d4cf692c update mysql connector to v6.9.9 .net4.0 2017-05-09 12:22:42 +01:00
Geir Nøklebye
03a38a80ab PGSQL: Rewrote EstateStore.migrations as it errored out in version 8 leaving the database without any estate tables on first run. It also lacked primary keys on estate_map and estate_settings. Syntax requires Postgresql 9.5 or higher.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-09 12:00:45 +01:00
UbitUmarov
957ca41b13 remove file bin/Mono.Posix.dll that causes problems with mono 2017-05-09 11:58:07 +01:00
Geir Nøklebye
d952d62baa PGSQL: Add missing AgentPrefs.migrations
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-05-08 20:25:03 +01:00
UbitUmarov
4b3d57e964 update mysql connector to v6.9.9 .net4.5 2017-05-08 19:08:20 +01:00
UbitUmarov
72811de98b push .Net framework to 4.5, this means minimal OS is now windows Vista (not XP), but we do need this, namely for easier SSL implementation 2017-05-08 19:06:37 +01:00
UbitUmarov
5622b174c4 update mysql connector to v6.9.9 .net4.0 2017-05-08 04:18:17 +01:00
UbitUmarov
f358b39ef5 update httpserver 2017-05-08 04:00:47 +01:00
UbitUmarov
6c79cc652b some conditional dispose on http requests inputstream 2017-05-08 00:54:17 +01:00
UbitUmarov
604b966d84 some conditional dispose on http requests inputstream 2017-05-08 00:40:15 +01:00
UbitUmarov
8ef43e5fb3 take more heavy work out of opened dbconn sections 2017-05-07 22:22:28 +01:00
UbitUmarov
b20778d8ec fix merge 2017-05-07 04:45:28 +01:00
UbitUmarov
11f6d28a06 fix merge 2017-05-07 04:21:33 +01:00
UbitUmarov
d0912b6151 let StreamReader be in using statements 2017-05-07 00:47:45 +01:00
UbitUmarov
de55ad9545 oops closed too soon 2017-05-06 22:12:45 +01:00
UbitUmarov
c57215687f a few more changes on mysql 2017-05-06 21:43:22 +01:00
UbitUmarov
4b2ef46de6 don't hold dbconn longer than necessart 2017-05-06 20:40:29 +01:00
UbitUmarov
76337b1d8e another misplaced close 2017-05-06 20:38:38 +01:00
UbitUmarov
504736eb43 build const strings a compile time... 2017-05-06 20:23:55 +01:00
UbitUmarov
54eb6fc779 GZipStream does have a CopyTo() 2017-05-06 18:25:07 +01:00
UbitUmarov
eb93855d84 dispose some MemoryStreams 2017-05-06 17:47:43 +01:00
UbitUmarov
ae191cd304 dispose some MemoryStreams 2017-05-06 15:57:47 +01:00
UbitUmarov
025bef4e07 fix a few wrong placement ( this is a test by the way ) 2017-05-06 01:47:26 +01:00
UbitUmarov
d26a9ed0b1 fix wrong placement 2017-05-06 01:41:33 +01:00
UbitUmarov
d9038e650a MySQLConnector is not a MS product 2017-05-06 01:25:54 +01:00
UbitUmarov
8e30016841 revert to older CSJ2K.dll since new seems have issues on linux with existent textures/sculpts 2017-05-05 22:24:05 +01:00
UbitUmarov
3bc64f638a add a few guard checks on serviceThrottlemodule 2017-05-05 17:44:33 +01:00
Diva Canto
3f641d98bd Added a fully functional groups data layer for testing. 2017-05-04 20:17:54 -07:00
Diva Canto
424a7a274b Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2017-05-04 18:20:48 -07:00
Diva Canto
dd88319495 Add a groups module to the perms test suite 2017-05-04 18:20:10 -07:00
Diva Canto
ab4f870000 Change the engine of the groups table back to MyISAM, because MySQL 5.5 and older don't support full test search on InnoDB 2017-05-04 18:19:46 -07:00
UbitUmarov
f31fe66ce1 fix bad move on xmlgroups 2017-05-05 01:53:02 +01:00
UbitUmarov
9e12ef9234 let all clients get a group title update on create group 2017-05-05 01:39:38 +01:00
UbitUmarov
5f5b7e56db merge fix 2017-05-04 12:57:11 +01:00
UbitUmarov
04a50b47bf the new options i add where actually bad idea, they would make the
compatibility issue ethernal. Removed and extended the ugly date hack to
 group share outwards propagation, until a better way is found at least
2017-05-04 12:36:08 +01:00
UbitUmarov
3402819888 do the same in the cases we are just moving parts around and not changing their caches (ie their taskInventory) 2017-05-04 12:08:10 +01:00
UbitUmarov
3a8dd24fd1 move deep effective permissions aggregation to first time use and not on changes. There flag it is need with InvalidateDeepEffectivePerms(). Add config options PropagateGroupShareOutwards and PropagateAnyOneOutwards 2017-05-04 11:37:13 +01:00
UbitUmarov
d62aed7f46 fix right to change permissions of group owned objects 2017-05-03 21:12:16 +01:00
UbitUmarov
3ef583f205 fix right to change permissions of group owned taskitems 2017-05-03 19:39:42 +01:00
UbitUmarov
fc46274732 still another missing conversion btw viewer and OS on groupd owned 2017-05-03 19:10:02 +01:00
UbitUmarov
4c42716022 taskitem group owned information was still incorrect 2017-05-03 18:11:50 +01:00
UbitUmarov
94bb6d965e change taskInventory copy/move to agents inventory rules 2017-05-03 16:03:26 +01:00
UbitUmarov
8a330bc45d Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-05-03 15:32:34 +01:00
UbitUmarov
b0244107dc viewer can't tell if a taskitem is group owned if we don't tell him; missing taskInv serial update 2017-05-03 15:31:42 +01:00
UbitUmarov
1b501f03f9 recover a lost trim in permissions modules names parsing 2017-05-03 15:30:43 +01:00
UbitUmarov
cffe2f87e6 viewer can't tell if a taskitem is group owned if we don't tell him;
missing taskInv serial update"
2017-05-03 15:19:11 +01:00
UbitUmarov
832ca518d7 fix merge 2017-05-03 03:52:55 +01:00
UbitUmarov
02b43f06d1 recover a lost trim in permissions modules names parsing 2017-05-02 20:45:01 +01:00
UbitUmarov
1bfe9354e3 coment out optional fields that should be edited and uncomented if needed 2017-05-02 15:45:54 +01:00
UbitUmarov
710677cdc6 mantis 8135 2017-05-02 15:16:56 +01:00
UbitUmarov
55f7986b44 fix some comments 2017-05-02 13:14:26 +01:00
UbitUmarov
a18ee3b6b3 fix LSL_ApiHttpTests 2017-05-02 12:35:06 +01:00
UbitUmarov
6c2f8176ae change opensim.ini.example setting of ExternalHostNameForLSL to a defualt 2017-05-02 11:39:29 +01:00
UbitUmarov
a890ea312b disable LSL http listener (llRequestURL/llRequestSecureURL) if ExternalHostNameForLSL is not set in cofiguration or does not resolve 2017-05-02 11:23:41 +01:00
UbitUmarov
ed22c5f3be Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-05-02 01:09:32 +01:00
Diva Canto
9c82ff7673 Shuffle some code around 2017-05-01 16:49:42 -07:00
Diva Canto
3c43cdbbcc Added some indirect transfer tests -- Take Copy by another avatar 2017-05-01 16:42:47 -07:00
UbitUmarov
8498cc2f02 save a few nanoseconds 2017-05-01 23:07:57 +01:00
Diva Canto
1ca2a7937e Permissions tests: added test with 2 direct transfers with permission changes in between (in inventory) 2017-05-01 14:58:03 -07:00
Diva Canto
8e88a9d702 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2017-05-01 10:09:54 -07:00
Diva Canto
9c6dd5d967 Perms test framework: make a lot of things more generic. 2017-05-01 10:09:31 -07:00
Diva Canto
45096b6238 Initial commit of the emerging test suite for permissions and more. 2017-05-01 07:06:50 -07:00
UbitUmarov
28d8eda768 buysell: make sure we dont buy child parts, dont mess with absolute position its useless with variable size regions, and its a rezing job 2017-05-01 14:42:38 +01:00
UbitUmarov
60dc124872 rename sog.GetEffectivePermissions() since its use is now limited to more specific task, and no longer on current effective(full) path. Note that change ownermask start to be current ownermask, and filter it to all parts basemask 2017-05-01 14:18:59 +01:00
Diva Canto
442a736a4c Add Permission tests project 2017-04-30 21:11:30 -07:00
UbitUmarov
2dbf96593c Permissions compatibility hack 1: anyone copy - new permissions require that all items in all object parts contents have anyone copy set. Old code only required it on object. This hack tries to allow objects older than today to still work as before on this. (this is a test, we may need to change it) 2017-04-30 19:44:49 +01:00
UbitUmarov
a96c0f760a having the file open then let PermissionsToString know about Export 2017-04-30 14:42:39 +01:00
UbitUmarov
0d59a29dc7 save some nanoseconds if unfolding will not change anything ( export default mks it rare, but looks nice) 2017-04-30 14:39:20 +01:00
UbitUmarov
b67904a651 remove a redundant operation 2017-04-30 14:31:46 +01:00
Melanie Thielker
cf1064a245 Add a missing viewer-relevant message to the perms module 2017-04-30 13:24:48 +01:00
UbitUmarov
10922c2a1a exclude lms from permissions checks. They are full rights, and broken on all dbs 2017-04-30 12:51:12 +01:00
UbitUmarov
514249e80e fix new landmarks default permissions 2017-04-30 12:43:09 +01:00
UbitUmarov
116d32d947 don't break groups permission mask 2017-04-30 00:14:45 +01:00
UbitUmarov
d8341588b3 nore permissions masks hierachy 2017-04-29 23:59:56 +01:00
UbitUmarov
fedd1a93d2 buysell: fix permissions masks hierachy 2017-04-29 23:09:32 +01:00
UbitUmarov
522695c821 update folded permitions if taking from world, or after unfold 2017-04-29 22:09:45 +01:00
UbitUmarov
04117d9f75 recover PermissionsUtil.ApplyFoldedPermissions (well my version). its use easys code readability 2017-04-29 19:07:04 +01:00
UbitUmarov
725ccbb477 add check for valid folded perms 2017-04-29 16:58:43 +01:00
UbitUmarov
74f0ffbda6 fix chain of contents sells 2017-04-29 02:45:26 +01:00
UbitUmarov
019b34ea39 BuySell: bug fix, use all object permitions for sold item, and not the operation rights one 2017-04-28 23:05:14 +01:00
UbitUmarov
00091f1fb9 forgot a change... 2017-04-28 20:13:53 +01:00
UbitUmarov
ba4e13ef55 a few changes to permissions folding... we are testing. at this point only use master for TESTING also 2017-04-28 20:03:44 +01:00
UbitUmarov
8d3d87e0b2 add a usefull taint and update 2017-04-27 00:02:01 +01:00
UbitUmarov
ce655056ca ubMeshmerizer: fix the orientation of last triangle on top/bottom faces of
hollow cylinders plz delete contents of bin/MeshCache to remove defective
entries"
2017-04-26 18:21:58 +01:00
Diva Canto
c8fcf9bceb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2017-04-26 09:58:34 -07:00
Diva Canto
8dfab8757c Fill out Current Outfit folder with links when creating the initial avatar appearance. Some viewers (e.g. Singularity 1.8.7) get seriously confused when the avatar has no current outfit links. 2017-04-26 09:58:15 -07:00
UbitUmarov
1b8c71c965 give more information on Fatal Error during region startup 2017-04-26 16:15:33 +01:00
UbitUmarov
ce3af94a69 mantis 6738: change parsing of the HTTP_CUSTOM_HEADER parameter and ignore entries in excess of 8 on the request 2017-04-26 07:19:44 +01:00
Diva Canto
2b8cdb2a75 If we're going to show regions twice (in standalone) at least make the formatting consistent... 2017-04-25 20:08:06 -07:00
Diva Canto
3b01c209b2 Update libOMV 2017-04-25 16:24:07 -07:00
UbitUmarov
a680d8b8d7 fix merge 2017-04-25 17:59:53 +01:00
UbitUmarov
7c5376f224 move mesh pbs creation code out of mesh upload code into to PrimitiveBaseShape.cs 2017-04-25 14:21:01 +01:00
UbitUmarov
29ab39f14f cosmetics on mesh upload encoding of number of faces on pbs shape. Use opensim shape enums in place of libovm for coerence, add a few coments. 2017-04-25 13:05:20 +01:00
UbitUmarov
2f6c78b888 finish encoding number of mesh faces in pbs shape on new meshs upload, and *HACK* flag it setting hollow shape to triangle. (some limited encoding as added some months ago, but only for viewers LOD). Use this hack flag to fix sop number of faces. old meshs will still report 8 faces, information to fix this seems lost unless the mesh asset is decoded 2017-04-25 04:58:24 +01:00
UbitUmarov
7a54c3e9c3 some fixes on the materials paramenters of llGetPrimitiveParams() 2017-04-24 11:46:13 +01:00
UbitUmarov
c91e101224 add suport for materials parameters PRIM_NORMAL, PRIM_SPECULAR and PRIM_ALPHA_MODE of llGetPrimitiveParams(). Im sleeping at this time, this can be very wrong 2017-04-24 07:06:48 +01:00
UbitUmarov
65a1547209 fix (or actually break) llList2float() since LSL_Key is same as LSL_String, the case of invalid LSL_Key cannot be handle, since most likely it is a string 2017-04-24 02:05:39 +01:00
UbitUmarov
3b33a90e37 update ode binaries for windows 2017-04-21 13:49:25 +01:00
UbitUmarov
54819fa4ae mantis 8154 dont let self lResetOtherScript mean harakiri 2017-04-21 11:03:31 +01:00
UbitUmarov
cf444ecc54 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-04-20 21:24:30 +01:00
Geir Nøklebye
ebcfad1a83 store the physics inertia override in the database
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2017-04-20 21:21:23 +01:00
Michael Cerquoni
b498d554e1 update ode binaries for linux; add a minimal velocity for bounce 2017-04-19 21:50:32 -04:00
UbitUmarov
84c9125016 update ode binaries for windows; add a minimal velocity for bounce 2017-04-20 02:25:22 +01:00
Geir Nøklebye
28125202cc update for The new Constant: integer OBJECT_REZZER_KEY = 32 + adding missing support for fields in the prims table.
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2017-04-19 14:04:54 -04:00
Geir Nøklebye
fe83763c36 PGSQL: Fixed a failing query in GroupsData for deleting groups messages older than 14 days. The little known abstime function could be used for a double cast. The field TMStamp should be changed to store the data as a proper timestamp. Related to Mantis #7848. Usually this would easily be solved using the to_timestamp function, but there is no support for it in NPGSQL as there are no very close functionality in .NET
Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2017-04-19 13:40:49 -04:00
Michael Cerquoni
52e03ee5bd update ubODE for Linux x86 and x86_64 to include lasted ODE 0.13.2 2017-04-19 13:24:38 -04:00
UbitUmarov
006c08886a deleted a bit 2 much on last commit 2017-04-18 05:31:15 +01:00
UbitUmarov
49884b94a7 update ODE binaries for windows. Other platforms need to compile from opensim-libs repo, folder ODE-OpenSim-0.13.2, read file OPENSIM-README.txt. Remove code to reduce bounce on non physical placement, new unmanaged should handle that 2017-04-18 00:50:55 +01:00
UbitUmarov
9354e60df0 fix active objects count down, a path at least 2017-04-16 03:39:35 +01:00
UbitUmarov
b52f7b9203 missing file and remove warnings 2017-04-15 10:56:46 +01:00
UbitUmarov
0f7ffc56ce several changes for osTeleportObject 2017-04-15 10:46:18 +01:00
UbitUmarov
156ef0bbe3 still issues with volume detectors and sleeping bodies 2017-04-15 02:48:58 +01:00
UbitUmarov
4f8f04d949 still issues with volume detectors and sleeping bodies 2017-04-15 01:21:47 +01:00
UbitUmarov
73be6cb269 increase the updates priority of linkset where avatar is sitting 2017-04-14 22:02:40 +01:00
UbitUmarov
63383bf3c5 add functions to send entity updates imediatly, except for avatars (or now) they should be use to bypass normal delayed updates, for debug 2017-04-14 21:55:37 +01:00
UbitUmarov
22e9647748 update ode binaries for windows 2017-04-14 03:45:03 +01:00
UbitUmarov
9d8220ac9f some reduction on large colision repulsive force on non physical placement of physical prims 2017-04-14 03:14:41 +01:00
UbitUmarov
040037d713 update ode.dll for windows. Other platforms need fo be compiled from opensim-libs repo, folder ODE-OpenSim.0.13.2. This adds OsTerrain, a replacevment for Heightfield that ubOde can use. Its already rotated as needed and has a diferent Sphere collider, rest is still almost identical. Keep previus ode version in case this goes wrong. 2017-04-12 06:50:34 +01:00
UbitUmarov
1848b1fdb1 mantis 8740: fix osTeleportObject set rotation 2017-04-06 12:56:00 +01:00
UbitUmarov
a41924d1f8 add missing invalidation of osGetLinkNumber cache 2017-04-05 19:42:55 +01:00
UbitUmarov
c0904a32cb OSSL CheckThreatLevel() with no arguments only tests if OSSL is enabled. Faster test for safe functions that are always allowed with OSSL enabled. other name could be CheckOSSLenabled, but this name preserves functions template. 2017-04-05 15:11:19 +01:00
UbitUmarov
c58f2167bb fix osTeleportObject OSFunctionThreatLevel setting on osslEnable.ini 2017-04-05 13:55:51 +01:00
UbitUmarov
2805cb9dec give osTeleportObject proper OSFunctionThreatLevel setting on osslEnable.ini 2017-04-05 01:15:44 +01:00
UbitUmarov
d085c337a9 add a little speedup on repeated requests for same name on osGetLinkNumber. 2017-04-04 20:11:11 +01:00
UbitUmarov
e237e1b2fa add LSL_Integer osGetLinkNumber(LSL_String name). uses a cache for the string to linknumber map, cache invalidations may still be missing :( 2017-04-04 19:27:45 +01:00
UbitUmarov
ca250e0b0b mantis 8740: rename osObjectTeleport as osTeleportObject, replaced the stop parameter by flags, add flags OSTPOBJ_STOPATTARRGET and OSTPOBJ_SETROT 2017-04-04 14:34:25 +01:00
UbitUmarov
056b765fbc mantis 8130: improve keyframes motion 2017-04-04 12:38:23 +01:00
UbitUmarov
c6150c2066 mantis 8140: fix objectTeleport rotation if stop TRUE 2017-04-04 00:30:19 +01:00
UbitUmarov
4bb27917f4 oops 2017-04-03 18:09:48 +01:00
UbitUmarov
1264069b41 fix typo 2017-04-03 17:29:02 +01:00
UbitUmarov
2bb5e98574 add EXPERIMENTAL osObjectTeleport(LSL_Key objectUUID, LSL_Vector targetPos, LSL_Rotation rotation, LSL_Integer stop) 2017-04-03 17:19:28 +01:00
UbitUmarov
eb11505d19 add bool CanObjectEnterWithScripts(SceneObjectGroup sog, ILandObject land) permissions check 2017-04-03 16:10:05 +01:00
UbitUmarov
44993550a8 store the physics inertia override in SQlite 2017-04-01 18:15:47 +01:00
UbitUmarov
443fc60cdf store the physics inertia override in Mysql and add it to serializer. run prebuild is required 2017-04-01 17:49:17 +01:00
UbitUmarov
24b7903cd0 add missing file. Changes of inertia data of objects running does not
produce correct physical results, namely linear and angular momentum
 are not conserved.
2017-03-31 21:03:57 +01:00
UbitUmarov
6a35a965ff add OSSL functions to override linksets total mass, center of mass and inertia. replacing the crude automatic estimation based on prims known to physics and density. Changed parameters are still not saved, and are lost on region crossings. only suported by UbODE. EXPERIMENTAL feature, only test it for now.. don't try to use in products. 2017-03-31 20:55:48 +01:00
Melanie Thielker
b033a2559e Adapt to a variable name that has changed in core 2017-03-31 14:55:54 +01:00
Melanie Thielker
5587ee4500 Merge branch 'melanie' 2017-03-31 14:50:14 +01:00
Melanie Thielker
6463ab7d79 If a DNS resolution fails on an outbound request, simply allow it 2017-03-31 14:44:22 +01:00
Melanie Thielker
59f7cf79c9 Prevent error spew when script send IM to HG users before HG is up 2017-03-31 14:38:42 +01:00
Melanie Thielker
5c3cb5297c Add missing dependency for etcd moduile 2017-03-31 14:38:42 +01:00
Melanie Thielker
a6ecedb72a Also ignore NPCs in short-circuiting region restarts 2017-03-31 14:38:42 +01:00
Melanie Thielker
c0ce746e2d When determining if a sim can be shut down, ignore NPCs 2017-03-31 14:38:41 +01:00
Melanie Thielker
75915bd0f3 Add the ability to post to and act uponconfiguration in etcd
Etcd is a distributed, highly available name-value store that is
the basis of many clustered applications. However, it can also be
run on a standalone machine. Using etcd allows live monitoring
and possibly changing configuration while the sim is running.
2017-03-31 14:38:41 +01:00
Melanie Thielker
680231d7e7 Make the MySqlGeneric layer transaction aware 2017-03-31 14:38:41 +01:00
Melanie Thielker
3e880cee45 Allow short-circuiting region restart delays of there are no users left 2017-03-31 14:38:41 +01:00
Melanie Thielker
4e465002a2 Make the file based log file format sane for the casual user
Developer-oriented format is left commented so interested users and devs
can reactivate it.
2017-03-31 14:38:41 +01:00
Melanie Thielker
5109dc955f Set a startup marker to let external scripts know the scene is up. 2017-03-31 14:38:41 +01:00
Melanie Thielker
adcb1d8798 Allow setting the stats log file location in OpenSim.ini rather than app.exe.config 2017-03-31 14:38:41 +01:00
Melanie Thielker
41d21190b1 Skip region restart messages and delays when there are no root agents 2017-03-31 14:38:41 +01:00
Melanie Thielker
995e750c56 Change a misleading message that could lead users to believe a grid is down 2017-03-31 14:38:41 +01:00
Melanie Thielker
91f142bbd2 Add the option to link a scene object with a monitoring object
For debugging purposes.
2017-03-31 14:38:41 +01:00
Melanie Thielker
27fdf3094d A god is a god is a god. Let gods access scripts and NCs
Support staff are not of much help if they can't see the script a user
has issues with.
2017-03-31 14:38:40 +01:00
Melanie Thielker
caaf9f7fc1 Squelch an error that happens when the asset cache was mounted RO.
Nothing we can do about that, blame Docker.
2017-03-31 14:38:40 +01:00
UbitUmarov
9a01fddd1c add CanSellObject() permitions check functions 2017-03-30 17:39:21 +01:00
UbitUmarov
efed73b2c3 mantis 8131: make the new Offline IM code optional and disabled by default, since it is not compatible with current central servers, like in osgrid. 2017-03-30 16:27:14 +01:00
Melanie Thielker
07c39624ef Merge branch 'melanie' 2017-02-02 15:34:20 +00:00
Melanie Thielker
6164573766 Fix an error that would cause a rebake loop on HG grids 2017-02-02 15:22:27 +00:00
Melanie Thielker
047e87458b Correct whimsical spelling on a log message 2017-02-01 18:10:27 +00:00
Melanie Thielker
202fcc7d6f Merge branch 'melanie' 2017-02-01 16:34:49 +00:00
Melanie Thielker
60cf3f759f Refactor part II 2017-02-01 16:34:07 +00:00
Melanie Thielker
a5151bb337 Refactor asset handling as per Ubit's suggestion 2017-02-01 16:31:01 +00:00
Melanie Thielker
5ceb315e34 Secure sim stats with an (optional) password.
There is way too much in these stats to expose them to the world, at
least for some of us.
2017-02-01 15:30:17 +00:00
Melanie Thielker
5a18ea31cf Make negative asset caching actually work
Also fixes some merge artefacts in HGAssetBroker where cached assets
were requested but not actually used and completely squelch a materials
debug message because there is nothing the user can do to fix it anyway.
2017-01-30 13:59:05 +00:00
Melanie Thielker
a17db1b3cd Comment two very spammy debug messages that the usr can't do anything about
Make a third one conditional.
2017-01-30 12:58:15 +00:00
UbitUmarov
056ccaed90 update parcel select or sat on stats on sit and stand 2017-01-27 21:43:25 +00:00
UbitUmarov
d4111ff670 fix SimwideArea again 2017-01-27 20:59:56 +00:00
UbitUmarov
0091c37ed3 several changes relative to objects return and parcel prim counts: avoid null refs, report correct count of returned objects, make obkects counts by ownership coerent with return rules, etc 2017-01-27 20:21:24 +00:00
UbitUmarov
f76ea3bb76 parcels must be loaded before objects, so they can be added to them 2017-01-27 20:07:02 +00:00
UbitUmarov
4b9c94a3aa bug fix: wrong enabled check 2017-01-27 13:10:57 +00:00
UbitUmarov
56e3aaefde Permissions modules where made NONShared modules. Make them so, removing incoerences and their potencial bugs 2017-01-27 12:32:01 +00:00
UbitUmarov
cdc23bab74 remove unused and wrong methods 2017-01-26 19:51:50 +00:00
UbitUmarov
ed365f6220 remove SOP.AttachPoint, redundant( and incoerent) with SOG.AttachmentPoint 2017-01-26 19:43:00 +00:00
Melanie Thielker
32c1127809 Make it possible to override the URL module 2017-01-26 18:35:53 +00:00
UbitUmarov
2fc7993d69 ubOde: update prim mass when changing Density 2017-01-26 02:45:12 +00:00
UbitUmarov
dd190f1a1f CHANGED ALLOWED_DROP should only trigger if user has no MOD rights 2017-01-25 20:26:09 +00:00
UbitUmarov
02fbe5a740 add and use CanDropInObjectInv 2017-01-25 19:39:58 +00:00
UbitUmarov
f722f1cf6c fix test setup 2017-01-25 18:10:59 +00:00
UbitUmarov
74ac2034e0 make use of CanDoObjectInvToObjectInv 2017-01-25 16:57:46 +00:00
UbitUmarov
b45f6b933f fix a bug in CanCopyObjectInventory; add CanDoObjectInvToObjectInv ( not wired) 2017-01-24 14:01:39 +00:00
Melanie Thielker
f0700f48d8 Comment some more debug and squelch another module not running msg.
Modules whould not require that their .ini key is present. If the user
chooses to not use that module, they should not be required to retain
the config key for it.
2017-01-23 14:26:14 +00:00
Melanie Thielker
f50d598434 Disable spam in profiles module. Modules should not say they're disabled. 2017-01-23 14:06:38 +00:00
Melanie Thielker
1e0ed50d29 Activate the new Offline IM module code instead of the old code
As most have gone to OfflineMessaging V2, this change will not affect
existing users but will benefit future grids.
2017-01-23 01:19:28 +00:00
UbitUmarov
c673ef7e3c replace calls to SOG.GetEffectivePermissions() by the new SOG.EffectiveOwnerPerms, some of those inline permissions checks should be reviewed and pass by permissions module 2017-01-22 23:05:39 +00:00
UbitUmarov
df035a4022 don't let part lastowner be the group 2017-01-22 21:38:59 +00:00
UbitUmarov
8d99c86f96 share before groupr roles was a testing elsewhere induced mistake, clean it up 2017-01-22 05:07:43 +00:00
UbitUmarov
50e318c401 work around group sharing and owned permitions issues, fix a non copy objects delete issue 2017-01-22 03:23:50 +00:00
UbitUmarov
c14ec1a9bd a few more changes on permissions 2017-01-21 14:22:32 +00:00
UbitUmarov
7a1d9e213e fix CanReturnObjects 2017-01-21 11:21:36 +00:00
UbitUmarov
186f0b73cd add/fix CanRunScript 2017-01-21 10:22:00 +00:00
UbitUmarov
0a5d6671ce fix llScriptDanger(); don't call old ScriptDamage on ossl health functions 2017-01-21 06:37:29 +00:00
UbitUmarov
9d61df0887 fix CanObjectEntry and CanTerraformLand group permissions 2017-01-21 05:14:13 +00:00
UbitUmarov
b20bd1a9df change the initialization point of SimwideArea 2017-01-21 03:35:59 +00:00
UbitUmarov
85a31c9e76 initialize SimwideArea 2017-01-21 02:29:08 +00:00
UbitUmarov
d62854cbd3 set a sane default region ObjectCapacity 2017-01-21 00:30:42 +00:00
UbitUmarov
c0231fe169 Oops.. fix the null on the correct place.. jenkis may now fail for another reason 2017-01-21 00:18:25 +00:00
UbitUmarov
48f137599f fix a null ref on jenkins 2017-01-20 23:36:35 +00:00
UbitUmarov
05196ebe27 test jenkins 2017-01-20 22:50:50 +00:00
UbitUmarov
dac32c4e5a change CanObjectEntry() to use a SOG 2017-01-20 14:26:24 +00:00
UbitUmarov
df40cdc83e remove redundant IsGod, rename some GOD as Administrator (both only on permissions module) 2017-01-20 13:45:44 +00:00
UbitUmarov
69bcbd856b change CanDuplicateObject 2017-01-19 19:01:56 +00:00
UbitUmarov
97e6f21c6c actually make use of it as viewers requested 2017-01-19 18:33:00 +00:00
UbitUmarov
6826ca9b57 fix the meaning of objectDuplicate[OnRay]() flags parameter but still not using it 2017-01-19 18:25:25 +00:00
UbitUmarov
d8108ab740 change CanDeedObject. WARNING like on other grids, if you do not set next owner rights on object and ALL ITS CONTENTS, you may loose all rights on it 2017-01-19 17:45:54 +00:00
UbitUmarov
b9651652e1 add a comment about parts permissions aggregation 2017-01-19 13:25:00 +00:00
UbitUmarov
984345a202 add CanEdit check for SOGs, iclients and SPs that need to be in scene and use it 2017-01-19 13:10:04 +00:00
UbitUmarov
7651d60d72 fix a null check 2017-01-19 12:47:14 +00:00
UbitUmarov
673bd37219 object CanMove is for in scene SOGs Icleints and SPs and permitions module is NOT a shared module 2017-01-19 12:35:00 +00:00
UbitUmarov
fe9a785ecc object Take and TakeCopy are for in scene SOPs and SPs and permitions module is NOT a shared module 2017-01-19 11:34:40 +00:00
UbitUmarov
b9ecc962ac a few more aux methods and changes 2017-01-19 10:27:30 +00:00
UbitUmarov
3b96cd8ff2 add a GetItemPermissions() to be used use on object contents checks in Permissions module 2017-01-19 00:51:55 +00:00
UbitUmarov
1ff7e34996 a few more changes on Permissions module 2017-01-18 22:25:49 +00:00
UbitUmarov
b23ce04a6e enforce effective perms hierarchy 2017-01-18 21:17:09 +00:00
UbitUmarov
e2c2d92d5a antecipate baked cache check and Xbakes requests, so they happen before viewer check request (or force it to wait via locking). 2017-01-18 02:29:05 +00:00
UbitUmarov
e963789714 Permissions module: fix in prim inv CanEditNotecard group edit rights check ( in last commit plz read .. by GetObjectPermissions) 2017-01-18 01:16:58 +00:00
UbitUmarov
c14d81f538 Permissions module: replace some GenericObjectPermission by GenericObjectPermission on some checks. Note that in some cases behavour is now diferent. 2017-01-18 00:42:08 +00:00
UbitUmarov
6d784f6306 Permissions module: GenerateClientFlags() no need to keep looking for the same part several times; fix locked mask in GetObjectPermissions() 2017-01-17 23:22:02 +00:00
UbitUmarov
06bca0388f Permissions module: add GetObjectPermissions() that should replace GenericObjectPermission 2017-01-17 14:30:20 +00:00
UbitUmarov
db2fbf6516 add more calls to effective permissions aggregation, some paths may still be missing on objects changes, but remove the aggregation on check paths, so all can be tested. 2017-01-17 13:24:09 +00:00
UbitUmarov
1113407280 add more calls to effective permissions aggregation; do not change groupmask on deed 2017-01-17 01:22:44 +00:00
UbitUmarov
a5c693e302 start adding calls to effective permissions aggregation on changes; rearrange code in DuplicateObject(); 2017-01-17 00:41:30 +00:00
UbitUmarov
2b5ef89272 remove now unused SetRootPartOwner() 2017-01-16 20:37:04 +00:00
UbitUmarov
180add745c replace calls to SetOwnerId and SetRootPartOwner by a single new SetOwner() so owner is not changed twice on rootpart 2017-01-16 20:27:39 +00:00
UbitUmarov
6735d3496c fix EffectiveGroupOrEveryOnePerms C&T == 0 case 2017-01-16 19:49:07 +00:00
UbitUmarov
ffa6c7aae2 avoid lastOwner beeing the group 2017-01-16 19:22:39 +00:00
UbitUmarov
733072b6a3 chance new effective permissions code to ease aggregation on demand( ie on changes). But still doing full aggregation on checks, so still heavy 2017-01-16 19:01:41 +00:00
Melanie Thielker
d78f04b326 Merge branch 'melanie' 2017-01-16 14:55:54 +00:00
Melanie Thielker
568614af2c Remove the last instance of the legacy slam but being set
New objects now get only the real slam bit.
2017-01-16 14:53:42 +00:00
UbitUmarov
b9e2606c2f add code for fixing effective permitions. This is a test, and currently too slow for prodution. just finding our way home 2017-01-15 16:15:40 +00:00
UbitUmarov
e475e65828 use of PermissionMask Bit3 for slam was a recent mistake, so make it only bit4 and move folded export to its more natural place as bit3 2017-01-15 13:43:54 +00:00
UbitUmarov
6eaa8948a6 bad move.. revert 2017-01-14 23:23:56 +00:00
UbitUmarov
24d12dfba4 permissions GenerateClientFlags() also needs group GetEffectivePermissions() for the everyone case. Current naive uncached GetEffectivePermissions() must be improved since its now a lot more used. 2017-01-14 22:19:20 +00:00
UbitUmarov
e28ac282eb oops fix FolderMask acording 2017-01-14 16:49:56 +00:00
UbitUmarov
1ff831c45b make the Slam bit actually be the two previus used ones, to try to minimize compatibilty issues 2017-01-14 16:33:51 +00:00
UbitUmarov
fb86e41561 fix incoerent definition of Slam bit (bits 3 and 4 used in diferent
places.) this may still be wrong on other places; Do not loose folded
permitions,  WARNING MASTER IS NOW UNSTABLE. permissions are still broken"
2017-01-14 14:21:50 +00:00
UbitUmarov
e263730ada fix: send viewers the Everyone permitions of items inside other objects 2017-01-14 11:25:44 +00:00
Melanie Thielker
da51edb5fe Fix the new permissions error introduced with the inventory fix
The fix to allow setting perms in inventory accidentally caused folded
permissions to be used as a mask for the next owner perms. The current
solution isn't optimal but better than anything else we have had.
Legacy objects may experience a net loss of permissions if trying to
set their perms in inventory, this is deemed preferable to the prior
privilege escalation possibility. New items will handle properly.
2017-01-13 23:47:26 +00:00
Melanie Thielker
b9eb3afb62 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-13 17:09:26 +00:00
Melanie Thielker
c74fa02d87 Harmonize case in Permissions enum 2017-01-13 17:09:08 +00:00
UbitUmarov
1984f316fc Add permission CanChangeSelectedState replacing 2 calls to check Move and Modify/edit. As those calls did, this controls changes to objects selected state for edition (simulation hold etc). 2017-01-12 17:15:36 +00:00
UbitUmarov
3e0a61915f GenerateClientFlags: consider locked state, change object group; CanRezObject: remove odd elses and group roles are only for group owned land 2017-01-12 16:58:59 +00:00
Melanie Thielker
dafb362b60 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-11 23:05:39 +00:00
Melanie Thielker
14d6d6f7a5 Also add the ability to quit on SIGTERM for ROBUST 2017-01-11 23:05:06 +00:00
UbitUmarov
0d538cb24c stop using a GetPermissionClass() in GenerateClientFlags since it is not good enough, just process the several cases inline 2017-01-11 22:47:31 +00:00
UbitUmarov
386a8136c9 don't let object lastowner be its group 2017-01-11 18:41:06 +00:00
UbitUmarov
1253f19325 more changes to GenerateClientFlags(), use already cached presence group information, let it be aware of groups roles. (not exactly as the other grid) 2017-01-11 17:10:29 +00:00
UbitUmarov
e0ab0b3b6b change GenerateClientFlags(...) to work with a scenepresence; make use of the new IsGod to check its God rights; remove the non standard estate manager right to move other ppl prims i added on last commits; coment out a test method i added sometime ago 2017-01-11 01:02:57 +00:00
UbitUmarov
e3f7c27c93 remove obsolete PrimFlags.ObjectYouOfficer; rearrange GenerateClientFlags(...) with changes: allow estatemanager to move other ppl objects to help solve placement disputes; exclude attachments on that and from same group members 2017-01-10 23:45:19 +00:00
UbitUmarov
d96bcd8264 add a bit clarification about grid private port protection 2017-01-09 18:22:39 +00:00
UbitUmarov
90dee2fce6 try to improve option automatic_gods processing 2017-01-08 12:30:50 +00:00
UbitUmarov
da69bc5da6 restore argument name material_bits 2017-01-08 11:28:34 +00:00
UbitUmarov
fb42845bee mantis 8117: fix llSetPhysicsMaterial, using proper LSL_float type 2017-01-08 11:15:39 +00:00
UbitUmarov
45695ef2e3 Merge branch 'master' into httptests 2017-01-08 02:00:24 +00:00
UbitUmarov
8662606f7b add the new GOD ossl option to osslEnable.ini 2017-01-07 23:38:55 +00:00
Melanie Thielker
556d95ef05 Revert "Allow OSSL scripts to softfail"
This reverts commit e5244fe708.

Conflicts:
	OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
2017-01-07 23:36:07 +00:00
Melanie Thielker
f457925f80 Fix a compile issue and reintroduce the "GOD" script option 2017-01-07 23:12:51 +00:00
Melanie Thielker
c9736755d8 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-07 22:54:24 +00:00
Melanie Thielker
e5244fe708 Allow OSSL scripts to softfail 2017-01-07 22:53:46 +00:00
UbitUmarov
2d0860ac51 rename OSSL enable option GOD as ACTIVE_GOD so its use is more clear 2017-01-07 22:51:56 +00:00
UbitUmarov
e2167716aa change OSSL enable option GOD to use IsGod, so it means a active god, as my original idea 2017-01-07 21:44:01 +00:00
UbitUmarov
2798adcdcd use new IsGod on CheckAndAdjustLandingPoint_SL so it can be by current viewer god, acording to config 2017-01-07 21:27:57 +00:00
UbitUmarov
694720d7a9 Merge branch 'master' into httptests 2017-01-07 21:05:12 +00:00
Melanie Thielker
e58903be6f Correct casing on isGod and isViewerUIGod 2017-01-07 20:38:30 +00:00
Melanie Thielker
6d44ee9099 Change improperly named isNPC to be IsNPC as a property should be uppercase 2017-01-07 20:30:51 +00:00
UbitUmarov
c41616b771 ignore teleport flag GodLike. Perform checks acording to agent static
local or grid rights
2017-01-07 19:44:37 +00:00
UbitUmarov
1b858ad47b missing changed file 2017-01-07 18:57:12 +00:00
UbitUmarov
eedc37794e rename same more variables to make their meaning more clear 2017-01-07 18:49:15 +00:00
UbitUmarov
effa32cfa4 replace godlevel compares by the new faster bool isViewerUIGod 2017-01-07 18:41:46 +00:00
UbitUmarov
5bcb1c0e72 rename same variables to make their meaning more clear 2017-01-07 18:10:30 +00:00
UbitUmarov
add27a503e Merge branch 'master' into httptests 2017-01-07 16:55:03 +00:00
UbitUmarov
ed526916b7 update permissions module with the new options 2017-01-07 16:27:06 +00:00
UbitUmarov
7f9df24f97 prevent gods kick wars using the new god level variable 2017-01-07 16:13:46 +00:00
UbitUmarov
d761a20cce more changes to god level control. Not that this is work in progress, for now it still works mainly as with option implicit_gods = true. speed up some regions child updates, some cleanup 2017-01-07 16:02:52 +00:00
UbitUmarov
f46d70ada5 try to work around some broken viewers math on handles 2017-01-07 12:18:44 +00:00
UbitUmarov
7d3cd3dd59 coment out a flodding debug message 2017-01-07 09:02:50 +00:00
Kevin Cozens
4a18444e6e Allow avatar to be charged group membership fees when a money module is in use 2017-01-06 21:15:58 -05:00
Kevin Cozens
5bc869391a Only apply group creation fee > 0 and pass group name when applying fee 2017-01-06 21:15:58 -05:00
Melanie Thielker
86d057852d Fix custom dialogs working when bin/ is read-only 2017-01-07 01:16:56 +00:00
Melanie Thielker
8ec258bef4 Fix grid gods 2017-01-07 01:07:56 +00:00
Melanie Thielker
6a066480cc Squelch noisy debug message that happens on every single rez 2017-01-07 00:43:42 +00:00
Melanie Thielker
1e9cbf5c97 During login cancel, don't error out here on a null client. 2017-01-07 00:37:13 +00:00
Melanie Thielker
ff945867a3 Squelch red ink for login cancel by the user during circuit setup 2017-01-07 00:35:09 +00:00
Melanie Thielker
e81b3d8f0c Remove a red ink error on shutdown. Harmless message since shutting down anyway 2017-01-07 00:29:20 +00:00
Melanie Thielker
d9dba51223 Queue all events for a script that is waiting to compile
This fixes CHANGED_OWNER the right way. It also vastly improves link
message handling during object rez, which was iffy before. Now no
messages are lost anymore.
2017-01-07 00:25:59 +00:00
Melanie Thielker
fa5c47b916 Fix a slew of event like CHANGED_OWNER, attach() etc not working.
Optimization can ba taken too far. Compile scripts synchronously for
interactive rezzing because otherwise all events relating to rezzing/
wearing are lost.
2017-01-06 23:35:39 +00:00
Melanie Thielker
3f3aaef66a Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-06 18:14:03 +00:00
Melanie Thielker
f2c50db968 Fix an artefact introduced by git's revert merging logic 2017-01-06 18:13:33 +00:00
UbitUmarov
fba2466c16 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-06 17:33:41 +00:00
UbitUmarov
497c417885 add a missing god_date transmition 2017-01-06 17:33:12 +00:00
Melanie Thielker
8ab7e047bf Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-06 17:07:44 +00:00
Melanie Thielker
e526e8c5e2 Fix the long-standing bug that object permissions set in inventory were lost
NOTE: Items rezzed by users using 0.8 or older will still exhibit broken
behaviour. Until 0.8 becomes end of life, this fix will not produce
dependable results on grids with mixed versions. Grids based on 0.9 will
now work properly.
2017-01-06 17:05:00 +00:00
UbitUmarov
0b912b2acc Remove parcel_owner_is_god option. It is conceptually wrong and with
limited use. Relevant parcel owners can just be made estate managers with better regions management logic
2017-01-06 15:00:55 +00:00
Melanie Thielker
da76224eac Remove more calls to that horrible function 2017-01-06 13:18:22 +00:00
Melanie Thielker
4385d7d693 Fix errors introduced by incomplete understanding of what folded perms are 2017-01-06 13:17:43 +00:00
UbitUmarov
c707955517 restore parcels avatars visibility god level change correct handling; try to reduced the increased change of user error on config options setting 2017-01-06 10:28:10 +00:00
UbitUmarov
e5a3d85bc7 fix/simplify validation of god_data update field 2017-01-06 03:45:47 +00:00
UbitUmarov
7ac74fcf73 fix typo 2017-01-06 03:07:17 +00:00
Melanie Thielker
8eb7c9d0fb Fix the mixed gods issue in all places 2017-01-06 02:14:56 +00:00
Melanie Thielker
244f7e6280 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-06 01:53:50 +00:00
Melanie Thielker
ad531ecb53 Handle the case where grid gods and local gods should coexit
Thou shalt have no other gods beside me, your one and true god.
2017-01-06 01:52:42 +00:00
UbitUmarov
1b64a45f66 take sync viewer out on make root 2017-01-06 01:38:13 +00:00
Melanie Thielker
9b93068054 Sync viewer on make root 2017-01-06 01:27:30 +00:00
Melanie Thielker
a61a41ad92 Send GodLevel to viewers on login 2017-01-06 01:22:36 +00:00
UbitUmarov
6172446e2a Merge branch 'master' into httptests 2017-01-06 01:09:42 +00:00
Melanie Thielker
78ed9c81ff UserLevel must have a trusted source 2017-01-06 01:06:44 +00:00
Melanie Thielker
ad8915f154 Restructure god level and permissions
Create a class GodController which controls all aspects of god level,
viewer modes and user levels at ScenePresence level.
2017-01-06 00:55:14 +00:00
Melanie Thielker
46bffad558 Add GodController class 2017-01-05 23:52:47 +00:00
UbitUmarov
05902d2958 inform viewers of current godlevel; put back a small delay on teleport arrivel to give time to viewers to sync 2017-01-05 22:27:53 +00:00
UbitUmarov
83c9776cbc allow initial automatic level to be changed by request. Since viewers still dont get real level, one will need to ask for god level then disable it to syncronize the viewer with real level. 2017-01-05 21:32:26 +00:00
UbitUmarov
1fb01a0099 add config option automatic_gods. With this option true, users that can be Gods will have that level automaticly without the need request on viewer; Propagate current god level to nearby regions (with local checks) 2017-01-05 21:21:15 +00:00
UbitUmarov
1a35af229c remove code i started but didn't finish 2017-01-05 19:59:48 +00:00
UbitUmarov
254b26a7d5 fix merge 2017-01-05 19:32:57 +00:00
Melanie Thielker
b16abc8166 Massive tab and trailing space cleanup 2017-01-05 19:07:37 +00:00
Melanie Thielker
e88e2945e9 Make it possible to disable the bakes module in the way it is described in config comments 2017-01-05 18:53:02 +00:00
UbitUmarov
a0c9f84994 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-05 18:08:12 +00:00
Melanie Thielker
de16ce35a3 Make the estate communications handler selectable
Still defaults to the core EstateModule if not configured differently
2017-01-05 18:05:06 +00:00
UbitUmarov
cbc3501246 a few changes to Gods ( ie administrators) control 2017-01-05 18:02:59 +00:00
Melanie Thielker
e0a6691932 Rename the files and classes from XEstate to Estate
The names conflict with it's ancestor module and the code is nothing
like the out of core XEstateModule, so it should not be named the same.
2017-01-05 17:59:21 +00:00
UbitUmarov
40e982f6e7 a few changes to estates port handling 2017-01-05 17:11:03 +00:00
UbitUmarov
9d28fd41c6 Merge branch 'master' into httptests 2017-01-05 16:33:01 +00:00
UbitUmarov
d43a3bec19 a few changes to estates and estate teleportHome (used kick) 2017-01-05 16:27:17 +00:00
Melanie Thielker
f4a51116f6 Fix some permissions checks in groups
The code checked the permissions of a person being added to a role
rather than those of the person doing the adding. Also, limited
permission role removal wasn't implemented.
2017-01-05 14:17:00 +00:00
Melanie Thielker
53fe204eed Create all tables ad InnoDB by default
MyISAM isn't properly replicated using row based replication. With the
advances in clustering, these systems are becoming more prevalent and
MyISAM isn't up to the task anymore.
2017-01-05 13:35:13 +00:00
UbitUmarov
5da7752ebc Merge branch 'master' into httptests 2017-01-04 23:16:47 +00:00
Mandarinka Tasty
af1b00db41 The robust command login reset should return config value: MinLoginLevel. Defaultly, it returns 0.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2017-01-04 21:52:49 +00:00
Geir Nøklebye
af93822465 PGSQL fixed a missing cast to uuid in XInventoryData
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2017-01-04 21:18:58 +00:00
Mandarinka Tasty
ed641b22b3 Show details of scene objects with given ownerId.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2017-01-04 19:20:06 +00:00
Melanie Thielker
b0db575220 Set a sensible default for the MaxAgentGroups parameter
MaxAgentGroups is in the [Groups] section, but is read by the login
service. If the login service and the groups service don't share the
same ini file, that will be sent to the viewer as zero and groups will
not work.
2017-01-04 19:13:59 +00:00
Melanie Thielker
995242b351 Suppress misleading message when logging in locally
The gatekeeper and travel info address will not actually be set there,
stop OpenSim from showing a blank address. It's confusing.
2017-01-03 18:31:17 +00:00
Melanie Thielker
504a69906b Suppress error messages in the log if functions are not enabled. Just return failure instead. 2017-01-03 14:05:37 +00:00
UbitUmarov
82a26671b8 Merge branch 'master' into httptests 2017-01-03 11:24:16 +00:00
Melanie Thielker
65dfb62b74 Merge branch 'master' of opensimulator.org:/var/git/opensim 2017-01-02 19:31:23 +00:00
Melanie Thielker
966e50d90c Add the HGRemoteAssetService. Allows to use any asset service with HG 2017-01-02 19:30:40 +00:00
Melanie Thielker
f03a6bbc61 Create a generic way for passing constructor args to plugins
The old syntax didn't allow for any parameters except for services
listed in the ServiceList. Now, services loaded by other services can
also be made to use different ini sections or have additional paramters.
Syntax is: [<ExtraParam>@]...<DllName>[:<ClassName>]
2017-01-02 17:47:20 +00:00
Diva Canto
7abb0477ed Replaced OpenMetaverse libs/xmls with new ones. Also added a file in openmetaverse_data that was added recently to libomv and was missing. 2016-12-31 08:58:06 -08:00
UbitUmarov
da08e2e5f5 mantis 8106: improve avatar walk in mouselook 2016-12-30 19:13:18 +00:00
Melanie Thielker
f510898188 Fake accepting materials (Type == -2) on FSAssets.
Materials are created with an MD5 hash based UUID in order to
stop proliferation of orphaned assets. Therefore a UUID collision
is expected on materials and should not have been treated as an
error.
2016-12-30 14:33:15 +00:00
UbitUmarov
5fc3605955 some cleanup, use more using(), more checks so http request mem stream is closed 2016-12-30 07:15:28 +00:00
UbitUmarov
1507c5230b remove a gc.collect that isn't very usefull (on the right engine this
time)
2016-12-30 05:15:50 +00:00
UbitUmarov
ee485187db remove a gc.collect that isn't very usefull 2016-12-30 04:57:34 +00:00
UbitUmarov
1107d0ccb9 Merge branch 'master' into httptests 2016-12-30 02:20:52 +00:00
UbitUmarov
2836f16ae1 fix typos 2016-12-30 02:14:16 +00:00
UbitUmarov
2a01173715 Merge branch 'master' into httptests 2016-12-30 01:52:02 +00:00
Mandarinka Tasty
aee3f273f0 Serving robots.txt from bin Idea of solution for http://opensimulator.org/mantis/view.php?id=7392
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2016-12-29 22:32:08 +00:00
Melanie Thielker
e0b5135010 Add a MaxRetries option to the inventory connector.
If clustered services are used, another try would go to another server
and may succeed.
2016-12-29 16:29:44 +00:00
Melanie Thielker
07b48fd58c Add negative caching to flotsam cache. Prevents scripts from hammering the asset server 2016-12-29 15:47:46 +00:00
Melanie Thielker
ec4c258794 Actually rename the file, too 2016-12-29 12:36:13 +00:00
Melanie Thielker
f021c64eb0 Refactor: Rename IImprovedAssetCache to IAssetCache as the old IAssetCache is long gone. 2016-12-29 12:34:09 +00:00
Melanie Thielker
feca9fd153 Add an option to update the file access time even when an asset is found in cache.
When the cache is shared between multiple sims, it is often more
efficient to have a single expire job run from cron. Updating
file access times is vital to the functioning of such setups.
2016-12-29 11:53:38 +00:00
UbitUmarov
c78da183b2 expire also from weak references 2016-12-29 03:25:12 +00:00
UbitUmarov
3a310d77c8 forgot one gc.collect wait for finalizers 2016-12-29 03:12:50 +00:00
UbitUmarov
1ffcc59818 gc is also a unwanted cache, so use it. With this, memcache with short expires is no longer needed 2016-12-29 03:10:10 +00:00
UbitUmarov
7cf2e81223 reinforce gc.collect on region load to also do pending finalizers 2016-12-29 00:47:02 +00:00
UbitUmarov
88c96d3973 Merge branch 'master' into httptests 2016-12-28 12:20:02 +00:00
UbitUmarov
73b2c82427 adjust camera collision detection checks for new FS 2016-12-28 12:19:05 +00:00
UbitUmarov
5c79e03f18 some cleanup 2016-12-27 12:26:08 +00:00
UbitUmarov
65b4e17a80 robust textures add missing returns or redir case 2016-12-26 19:38:13 +00:00
UbitUmarov
bf1f4d1384 fix typos (thanks you know who) 2016-12-25 16:51:54 +00:00
UbitUmarov
52e7fc31f7 fix typos (thanks you know who) 2016-12-25 16:48:27 +00:00
UbitUmarov
1b95ada105 Merge branch 'master' into httptests 2016-12-25 05:51:08 +00:00
UbitUmarov
293b65ac82 FloatSamCache: dont use slideexpire on current libovm expirecache. Change example settings to use memory cache with short expire time. ( 20% to 40% mem cache hit rates observed 2016-12-25 05:46:16 +00:00
Melanie Thielker
8d0b592e5d Add en explanation to osslEnable.ini for GRID_GOD 2016-12-23 20:41:10 +00:00
Melanie Thielker
ba1ca67afe Re-add GRID_GOD because in some cases an "employee-only" level is simply needed 2016-12-23 19:48:03 +00:00
UbitUmarov
679d52ced6 add missing file 2016-12-23 19:41:57 +00:00
UbitUmarov
bfb1cb9f33 a few more changes on user profiles 2016-12-23 16:10:07 +00:00
UbitUmarov
70475c676b dont try to use a parcelID as encoded position when it is not 2016-12-23 14:25:22 +00:00
UbitUmarov
b6266c6a1d check if a parcelID is a encoded position data or a true UUID. This may fail, just reducing the odds. 2016-12-23 14:23:07 +00:00
UbitUmarov
0887be3c12 replace the (hidden) GRID_GOD by a more usefull GOD so includes all types. This needs to be changed to current effective godlevel check (sp.GodLevel) when that is fixed. Automatic god powers need be (optionaly) removed 2016-12-23 03:42:50 +00:00
UbitUmarov
86cc02f33e Merge branch 'master' into httptests 2016-12-23 02:53:58 +00:00
UbitUmarov
2e7e4427d0 UserProfileModule threading issues 2016-12-23 02:17:42 +00:00
Melanie Thielker
0ae2b5ac81 Allow the use of modular configs with Robust as we already can with OpenSim 2016-12-22 18:23:04 +00:00
Melanie Thielker
c3e8406f41 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-12-22 15:39:49 +00:00
Melanie Thielker
5b403c448e Update the ini examples to add options missing from one to the other.
Group hypergrid related options within each section to ease
transition from non-HG to HG
2016-12-22 15:37:48 +00:00
UbitUmarov
84c3a96399 UserProfileModule refuse changes to classifieds outside home grid ( viewers may show a delete until profile is open again). Charge money only on classified creation sucess 2016-12-22 07:52:50 +00:00
UbitUmarov
5571c499ba UserProfileModule we can't use parcels globalID because we do not have a global locator. we need to send replies to viewer on pick update and delete 2016-12-22 07:06:40 +00:00
UbitUmarov
330369f904 take UserProfileModule out on onMakeRoot event, add some caching 2016-12-21 22:27:48 +00:00
Melanie Thielker
1602148f5e Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-12-21 20:57:04 +00:00
Melanie Thielker
2bfbd6ef2e Change GRID_GOD script permission to do what it says on the tin.
Suggested by Mandarinka
2016-12-21 20:56:28 +00:00
UbitUmarov
7367f03d6e remove a odd raycastv3 config option 2016-12-21 20:39:38 +00:00
Melanie Thielker
7286b27ff9 Add GRID_GOD to the list of values allowed for enabling OSSL functions 2016-12-21 14:35:34 +00:00
Melanie Thielker
90be8d78c3 Remove obsolete config option "EventQueue". It's been always on for ages! 2016-12-20 17:10:33 +00:00
Melanie Thielker
66c18438f2 remove obsolete config option "storage_prim_inventories" 2016-12-20 17:08:15 +00:00
Melanie Thielker
e40820cab1 Remove obsolete "gridmode" config default in code. 2016-12-20 17:01:48 +00:00
UbitUmarov
4bdf89d59b update httpserver muting some socket errors that are normal 2016-12-19 09:07:17 +00:00
UbitUmarov
bbbbf47507 add a missing file change 2016-12-18 20:09:02 +00:00
UbitUmarov
eabd8cbe48 a few updates to contributors list (sorry the ones still missing) 2016-12-18 07:11:20 +00:00
UbitUmarov
82fc8e1a36 Merge branch 'master' into httptests 2016-12-18 05:03:27 +00:00
UbitUmarov
30cd36ff98 leave stupid broken permissions alone 2016-12-18 03:56:53 +00:00
UbitUmarov
2cf422582a leave stupid broken permissions alone 2016-12-18 03:55:44 +00:00
UbitUmarov
df7435a703 just give up on Export flag, seems just broken no matter water with current FS and singu 1.8.7 2016-12-18 03:20:41 +00:00
UbitUmarov
c93551d8f4 allow a creator that is also onwer to change export flag. Add missing setting to ini files 2016-12-17 22:38:31 +00:00
UbitUmarov
389a1652fb break userprofiles a bit more 2016-12-17 20:11:34 +00:00
UbitUmarov
b4bbf4f95d review llCastRay V3 phantom detection. Make it ignore physics shape type none as physics engines do. 2016-12-16 23:28:14 +00:00
UbitUmarov
aa9a56d4df dont allow regions to be register on map area reserved for HG links 2016-12-16 21:15:21 +00:00
UbitUmarov
9b9f93c4b2 and yes HG uri again 2016-12-16 20:31:07 +00:00
UbitUmarov
be490a8312 remove a nonsense option 2016-12-16 19:11:05 +00:00
UbitUmarov
1ddc90f16e useless change that doesn't fix anything 2016-12-16 18:55:13 +00:00
UbitUmarov
61d2fb6a17 viewers regionhandle are not necessary region identifiers, compensate for that on GetLandData in case one get there 2016-12-16 18:22:07 +00:00
UbitUmarov
e2d46c060c ok.. another try on the HG uri 2016-12-16 03:38:20 +00:00
UbitUmarov
853e98d340 reserve constant OBJECT_ATTACHED_SLOTS_AVAILABLE from mantis 8096. But do not implement it 2016-12-16 01:13:07 +00:00
UbitUmarov
c0a23d36df GetRegionsByName and GetHypergridRegionByName: detect that provided url is for local grid, and make it a local by region name local search 2016-12-15 23:48:25 +00:00
UbitUmarov
48efbeb8d3 set pbs shape acording to mesh number of (material) faces 2016-12-15 15:14:12 +00:00
UbitUmarov
94a36396b1 respective .ini settings 2016-12-15 00:09:21 +00:00
UbitUmarov
1fd0178e8e give regions a option to block profile web urls, so users are not sent to unknown web sites set by other users 2016-12-15 00:08:36 +00:00
UbitUmarov
1d6a7d2225 correct the new npc entries in osslEnable.ini 2016-12-14 22:34:27 +00:00
UbitUmarov
e2062951d7 update osslEnable.ini 2016-12-14 16:33:52 +00:00
UbitUmarov
3056926403 dont self osDie attachments 2016-12-14 16:31:39 +00:00
UbitUmarov
553b326fb2 restrict osDie to objects rezzed by the script object group and a few more changes 2016-12-14 16:08:25 +00:00
Jeff Kelley
95d6396300 Add osDie(key)
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-14 15:14:22 +00:00
UbitUmarov
7a31a85408 show online on profile, if target is in same region.( possible should be done elsewhere) 2016-12-14 14:48:50 +00:00
UbitUmarov
18a292ad02 Merge branch 'master' into httptests 2016-12-14 13:35:53 +00:00
UbitUmarov
50842347ac fix: check for region_handle before region_id, viewers are so funny.. 2016-12-14 04:00:48 +00:00
UbitUmarov
364d58635b avoid a null ref 2016-12-14 03:02:57 +00:00
UbitUmarov
1ffc81c869 also reduce check threat level of osNpcSetProfileAbout to Low; update osslEnable.ini 2016-12-14 01:31:16 +00:00
UbitUmarov
1c08b3d8f9 also fox chekc threat level on osNpcSetProfileAbout 2016-12-14 01:16:21 +00:00
Melanie Thielker
a75c16e1bf Fox threat level line on SetProfileImage. It is ALWAYS the name of the function!
Low is justified because setting an image requires having a NPC in the
first place....
2016-12-14 01:00:48 +00:00
Mandarinka Tasty
ec883d0f15 New OSSL function: osNpcSetProfileImage(LSL_Key npc, string image); This patch gives possibility to set image in created NPC's profile. You can use UUID of the texture or name of texture included in prim's inventory.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-14 00:24:52 +00:00
Melanie Thielker
69776aa70c Remove the AllowAlternatePorts option. It wasn't implemented anyway.
Instead, handle the port being 0 as "any port" and assign a random
port for regions in that case.
2016-12-13 19:47:26 +00:00
Melanie Thielker
ee58beddec Make sure sims on Linux can be restarted without waiting on a 2 mintue socket timeout 2016-12-13 14:43:10 +00:00
UbitUmarov
7d8cb244d1 ubOde other convex type objects other than mesh and sculpt also don't have holes 2016-12-12 19:16:51 +00:00
UbitUmarov
fe3303dc11 ubOde simple spheres and boxes with type convex have no holes on physics(long forgotten fix) 2016-12-12 17:53:40 +00:00
Melanie Thielker
1388ac2ef7 Rename charterMember to membershipType to show what it actually is.
This field started out as a simple flag in the protocol to indicate a
user being a SL charter member. It has since then taken on additional
functionality that means that the name is no longer appropriate.
2016-12-12 11:09:38 +00:00
Melanie Thielker
bebfbd0600 Only ask for the new parameter when starting from scratch.
It is set to false implicitly on existing regions.
2016-12-12 10:14:16 +00:00
Melanie Thielker
9ef9dde0f3 Make resolving the IP on startup optional.
Adds ResolveAddress boolean to regions.ini
2016-12-12 10:08:31 +00:00
Melanie Thielker
cdfdf6322d Applying a modified version of TomTheDragon's patch to prevent the sim
from crashing when signals are unavailable.
2016-12-12 09:26:12 +00:00
UbitUmarov
da2c1e8aad don't do unix signals on windows 2016-12-12 00:54:41 +00:00
Melanie Thielker
4d1536f1ec Allow OpenSim to respond to Unix signals. This may need work to be
properly ignoed on Windows.
Windows devs, please test and check for platform flags if this causes
issues in Windows
2016-12-12 00:07:36 +00:00
Melanie Thielker
ba61b64c42 If a region address is resolveable to a single address, resolve it on
startup and use that address
This change facilitates running opensim within containers and VMs where
the external address isn't that of the VM/container but that of the
host.
2016-12-11 20:51:40 +00:00
Mandarinka Tasty
5b7986e6be Setting precise date of creation in NPC's profile.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-10 22:45:11 +00:00
Melanie Thielker
96bdc5e185 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-12-10 18:37:41 +00:00
Melanie Thielker
5ad8bceb1d Fix OpenSim bombing when a MySQL connection string doesn't contain a password.
Passwordless connection is perfectly legal and makes sense within a
container.
2016-12-10 18:36:10 +00:00
AliciaRaven
d49a5374c3 Make it more unlikely that a script teleport will be caught by default region landing point. 2016-12-10 18:03:05 +00:00
UbitUmarov
f57403909f do not try xbakes on HG 2016-12-10 02:03:00 +00:00
UbitUmarov
a3e2a42f0d HG regions URI need to include also the default ports for compatibility 2016-12-10 01:00:48 +00:00
UbitUmarov
66990394c9 avoid a null ref 2016-12-09 22:56:11 +00:00
Mandarinka Tasty
575825193b The new string-parameter: "region_object_bonus" for llGetEnv(string name);
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-09 20:57:33 +00:00
UbitUmarov
82fb737b8d HG: add missing information on GetRegion 2016-12-09 08:20:35 +00:00
UbitUmarov
8114ff9d06 Merge branch 'master' into httptests 2016-12-09 04:50:07 +00:00
UbitUmarov
30dccd57cd provide remote SSLcommonName to xmlRpcRequest methods, but in a away it can be detected/parsed. This is used by some external modules like DTLNSLMoneyServer. But this module does need to change on this ( and it cannot override default validation rules, it needs to do it on its httplistener with method provided in previus commits 2016-12-09 04:32:59 +00:00
UbitUmarov
6627da693e suport client certificate validation per listenner, with a supplied static callback 2016-12-09 04:07:06 +00:00
UbitUmarov
18ff3eb227 JsonRpc: don't try to connect to a empty uri 2016-12-08 23:56:14 +00:00
UbitUmarov
806e75eefb remove not needed sslport parameter 2016-12-08 23:39:55 +00:00
UbitUmarov
4639409dbe change caps Sethome fail error report 2016-12-07 21:30:36 +00:00
UbitUmarov
55c04a2410 Merge branch 'master' into httptests 2016-12-07 20:34:11 +00:00
UbitUmarov
95ff859484 change a few ssl config comments 2016-12-07 20:33:38 +00:00
UbitUmarov
3a81642d97 add SSL certs validation options for regions to allow simple encriptation without any peer autentification using simple homemade (or even shared) certs. 2016-12-07 13:30:07 +00:00
UbitUmarov
049dd374e9 add SSL certs validation options for robust to allow simple certificates, possible only for encriptation without any peer autentification. disable validation by default for the small grids case 2016-12-07 12:23:40 +00:00
UbitUmarov
9042aa8968 add missing sp Intransit control 2016-12-07 04:56:35 +00:00
UbitUmarov
f1c6769ca5 set HasGridUserTried on usercache of NPCs 2016-12-07 02:14:26 +00:00
UbitUmarov
de36092d23 if we have profile then npc is online 2016-12-06 17:16:47 +00:00
UbitUmarov
d4e285b1a1 add osNpcSetProfileAbout(LSL_Key npc, string about) to set NPCs profile About text. requires OsNpcCreate rights 2016-12-06 17:05:02 +00:00
UbitUmarov
240ab951b5 let NPCs have profile 2016-12-06 16:15:57 +00:00
UbitUmarov
4993a08d25 Merge branch 'master' into httptests 2016-12-06 10:26:57 +00:00
UbitUmarov
ccaa7a4a8a save a few lists scaning 2016-12-06 10:26:36 +00:00
UbitUmarov
44588ce45e jenkins likes null httplisteners 2016-12-06 07:40:45 +00:00
UbitUmarov
8db69d2e02 remove redundante check for ssl listener 2016-12-06 07:26:26 +00:00
UbitUmarov
1680425f4d Merge branch 'master' into httptests 2016-12-04 23:39:15 +00:00
UbitUmarov
181b1ad82b HG: fix the never ending avatar confirmation when 2 users from same grid made friendship on another grid 2016-12-04 23:02:40 +00:00
UbitUmarov
51104be6d4 remove SOG.FromPartID from main code and flag it obsolete 2016-12-04 17:56:47 +00:00
Mandarinka Tasty
7c566dca5a The new Constant: integer OBJECT_REZZER_KEY = 32;
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-04 17:18:56 +00:00
UbitUmarov
fcd1e36ed6 a few changes to new GetDisplaynames and friends 2016-12-04 17:01:49 +00:00
UbitUmarov
e1cf34d6fb replace GetDisplaynames by a handler really usable as a client cap. Most capabilities.handlers are so it all things not propor PER CLIENT CAP handlers 2016-12-04 15:50:48 +00:00
Mandarinka Tasty
2a29a270da Adding new string-parameter: "region_max_prims" for llGetEnv(string name);
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-12-04 10:32:06 +00:00
UbitUmarov
2ff75e7692 ubMeshmerizer, fix the orientation of last triangle on top/bottom faces in case on circle hollow shape 2016-12-03 18:35:31 +00:00
UbitUmarov
6a8b8f3168 change a wrong error message and avoid a null ref (that may happen due to needed time delays) 2016-12-02 22:56:14 +00:00
UbitUmarov
9df95afd86 update httpserver 2016-12-02 13:54:11 +00:00
UbitUmarov
b981ac42bc Merge branch 'master' into httptests 2016-12-02 13:51:30 +00:00
UbitUmarov
1fdd71f856 do a GC collect on last client exit 2016-12-01 07:49:17 +00:00
UbitUmarov
29f6e3fc7b fix a typo in dbs region range 2016-12-01 04:08:42 +00:00
UbitUmarov
874d663161 fix region area range 2016-12-01 04:02:29 +00:00
UbitUmarov
8299941517 fix region overlaps on registration 2016-12-01 03:45:43 +00:00
UbitUmarov
cfb98050f7 a few changes to cache.cs ( currently not much used ) 2016-12-01 03:43:49 +00:00
AliciaRaven
813ee4e188 Remove unused integer vars from LLClientView 2016-12-01 03:11:34 +00:00
UbitUmarov
adee1c1bb0 fix a null ref 2016-11-30 10:08:49 +00:00
UbitUmarov
2020cafc30 fix null ref on m_CacheCleanTimer control, add a gc.collect on manual floatsam fcache assets comand 2016-11-30 09:22:47 +00:00
UbitUmarov
f2cad38b3d fix the FileCleanupTimer coment 2016-11-30 07:59:01 +00:00
UbitUmarov
e19eb65c18 disable floatSam FileCleanupTimer option on ini.example since it is currently a broken resources expensive option. Users should do it by hand when its impact on region is acceptable 2016-11-30 07:52:50 +00:00
UbitUmarov
1863bb29df slow down automatic floatsamAssetCache CleanupExpiredFiles LOT to reduce impact on simulation and to give GC more changes of preventing it from eating up all avaialble physcical memory on loaded machines. 2016-11-30 07:43:17 +00:00
Mandarinka Tasty
7de2c8ae70 The new Constant: integer OBJECT_TEMP_ATTACHED = 34;
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-30 00:06:25 +00:00
UbitUmarov
ebbb918404 Merge branch 'master' into httptests 2016-11-28 06:02:47 +00:00
UbitUmarov
9dd820765e change last patch a bit 2016-11-28 05:58:05 +00:00
Mandarinka Tasty
0bb959d8fd The implementation of new flags = parameters for llGetObjectDetails - Part II Constant: integer OBJECT_TOTAL_INVENTORY_COUNT = 31 Constant: integer OBJECT_GROUP_TAG = 33
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-28 05:35:13 +00:00
Mandarinka Tasty
af3f2717fd The implementation of new flags = paramters for llGetObjectDetails - Part I Constant: integer OBJECT_CLICK_ACTION = 28; Constant: integer OBJECT_OMEGA = 29; Constant: integer OBJECT_PRIM_COUNT = 30;
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-28 05:20:32 +00:00
UbitUmarov
1aa4dbdb3f increase HG mapsearch spargetti; add more flexibility on input uri formats. To find regions in memory for a grid the http format needs to be used, because aditional compares made by viewers 2016-11-28 04:29:57 +00:00
UbitUmarov
6b017f94ea update httpserver dll fixing a memory leak 2016-11-27 15:23:08 +00:00
UbitUmarov
877d3092b4 Merge branch 'master' into httptests 2016-11-27 15:14:34 +00:00
UbitUmarov
d3cd323f0c HG on links request build the URI in http format with a / at end, this should not be needed but is coerent with current serverURI 2016-11-27 15:07:14 +00:00
UbitUmarov
155f8dac1d BUG fix encoding or region size on HG LinkRegionRequest response 2016-11-27 02:12:12 +00:00
UbitUmarov
5cc0d6620d remove 2 more null refs i added to release memory 2016-11-26 05:08:46 +00:00
UbitUmarov
b781de73e3 mantis 7656, partialy apply patch, changing the start scripts for now 2016-11-26 04:49:35 +00:00
Mandarinka Tasty
d2bbd7ef2b Fix in cmdparams.Length for: SavePrimsXml2 and SaveXml
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-26 04:14:32 +00:00
Mandarinka Tasty
1e90417ac2 Fix in descriptions of: load xml, load xml2, save xml, save xml2
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-26 04:11:31 +00:00
UbitUmarov
019910afbd don't go seach for info we already have at hand.. and there is no region height on osGetRegionSize 2016-11-26 03:57:33 +00:00
UbitUmarov
e60366ce92 avoid doing unnecessary heavy things on change physics rep 2016-11-26 03:29:22 +00:00
AliciaRaven
017069636a Increase float precision for windlight needed by scripts. mySQL Migration on regionwindlight table.
mySQL was setup to store smaller values because the viewers editor capped input, scripts can set higher precision so settings could change on region restart. This change brings mySQL more inline with PGSQL which uses doubles for all windlight floats.
2016-11-26 01:15:10 +00:00
UbitUmarov
6f1080368d reduce the resolution of llGetTime and llGetAndResetTime, to 1ms 2016-11-25 21:37:33 +00:00
UbitUmarov
935510d879 add llGetMaxScaleFactor and llGetMinScaleFactor 2016-11-25 18:35:23 +00:00
UbitUmarov
b82a41d260 change llScaleByFactor (sorry Mandarinka). 2016-11-25 17:34:19 +00:00
Mandarinka Tasty
e45245d267 Implementation of LSL_Integer llScaleByFactor(double scaling_factor)
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-25 16:22:10 +00:00
UbitUmarov
f9b62b5680 work around viewers not suporting large regions on landmark creation. They still may display wrong offset; don't let inventory description be limited by asset description side on a ossl method 2016-11-24 20:53:04 +00:00
UbitUmarov
5202ae7bb4 revert changes to asset desc size, my bad.. this field will possible go away in future 2016-11-24 14:39:08 +00:00
UbitUmarov
94ec5884b7 fix llRez(AtRoot/Object) error messages on shared code path 2016-11-23 22:15:59 +00:00
UbitUmarov
75ad210b6b it is nice to save a file to atually change it... 2016-11-23 20:44:55 +00:00
UbitUmarov
d9789596d4 take parcel_owner_is_god option from ini.example since it is not a recomended option for general use 2016-11-23 20:41:10 +00:00
UbitUmarov
72e20028d1 safeguard against unknown material replacemet 2016-11-23 20:26:14 +00:00
UbitUmarov
b3eda582ec add to SynchronousRestFormsRequester a keepalive disable option, and make use of it on some friends conns 2016-11-23 19:30:55 +00:00
UbitUmarov
82ed6bde6e fix maturity on parcelInfo 2016-11-23 10:00:56 +00:00
UbitUmarov
59f6353ac1 close a resource on jobengine.close() 2016-11-22 22:29:13 +00:00
UbitUmarov
f4745e5a35 full change ServiceThrottleModule. Let it still service RegionHandleRequest and UUIDNameRequest but this wrong since they are diferent services. Keeping gambling about not having 2 much overlaps of the 2 kind of requests. Remove double thottling of RegionHandleRequest 2016-11-22 22:24:54 +00:00
AliciaRaven
1a6cddf807 Minor fix to region default landing point sanity check 2016-11-22 21:23:01 +00:00
AliciaRaven
34d9596f9b Fix typo in a comment 2016-11-22 15:33:34 +00:00
AliciaRaven
94e48838d5 Include new Region.ini option for DefaultLandingPoint for teleports with no coords specified.
This is useful when using a Telehub would be to restrictive as it would block landmarks and map teleports. This location is only ever used when no coordinates are provided. If config value not set, the previous default of 128,128 is used.
2016-11-22 15:31:45 +00:00
Melanie Thielker
b43717a397 Coding standards: A local variable may not use the prefix m_ 2016-11-22 11:47:50 +00:00
UbitUmarov
385a265971 supress some warnings by explict(confirm) the hide of parent fields 2016-11-22 09:35:37 +00:00
UbitUmarov
4e64445c39 replace datetime.now on just timming by faster utcnow 2016-11-22 05:18:06 +00:00
UbitUmarov
7524c7729f change asset description max size 2016-11-22 01:34:07 +00:00
UbitUmarov
8c19ea910a remove a wrong virtual dec ( no overides, and cant really have if used on a constructor like in assetlandmark) 2016-11-21 23:34:33 +00:00
UbitUmarov
81ef04c9fd fix type bug on hyperlinks 2016-11-21 16:55:51 +00:00
UbitUmarov
bced98d6e9 work around some more warnings 2016-11-21 01:47:09 +00:00
UbitUmarov
f794ab1a67 remove something VS decided to add 2016-11-21 01:22:01 +00:00
UbitUmarov
b2c553b459 work around some warnings 2016-11-21 01:16:35 +00:00
UbitUmarov
b70e48c8a5 handle HG lm tp to large regions in another way 2016-11-20 22:09:33 +00:00
UbitUmarov
0ce034d5d6 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-11-20 14:42:30 +00:00
AliciaRaven
05f7002445 Include config option to disable stats thread showing read/write stats in console.
Keeping default as true to retain current behaviour.
Also checked to prevent counters being added to so there wont be any integer overflows over time
2016-11-20 14:20:54 +00:00
AliciaRaven
1d998a770b Change some minor log messages to debug level in Rest client code. 2016-11-20 13:52:06 +00:00
UbitUmarov
f1958e9f71 revert more object references removal on clients close because 2 many code paths don't have proper abort 2016-11-20 13:36:34 +00:00
UbitUmarov
902e8019de HG add a small delay before start sending region data 2016-11-20 05:06:50 +00:00
UbitUmarov
4c2ece3bcb HG LinkRegion receive region size also. Useless since olde r gatekeepers dont send it 2016-11-20 04:22:00 +00:00
UbitUmarov
e2b580e569 HG LinkRegion sends region size also 2016-11-20 03:51:38 +00:00
UbitUmarov
93d502e0cf HG UserAgent, return serverURI 2016-11-20 03:19:19 +00:00
UbitUmarov
200183caf7 HG protocol is still broken for large regions. work around it on teleport via lm 2016-11-20 02:49:40 +00:00
UbitUmarov
586c81eecd give up on OutPacket drop condition on closing 2016-11-20 01:49:53 +00:00
UbitUmarov
b887b7625e change OutPacket drop condition 2016-11-19 21:53:09 +00:00
UbitUmarov
8010413e64 remove some potencial null refs i did add in last days :( 2016-11-19 21:06:42 +00:00
UbitUmarov
08dee3fa34 fix pool parameters for httptests 2016-11-19 15:46:47 +00:00
UbitUmarov
7cb3d583a9 merge conflits 2016-11-19 15:45:41 +00:00
Melanie Thielker
28f7d429fc REST console v2. This is an incompatible protocol change. It degrades gracefully. 2016-11-19 02:28:31 +00:00
Melanie Thielker
6749c61d4f Fix the previous commit 2016-11-19 02:28:31 +00:00
UbitUmarov
1396c466f6 search accout by id not volatil user name (HG) 2016-11-18 17:30:15 +00:00
UbitUmarov
b43f36abf1 add expire time for aliens 2016-11-18 15:16:11 +00:00
UbitUmarov
70eb37433d avoid a null ref. (needs better way) 2016-11-18 03:40:34 +00:00
UbitUmarov
e281876ecd restore higher resolution clock on udpserver and lower uaeraccouts caching time 2016-11-18 03:25:29 +00:00
UbitUmarov
d8812ba2d1 revert to lower resolution clock on udpserver for testing 2016-11-18 03:00:59 +00:00
UbitUmarov
0a8cf2ff08 put back skip of first drip call 2016-11-18 02:13:01 +00:00
UbitUmarov
ba7904a3a8 a few more changes on potencial mem issues 2016-11-18 00:12:09 +00:00
UbitUmarov
e21ac8b3c4 counting issus safeguard 2016-11-17 20:59:13 +00:00
UbitUmarov
35b37510fc explicitly remove some references, and other useless changes 2016-11-17 19:15:28 +00:00
UbitUmarov
8599a9a1ca add a missing dispose 2016-11-17 17:37:22 +00:00
UbitUmarov
2db22bf064 minor changes to ubMeshmerizer memory use 2016-11-17 13:57:45 +00:00
UbitUmarov
3d78388e55 restore large useracconts expire time for testing 2016-11-17 01:44:47 +00:00
UbitUmarov
5645abf69c fix a debug message 2016-11-17 00:13:21 +00:00
UbitUmarov
e77f913116 minor: dont let rcvd agentupdates time jump back 2016-11-16 22:34:56 +00:00
UbitUmarov
ec8393571f Merge branch 'master' into httptests 2016-11-16 13:07:23 +00:00
UbitUmarov
05ba77fd3b fix parsing of a vector4 and storing on a lsl quaternion needed for lightShare scripts 2016-11-16 03:47:48 +00:00
UbitUmarov
8dd9601fdc minor change to getdisplaynames cap url 2016-11-16 00:42:08 +00:00
UbitUmarov
8196f21af9 change camera collision check rules 2016-11-14 22:13:02 +00:00
UbitUmarov
a858804b42 fix a vector range parsing 2016-11-14 22:08:39 +00:00
UbitUmarov
e304acb06f fix unack bytes stats report 2016-11-14 05:15:41 +00:00
UbitUmarov
ae17b5d203 reduce calls to physics world cast rays for camera collision check 2016-11-14 03:21:07 +00:00
UbitUmarov
3cb2b3b2d1 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-11-13 19:25:51 +00:00
UbitUmarov
4ebb4e371f prevent self call to llSetScriptState(ownname,FALSE) from blocking entire engine 2016-11-13 19:25:32 +00:00
Robert Adams
e13ff5a392 BulletSim: update avatar velocity setting to the new TargetVelocity pattern.
Now PhysicsActor.Velocity.set and PhysicsActor.SetMomentum do the same thing
   of setting the instantanious avatar velocity. PhysicsActor.TargetVelocity
   sets a velocity target and the movement motor is used to accelerate the'
   avatar to that velocity.
2016-11-13 11:19:54 -08:00
UbitUmarov
b6329fb784 mantis 8055: fix default value of npc options 2016-11-12 14:07:40 +00:00
UbitUmarov
4a7b8c1b41 ubOde fix a multhreading timming issue 2016-11-12 03:31:34 +00:00
AliciaRaven
077cfdf698 Update gitignore to include VS user config folder and remove old FxCop file which is not used 2016-11-11 22:05:48 +00:00
UbitUmarov
c5d85b5465 reduce diferencs btw OpenSimDefaults.ini and OpenSim.ini.example 2016-11-11 16:04:20 +00:00
UbitUmarov
326821f66e reduce useraccouts cache time 2016-11-11 12:59:43 +00:00
UbitUmarov
56a79a252c GetUserAccounts cannot cache null accounts 2016-11-10 23:14:08 +00:00
UbitUmarov
58b7be48a9 ubOde: add a needed lock 2016-11-10 23:07:57 +00:00
UbitUmarov
743a9d617e also cache not found useraccounts when search by ID. Change the expire time to 5minutes in this case 2016-11-10 19:21:07 +00:00
UbitUmarov
bddaef5122 on Select use again the priority queues to send ObjectProperties, including physics via caps. This is need to reduce useless redudance 2016-11-10 17:56:51 +00:00
UbitUmarov
d1baa3e0c3 fix some invalid string.format arguments 2016-11-09 22:39:52 +00:00
UbitUmarov
53003db4cf stop warning about integer division cast to float 2016-11-09 22:12:27 +00:00
UbitUmarov
1e1d0d8204 move UserAccountCache access locking to its methods and not callers. 2016-11-09 20:09:49 +00:00
UbitUmarov
924c5fb55e minor cleanup 2016-11-09 19:41:07 +00:00
UbitUmarov
c349a1a5e7 also log estimated average Util.GetTimeStampMS() resolution 2016-11-09 11:21:46 +00:00
UbitUmarov
94d2422230 change the clock source on udp outgoing, remove some dead code 2016-11-09 10:21:02 +00:00
UbitUmarov
92984556e1 change the clock source on tokenBucket 2016-11-08 23:09:53 +00:00
UbitUmarov
6c44dceced change display and log of normal script errors 2016-11-08 13:39:49 +00:00
UbitUmarov
6218913345 add some configuration options missing in OpenSimDeafults.ini but present in OpenSim.ini.example 2016-11-08 11:22:08 +00:00
UbitUmarov
7ebc08ad65 partially revert commit f29d5ad662: if mesh asset does not contain data for PRIM type warn and use convex, do avoid physical peims going underground etc 2016-11-07 18:34:45 +00:00
UbitUmarov
07893ec3e7 a few more changes on the avatars Velocity/TargetVelocity/SetMomentum. Need talk with Robert before last changes bc of bullet 2016-11-07 16:03:23 +00:00
UbitUmarov
d0ae8bb86a start removing old hack of using SetMomentum to just set instant velocity, now that TargetVelocity is avaiable 2016-11-07 12:45:20 +00:00
UbitUmarov
93ea7bd7f4 Merge branch 'master' into httptests 2016-11-07 11:36:43 +00:00
UbitUmarov
d5a428c669 add a few more lsl constants for attachments 2016-11-07 11:35:32 +00:00
UbitUmarov
6956ada5e8 oops bug fix 2016-11-06 04:29:01 +00:00
UbitUmarov
014cd1ab42 restrict ubOde castray with terrain range only on horizontal plane, let it find physical avatars. 2016-11-06 03:53:12 +00:00
UbitUmarov
d07f48605f change llGetTime() source clock 2016-11-06 02:43:33 +00:00
UbitUmarov
6bc76860d1 avoid a null ref, few changes to udp updates send 2016-11-05 23:56:55 +00:00
UbitUmarov
8cc8d15f95 some types may already be native in MOD_Api ConvertFromLSL 2016-11-05 20:14:11 +00:00
UbitUmarov
22d20dbf17 disable bad/broken throttle options 2016-11-05 19:17:25 +00:00
UbitUmarov
4b0457b2d3 Regression, really ??? 2016-11-05 18:44:45 +00:00
UbitUmarov
1c7b688db4 add suport for PRIM_SIT_TARGET on Set(link)PrimitveParameters. This may not be SL compatible. hack: to let active work with zero offset and rotation add a little Z value to offset 2016-11-05 18:28:30 +00:00
UbitUmarov
060350832a add suport for PRIM_SIT_TARGET on get(link)PrimitveParameters and fix typos 2016-11-05 16:50:41 +00:00
UbitUmarov
be0a957363 add a few lsl constants and move some around 2016-11-05 15:42:37 +00:00
Mandarinka Tasty
72db2d064a It looks, that attachments show console command incorrectly returns Item ID. In fact, FromItem ID is returned. So I have added proper Item ID to be returned. There are cases, that FromItem ID is also useful, so I keep it for compatibility.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-05 13:47:29 +00:00
UbitUmarov
bb32b3b4a1 Merge branch 'master' into httptests 2016-11-04 18:31:25 +00:00
UbitUmarov
9b78eb20c0 by design HUD objects are private 2016-11-04 11:58:52 +00:00
Mandarinka Tasty
b0f87fba1c Implementation of new LSL function: list llGetAttachedList(key avatar); It also returns HUDs' keys.
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-11-04 10:55:11 +00:00
UbitUmarov
0c39a3e348 Merge branch 'master' into httptests 2016-11-03 17:19:02 +00:00
UbitUmarov
d2e380e81e on get asset with callback, do the callback even if asset not found. This is needed on same cases 2016-11-03 16:56:09 +00:00
UbitUmarov
01a4a883e0 Merge branch 'master' into httptests 2016-11-03 14:01:35 +00:00
UbitUmarov
4b326f8691 fix some coments, thanks Austin Tate 2016-11-03 14:00:45 +00:00
UbitUmarov
73b20c2ca2 XEngine: make calls to gc.collect on region startup scripts loading a configurable option, since it is very slow operation 2016-11-03 12:58:43 +00:00
UbitUmarov
f29d5ad662 ubOde: if a mesh does not contain data for shape type PRIM, dont collide as convex as before but just don't collide matching the type NONE viewers display in this case 2016-11-02 22:33:32 +00:00
UbitUmarov
9480da06b9 only add a prim to physics in PhysicsShapeType if changing from type none. when viewers change ExtraPhysics parameters, send back the new values. 2016-11-02 21:42:32 +00:00
UbitUmarov
7c4f2b048f ignore prims with shape type none on max size check for physics
also on llStatus()
2016-10-25 20:44:41 +01:00
UbitUmarov
db0c268140 mantis 8041: check target user password on save/load IAR 2016-10-25 20:16:23 +01:00
UbitUmarov
8c7fe3c0db Merge branch 'master' into httptests 2016-10-25 09:18:13 +01:00
Diva Canto
4c76a061c7 Flip master to 0.9.1 2016-10-24 09:21:44 -07:00
UbitUmarov
d550b485f1 viewer crash bug fix: fis the udp packets split of SendEstateList() large lists; Enforce size limits on the estate lists since currently required for viewers compatibily; improve handling of changes with large selected items. This is still bad, users may need to close and reopen the region/estate information to get correct Allowed and Banned lists after a change. This happens because of viewer resent/outOfOrder packets that completly break this lists updates protocol 2016-10-24 10:23:31 +01:00
UbitUmarov
2ce0673af2 Merge branch 'master' into httptests 2016-10-21 17:58:17 +01:00
UbitUmarov
586e4cf163 ignore prims with shape type none on max size check for physics 2016-10-17 19:16:07 +01:00
UbitUmarov
eaac332d00 fix a coment on OpenSim.ini.example ( mantis 8037) 2016-10-16 17:33:39 +01:00
UbitUmarov
90be326457 Xengine option AppDomainLoading default option true is causing problems with several mono versions. Until a fix is found change the default to false, so this is not a major problem for the less technical skilled users. 2016-10-15 21:06:17 +01:00
UbitUmarov
954bcbc5ef bug fix: let ALL avatar controls have a repeat rate controled by viewer (so as before commit 8a3958ad04 on this) 2016-10-15 20:44:18 +01:00
UbitUmarov
7cd4fa8cf5 bug fix: We can't filter out any of the avatar controls relative to movement, even if not flying (a condition i incorrectly added recently) in fact the entire AgentUpdates throotling is questionable, since its viewer Job. But keeping it... 2016-10-15 20:26:23 +01:00
UbitUmarov
085965b86c Merge branch 'master' into httptests 2016-10-11 02:16:16 +01:00
UbitUmarov
7494d7726a change math on GetParcelMaxPrimCount and GetSimulatorMaxPrimCount to reduce round errors, limit both to region max prims. consider ObjectBonus on last one also. Change a variable name in PrimLimitsModule to make it more clear 2016-10-11 01:14:53 +01:00
UbitUmarov
6b0094645c change some coments relative to ssl in config files 2016-10-10 20:14:02 +01:00
UbitUmarov
80d4f76d18 keep a unsecure http port up for external services (datasnapshot search). Only fire poolservices on main http listener 2016-10-09 20:18:20 +01:00
UbitUmarov
7aa4bd7006 add a comment about selfsigned certs 2016-10-09 01:15:53 +01:00
UbitUmarov
5b946405a0 changes to regions ssl suport: verify if hostnames are validate by the selected cert, make clear that for now all regions need to have the same ExternalHostName if using sll (due to other code that needs to be changed later) 2016-10-09 01:01:52 +01:00
UbitUmarov
9843e3776e Merge branch 'master' into httptests 2016-10-08 01:27:02 +01:00
UbitUmarov
b51739e23e recover regions main http server ssl suport. Using a PKCS12 cert file, and not certs store for now. Option http_listener_cn, cert CN need to the same as external IP. Self sign certs do seem to work, but the viewers option NoVerifySLLCert needs to be set true. CA check is not done but they do check the IP 2016-10-06 21:35:11 +01:00
UbitUmarov
76a2d90dad remove attachment to event OnPreAgentUpdate that is doing nothing 2016-10-05 13:38:12 +01:00
UbitUmarov
2e863edfe9 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-10-05 13:18:14 +01:00
UbitUmarov
8a3958ad04 dont let ignored AgentUpdates change their throttles. Apply respective movement to physics on the handling thread, not heartbeat, avoiding missing transitions that should get into physics. Make some usefull sp state flags visible everywhere 2016-10-05 13:17:23 +01:00
Robert Adams
e13fecfd3d BulletSim: zero velocity target when setting velocity through the
SetMomentum method.
2016-10-03 20:47:30 -07:00
UbitUmarov
f3e7603c37 minor cleanup 2016-10-02 11:54:07 +01:00
UbitUmarov
cd9d176c3c change avatar and attachments priority (downgraded) in priritizer option SimpleAngularDistance 2016-10-02 11:12:03 +01:00
UbitUmarov
878fac3fe3 fix comment telling the correct default physics engine 2016-10-01 20:26:37 +01:00
Robert Adams
c7e4b14a26 BulletSim: fix problem with avatar velocity going to zero when flying across
region boundries.
Move code for Velocity, ForceVelocity and SetMomentum to BSPhysObject and
   have both BSPrim and BSCharacter share the code.
2016-09-30 19:35:44 -07:00
UbitUmarov
46dd899d9e MySQLFSAssetData asset type is a int not a varchar 2016-09-27 21:29:09 +01:00
UbitUmarov
9b2f186a8c MySQLFSAssetData on store, if a asset already exists, assume its a valid store or regions will keep retry. The other DBs do replace the item, why doesn't FS do the same? 2016-09-27 21:10:01 +01:00
UbitUmarov
58513fab8f save oar: simplify confusing successefull assets saving message 2016-09-27 16:49:55 +01:00
UbitUmarov
3e47df735b exclude invalid collision sound (used as collision type flag) from assets UUIDGather 2016-09-27 16:41:13 +01:00
UbitUmarov
f6e77e3935 load oar; activate area cliping if bounding-origin option is given. as help says 2016-09-27 15:24:05 +01:00
UbitUmarov
6779f41e21 fix linknumbers when unlink the root prim 2016-09-24 22:21:51 +01:00
UbitUmarov
9e074988f0 remove a redundant and potencially dangerous child.AbsolutePosition = child.AbsolutePosition 2016-09-24 18:16:30 +01:00
UbitUmarov
42989176ec mute a debug message to mute jak daniels 2016-09-23 19:27:25 +01:00
UbitUmarov
d196958cc4 make sendRegionInfoPacketToAll really send to all ( inc child agents) thx Jak Daniels 2016-09-23 18:56:47 +01:00
UbitUmarov
f613b5f517 fix caching of wind and cloud packets in the case of several regions on a instance, that got broken with the necessary send to child agents. 2016-09-23 18:28:46 +01:00
UbitUmarov
22b531f2e4 make clouds a bit diferent on regions running on same instance.. well should be diferent .. :) 2016-09-23 17:13:59 +01:00
UbitUmarov
f5189b2cdd do the same for legacy clouds (still visible on older viewer ie singu 1.8.7). Fix clouds update. Send clouds and wind also to child agents. 2016-09-23 16:04:43 +01:00
UbitUmarov
8d7f10e36b cache wind compressed data so cpu burning compression is only done after a change. Not happy with version scheme for several regions on same instance, but should be ok for now 2016-09-23 13:55:23 +01:00
UbitUmarov
a6df626868 add a version tag to wind and cloud data updates to iclient 2016-09-23 13:03:16 +01:00
UbitUmarov
984cb38583 move wind generation out of heartbeat to a pool job. Use that to send to all clients and not one per client 2016-09-23 12:32:40 +01:00
UbitUmarov
7201352074 bug fix: add a missing return; add some error messages 2016-09-22 22:08:21 +01:00
UbitUmarov
d3627c4f33 no need to send wind on avatar arrival when it is sent periodicly 2016-09-22 19:25:04 +01:00
UbitUmarov
94e983c95f mantis 8027: let osMessageAttachments also send to attachments child prims.. also changed its code structure and could not test 2016-09-22 17:05:05 +01:00
UbitUmarov
bbe8ef0528 mantis 8027: allow messages to be sent to attachments child prims in llRegionSayTo 2016-09-22 02:05:25 +01:00
UbitUmarov
bf17da3d61 check for null target, minor cleanup 2016-09-21 22:51:25 +01:00
UbitUmarov
db1e75b0ac Merge branch 'master' into httptests 2016-09-21 15:26:30 +01:00
UbitUmarov
874ba6b363 avoid a null ref 2016-09-19 19:40:13 +01:00
UbitUmarov
cca01f5cda change CreatorIdentification set code 2016-09-19 16:03:33 +01:00
UbitUmarov
1b7327800a fix GetUserUUI 2016-09-19 15:41:14 +01:00
UbitUmarov
7e751d5010 replace no thread safe code 2016-09-19 12:39:22 +01:00
UbitUmarov
82997c5907 Merge branch 'master' into httptests 2016-09-18 20:02:59 +01:00
UbitUmarov
092d4fb9ff fix typo in table name, thx tglion 2016-09-18 20:00:47 +01:00
UbitUmarov
188b5030f7 restore sqlite fixes from commit 0e6874..that got lost 2016-09-17 19:46:40 +01:00
UbitUmarov
4dc787eb32 store all terrain in Variable2DGzip format 2016-09-17 19:13:46 +01:00
UbitUmarov
592a915d8d add rest of wiring for terrain bake persistent store (mantis 8024 but not
using its code). Only did minor testing in MySQL
2016-09-17 17:56:56 +01:00
UbitUmarov
47ce0f8641 add load baked terrain methods. missing file 2016-09-17 16:47:12 +01:00
UbitUmarov
71bd3ce49f add load baked terrain methods 2016-09-17 16:42:40 +01:00
UbitUmarov
3f9f105295 add to databases a table to store baked terrain. 2016-09-17 15:45:11 +01:00
UbitUmarov
0cdad0faf4 stop using legacy storeterrain in scene.cs 2016-09-17 14:54:41 +01:00
UbitUmarov
e5383604cb Merge branch 'master' into httptests 2016-09-17 12:44:52 +01:00
UbitUmarov
2338d3d2e5 change spinobject math, and a few minor things 2016-09-16 22:10:36 +01:00
UbitUmarov
1b18711205 move SpinObject funtions from Scenegraph to PacketHandlers, close to grab handles, since they are related operations (possible should be moving to graph, not clear this files roles) 2016-09-16 19:33:49 +01:00
UbitUmarov
fb46eb3344 pass touch_end as other touchs, make blockgrab work on nonphysical also 2016-09-16 19:23:56 +01:00
AliciaRaven
7c4c3f0d10 Minor. Remove unused integer arrays from TerrainModule 2016-09-15 22:46:59 +01:00
AliciaRaven
733782f214 Minor. Make email module log message format consistent with other modules 2016-09-15 18:45:42 +01:00
AliciaRaven
f8ac3d9464 Minor, remove unused OSDMap declaration in MySQL profiles 2016-09-15 18:42:28 +01:00
UbitUmarov
f2dfd0a01a make login to default regions be flaged also as login via RegionID, so landpoints can work on those default regions 2016-09-15 01:56:38 +01:00
UbitUmarov
c4f30a3c31 add skeleton on handle revoke permissions packet ( non funtional still ) ( do it not using a multidelegate event ) 2016-09-12 18:26:24 +01:00
UbitUmarov
38fb28bd68 avoid siting a avatar at 0,0,0 2016-09-12 18:19:01 +01:00
UbitUmarov
34dce801b2 put a lock back in ubOde character :( 2016-09-12 18:10:11 +01:00
UbitUmarov
b9380c033d move region comands out of LocalGridServiceConnector where they do not belong 2016-09-10 12:43:48 +01:00
UbitUmarov
b8d97ff37d mantis 8021: fix show regionsinview help text 2016-09-07 12:43:38 +01:00
UbitUmarov
d5dbcc8ad7 ubMeshmerizer: add a few more try{} guards in file operations, etc 2016-09-05 15:59:33 +01:00
UbitUmarov
02ecff255d in show regionsinview display the name of the config option (MaxRegionViewDistance) that controls the regions View range 2016-09-05 14:51:54 +01:00
UbitUmarov
4f80c52509 add console comand show regionsinview lists the regions that can be seen from a region so may also get child agents from it 2016-09-05 14:26:52 +01:00
UbitUmarov
ed06bfb585 fix console comand Show Neighbours and enable it 2016-09-05 13:41:06 +01:00
UbitUmarov
49c579ec71 suspend httpdos on mapimge, fix image not been updated after first Get till restart 2016-09-05 12:30:25 +01:00
tglion
0e68742afc Fix some wrong handling of booleans for SeeAVs, AnyAVSounds and GroupAVSounds fields in sqlite3-database
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-09-05 08:39:16 +01:00
UbitUmarov
b5e7816b77 try to reduce the amount of assets created editing materials 2016-09-04 07:25:55 +01:00
UbitUmarov
6526de04cb make sure materials are cached. Split POST and PUT handlers for better readability 2016-09-04 04:19:10 +01:00
UbitUmarov
606e9f99f3 forgot the dll 2016-09-03 08:52:15 +01:00
UbitUmarov
4f9378bf97 remove reuse context code, they had notthing worth using and on original code when reusing contexts still in use, etc. Change DLL information to make clear it is a opensim fork, so our responsability not original author 2016-09-03 08:50:22 +01:00
UbitUmarov
9aec227767 Merge branch 'master' into httptests 2016-09-03 07:51:53 +01:00
UbitUmarov
c37877ed34 tests making sure evering thing is coerently wrong.. 2016-09-03 07:29:42 +01:00
UbitUmarov
16cec3041f <0,0,0,0> is not a rotation 2016-09-03 07:09:05 +01:00
UbitUmarov
d9572bdf4e ConvexDecomposition remove a copy of vertices not needed for ubOde 2016-09-02 11:55:59 +01:00
UbitUmarov
ea686058c9 ConvexDecomposition fix some incorrect convexhull mesh generation for ubOde 2016-09-02 10:37:18 +01:00
UbitUmarov
054cc8f08e Xengine only do GC.Collect if logins disabled 2016-09-01 20:49:07 +01:00
UbitUmarov
f6eac5aa7a remove some MegaRegions code from ubOde 2016-09-01 17:25:29 +01:00
UbitUmarov
6c6a965320 remove some MegaRegions code from physics 2016-09-01 16:15:51 +01:00
UbitUmarov
fced64aef5 change asset upload retry timer AutoReset back to true 2016-09-01 16:00:21 +01:00
UbitUmarov
bc1f5ebbb9 change MAXSENDRETRIESLEN from test value to normal 2016-09-01 13:03:47 +01:00
UbitUmarov
04351cc1c2 asset tests that still need UploadAttempts 2016-09-01 13:01:18 +01:00
UbitUmarov
924aaedfce assets uploads to grid. Change the retry code. Stop using asset.UploadAttempts field that should be removed 2016-09-01 12:45:09 +01:00
UbitUmarov
2a0df34087 Xengine: and fix line count again 2016-08-31 14:36:07 +01:00
UbitUmarov
2cbacbfb82 Xengine: put back a newline on scripts preamble, and the ugly filename prefix, for now 2016-08-31 12:47:56 +01:00
UbitUmarov
96ee7e4c2c Xengine: if option AppDomainLoading = true, create script domains for each SOG (like already done for attachments) and not per script. This should reduce number of domains without excessive problem of deleted scripts still loaded. 2016-08-31 12:03:06 +01:00
UbitUmarov
a2a84dea49 Xengine: coment out tests too dependent on precise characters and lines generated on code convertion, viewer error position is what matters 2016-08-31 11:17:30 +01:00
UbitUmarov
0f993a1278 Xengine: also missed a few newlines account 2016-08-31 10:39:01 +01:00
UbitUmarov
eca0ebab9d Xengine: forgot to do the indent on map too 2016-08-31 10:25:19 +01:00
UbitUmarov
3db81d87d6 Xengine: fix intermediate csharpe source identation. Not sure why i care, compiler sure doesn't and only we bother to create this files on code gen debug 2016-08-31 09:42:03 +01:00
UbitUmarov
5afc5fe343 Xengine: try to reduce memory pressure of scripts compile. Still ugly code, possible mistakes, but i need to share it before i loose it :) ) 2016-08-31 09:15:08 +01:00
UbitUmarov
4e1784d069 Xengine: remove a no thread safe locking, don't allocate a few objects only needed if creating a new domain 2016-08-30 08:56:35 +01:00
UbitUmarov
ed555801a4 mantis 8013: change attachment group to active group on attach from inventory 2016-08-29 19:41:26 +01:00
UbitUmarov
2b1b013404 ubOde add a missing decimal dot :) 2016-08-29 16:25:46 +01:00
UbitUmarov
155a861a4f ubOde mouse look steer with some MOUSELOOK_BANK action 2016-08-29 16:22:16 +01:00
UbitUmarov
d96c05a121 change my previus fix, change xengine to expect SOG and not attachments module, this way not breaking other script engines or modules out there for no valid reason 2016-08-29 12:18:01 +01:00
UbitUmarov
a4bf78fa19 mantis 8006: AttachmentModule triggered OnAttach by SOG xengine expects by SOP 2016-08-29 11:53:07 +01:00
UbitUmarov
9a67c9fd78 disable AttachmentModule tests again :( 2016-08-29 10:19:02 +01:00
UbitUmarov
2ab7248e31 allow AttachmentModule tests, some may now work 2016-08-29 10:09:59 +01:00
UbitUmarov
832758df2b mantis: 8006 restrict the suspention of Trigger OnAttach to the problematic case where scripts are created, and not always as i incorrectly did before. This is still a temporary fix, other modules will not get the notification in that case. But that needs a deeper fix possible in xengine 2016-08-29 10:03:06 +01:00
UbitUmarov
90d88f2df5 disable AttacmentsModule tests because they depend on OnAttach event currently not avaiable 2016-08-28 15:11:22 +01:00
UbitUmarov
386a13d5d6 mantis: rotate avatar to lookAt o login/teleports. Some cases may still be wrong 2016-08-28 14:59:02 +01:00
UbitUmarov
b2021cf83a mantis: 8006 remove duplication of attach script events. This is a temporary fix because TriggerOnAttach will not be trigger on attachment from inventory, (for now only Xengine connects to it on core). 2016-08-28 11:28:49 +01:00
UbitUmarov
ddc2f2ccd3 mantis: 8008 unscripted child prim collisions didn't trigger scripted root prim collision events; collision sounds had incorrect aggregateevents call and default sounds where muted. Future optimization needed and Testing 2016-08-28 08:45:09 +01:00
UbitUmarov
03dba18bb6 let mouse steer work on crossings; some cleanup 2016-08-28 04:43:44 +01:00
UbitUmarov
0628671d69 missing file 2016-08-28 03:54:47 +01:00
UbitUmarov
804d4971e2 my broken version of vehicle mouse steer on ubOde (no bank,needs better damp) 2016-08-28 03:51:20 +01:00
UbitUmarov
e7b0963db8 reduce math on use of camerarotation (need to add a lock there). Fix a bug on sits AToffset for some reason ATaxis got in there (needs testing) 2016-08-27 22:33:16 +01:00
UbitUmarov
9128c88d9b remove excess data 2016-08-27 22:10:31 +01:00
Vegaslon
c918dd74da Import plumbing from Halcyon for camera data to physics engine.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-08-27 22:02:03 +01:00
UbitUmarov
78fa544f0d experimental function. Results still too volatile to be usefull 2016-08-27 19:25:47 +01:00
UbitUmarov
abadad47d3 stack overflow is (not)funny :) 2016-08-27 18:03:21 +01:00
UbitUmarov
b2386b8d0d llCollisionSound(,value) back to disable all sounds. new osCollisionSound(..). allows defualt sounds with volume 2016-08-27 16:38:29 +01:00
UbitUmarov
38ba839eb3 watchdog timeouts: replace a silly List copy i added doing it a better way 2016-08-25 23:31:18 +01:00
UbitUmarov
d5f376a4b1 send selected objects Proprieties udp part outside update queues and as a physics single caps message per selection request 2016-08-25 09:51:34 +01:00
UbitUmarov
90fc4183dc suspend the use of SelectedObjects list. It is not threadSafe and is not in use (possible cant even be used) 2016-08-25 07:12:50 +01:00
UbitUmarov
991dd5f471 first step changing Object Select code 2016-08-25 06:56:25 +01:00
UbitUmarov
e33c2f0d7c fix missing PhysicsProprieties sending on Object select. This is a temporary Fix, entire Object select code needs to be changed 2016-08-25 06:32:04 +01:00
UbitUmarov
7ce6430a86 put back the console comand i remove since it is not a repetion 2016-08-25 04:55:01 +01:00
UbitUmarov
c0f7e1edba why did u used RunInThread? change to RunInThreadPool 2016-08-25 03:55:56 +01:00
UbitUmarov
2853c12135 respect landpoint Z position also on the ugly LandingPointBehavior_OS option (default one) 2016-08-24 21:59:39 +01:00
UbitUmarov
387d564aad do similar changes to unused checksManager 2016-08-24 07:41:11 +01:00
UbitUmarov
fc45942026 remove redundate console comand add, change stat deregister 2016-08-24 06:57:21 +01:00
UbitUmarov
32396742f8 reduce unnecessary allocation of new items 2016-08-24 06:26:31 +01:00
UbitUmarov
99c3b61bd9 dont request a workjob if we can see there is nothing to do 2016-08-24 06:20:04 +01:00
UbitUmarov
8f509af1f4 fix the conditions to do parcel objects autoreturn 2016-08-24 04:37:21 +01:00
UbitUmarov
c05ee23d3d minor change on warp3d lib 2016-08-24 04:10:35 +01:00
UbitUmarov
09e8289c68 potencial null ref 2016-08-24 02:21:33 +01:00
UbitUmarov
f9f35e5049 potencial null ref 2016-08-24 02:10:34 +01:00
UbitUmarov
fdea8fc96b potencial null ref 2016-08-24 02:00:50 +01:00
UbitUmarov
3c30223c77 potencial null ref 2016-08-24 01:40:35 +01:00
UbitUmarov
55680c9cd6 potencial null ref 2016-08-24 01:34:21 +01:00
UbitUmarov
517064121d estate handleTerrainRequest memory leaks 2016-08-24 01:22:50 +01:00
UbitUmarov
6744ec95a9 DynamicTextureModule memory leaks 2016-08-24 01:05:01 +01:00
UbitUmarov
35cc0420c8 fix a use of string Trim() 2016-08-24 00:20:45 +01:00
UbitUmarov
4dbd353110 remove some dead code 2016-08-24 00:13:54 +01:00
UbitUmarov
95970d7788 use known name a group ejetee if its local client 2016-08-24 00:06:47 +01:00
UbitUmarov
7a2256a8cd change odd condition on groupsV2 add to role 2016-08-23 23:48:07 +01:00
UbitUmarov
ed6d9199ce coment some debug messages 2016-08-23 11:52:52 +01:00
UbitUmarov
8eacc6b207 replace warp3D.dll by a newer modified version. (only minor testing done :( 2016-08-23 10:58:34 +01:00
UbitUmarov
08c1dff86c change strange rotation in legacy MapImageModule (untested) 2016-08-22 20:43:47 +01:00
UbitUmarov
133fce98e7 change ODEs topcolliders code ( still bad), plus a few memory leaks 2016-08-22 20:28:15 +01:00
UbitUmarov
a2c80b20d7 try to make mono happy 2016-08-22 08:35:39 +01:00
UbitUmarov
9953dad3a9 workaround potencial memory leak 2016-08-22 08:16:06 +01:00
UbitUmarov
39e92adaf2 workaround potencial memory leak 2016-08-22 08:12:32 +01:00
UbitUmarov
9229d5a324 locking issue 2016-08-22 07:55:25 +01:00
UbitUmarov
d1e3be1efe minor locking issue 2016-08-22 07:51:36 +01:00
UbitUmarov
3abd54082f remove unnecessary lock 2016-08-22 07:32:12 +01:00
UbitUmarov
2d4d1adb4d locking issue 2016-08-22 07:24:58 +01:00
UbitUmarov
cc322861ca minor locking issue 2016-08-22 07:14:33 +01:00
UbitUmarov
b98b535a6b locking issue 2016-08-22 06:50:20 +01:00
UbitUmarov
3ffb6e8120 minor locking issue 2016-08-22 06:29:54 +01:00
UbitUmarov
4f4227d5bb workaround potencial memory leak 2016-08-22 06:23:55 +01:00
UbitUmarov
27dcb01b2e workaround potencial memory leak 2016-08-22 06:06:13 +01:00
UbitUmarov
5d5bad5fc1 workaround potencial memory leaks 2016-08-22 06:03:39 +01:00
UbitUmarov
52a80f1742 workaround potencial memory leak 2016-08-22 05:47:19 +01:00
UbitUmarov
222a5b655f workaround potencial memory leak 2016-08-22 04:13:05 +01:00
UbitUmarov
c8a1d7e5a7 workaround potencial memory leaks 2016-08-22 03:55:01 +01:00
UbitUmarov
426e8a798f (re)fix avatar standup from a child prim on object delete 2016-08-22 00:28:54 +01:00
UbitUmarov
67a853a70e add a missing lock() 2016-08-21 22:44:21 +01:00
UbitUmarov
0f4d54b8b2 put back the dangerous resp.ReuseContext = true option, that for some odd reason OSgrid nginx configuration seems to need 2016-08-21 20:52:31 +01:00
UbitUmarov
0baaa23bde remove sceneGraph MoveObject and make it part of ProcessObjectGrabUpdate ( scene.PacketHandlers) where it belongs 2016-08-21 20:00:27 +01:00
UbitUmarov
c631ffb943 remove region combine option (mega region) for config ini files 2016-08-21 06:49:16 +01:00
UbitUmarov
963b296f93 in HGAssetBroker do cache all if asset id changed 2016-08-21 04:56:23 +01:00
UbitUmarov
b566be4f82 partially apply patch in mantis 8002 2016-08-21 03:06:31 +01:00
UbitUmarov
5d42d24428 limit the scan of terrain EnforceEstateLimits to the area changed. 2016-08-21 02:10:45 +01:00
UbitUmarov
d9647dbf7c fix llSetText utf8 string size cliping 2016-08-21 00:57:25 +01:00
UbitUmarov
73719b2efc fix terrain BMP image format on SaveStream mantis: 8001 2016-08-21 00:25:32 +01:00
UbitUmarov
3337ebe93c make the case llCollisionSound("",1.0) more clear its retunring to default sounds, ie like a prim that never had this funtion called. 2016-08-21 00:02:31 +01:00
UbitUmarov
04dd2a9795 fix llCollisionSound("",0.0) not disabling sounds BUT let llCollisionSound("",value [<=1.0]) play default sounds with selected volume. I really don't care if last part is not like SL 2016-08-20 23:41:32 +01:00
Melanie Thielker
0517e3d439 Mantis #8000, don't charge for updating classifieds. Thanks, Cinder!
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2016-08-20 22:44:32 +01:00
Melanie Thielker
82244cca68 Allow creation of user appearance from a model avatar. Thank you,
Cinder, for this patch.

Signed-off-by: Melanie Thielker <melanie@t-data.com>
2016-08-20 22:42:32 +01:00
UbitUmarov
c17e337eca fix GetLandData(...) in land connectors not suporting large regions 2016-08-20 01:59:40 +01:00
UbitUmarov
4ab9cfe711 fix physics sits on child prims 2016-08-19 23:38:56 +01:00
UbitUmarov
6ad0f3250b fix ubOde prims unlink that got broken fixing sleeping bodies collisions, core removes and adds a prim with same LocalID not giving time for physics to actuly delete, so when it did it LocalID was lost 2016-08-19 21:28:40 +01:00
UbitUmarov
d386bfa1b6 on sog unlink loose the reference to the deleted physics actor 2016-08-19 21:21:59 +01:00
UbitUmarov
e734d526fc on object delete send a direct kill and a delayed one via updates queue, Until we find why some are missing, (if its not by udp nature). also remove redundant avatar stands 2016-08-19 17:57:19 +01:00
UbitUmarov
52afd8588d fix updates resend by reEnqueing, that got broken down the line 2016-08-19 17:49:59 +01:00
UbitUmarov
3fef576554 avoid telling a work job to cancel itself 2016-08-19 16:14:08 +01:00
UbitUmarov
6703be2a90 do not enqueue next event processing if script is in SelfDelete state 2016-08-19 14:17:57 +01:00
UbitUmarov
7ba3fb7b5d merge issue 2016-08-19 03:05:25 +01:00
UbitUmarov
e62d38a4ab catch some NULL refs 2016-08-19 02:41:15 +01:00
UbitUmarov
d701de4021 add cap GroupMemberData 2016-08-19 02:26:49 +01:00
UbitUmarov
861fa8a408 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-08-19 00:16:59 +01:00
UbitUmarov
c53d74274d missed another UserAccounts cache, add a few locks 2016-08-19 00:14:46 +01:00
Kevin Cozens
1b2e240bf8 Collect any group join fees. Pass group name when applying join/create fees. 2016-08-18 15:38:39 -04:00
Kevin Cozens
847d351bf5 Fixed grammer in a comment 2016-08-18 15:38:39 -04:00
UbitUmarov
9c75f8a57e avoid NULL refs 2016-08-18 14:35:28 +01:00
UbitUmarov
4b73550eee allow cap HomeLocation to be disabled setting Cap_HomeLocation = "" 2016-08-18 13:17:46 +01:00
UbitUmarov
ac542715f1 add caps HomeLocation ; add client SendAlertMessage(string message, string info), where info in info message field. only minimal testing done 2016-08-18 12:45:11 +01:00
UbitUmarov
e58e6daf4a several changes on BunchOfCaps. Move some mesh cost initialization to its class it, change caps path to be plain random UUID (except SEED) 2016-08-18 07:48:46 +01:00
UbitUmarov
fedc689170 in GetUsersNames(string[] ids) why are empty names in cache? ignore them, cache also information found by GridUserService 2016-08-18 04:16:20 +01:00
Kevin Cozens
df8f189f5c Fixed typo in two group messages 2016-08-17 22:44:40 -04:00
UbitUmarov
7dbc5803a6 in GetUsersNames(string[] ids) dont loose names HGFriends may have cached 2016-08-18 02:49:46 +01:00
UbitUmarov
7d968213fd fix region Allow damage and parcel safe flags handling 2016-08-17 23:33:11 +01:00
UbitUmarov
f1495cb237 ubOde reduce collision_start latency in same cases (only one collision happening and more than 50ms since last) 2016-08-17 22:34:21 +01:00
UbitUmarov
bca5fd98dc remove some dead code 2016-08-17 21:20:20 +01:00
UbitUmarov
e9638ee9e9 increase physics collisions report rate back to 20/s 2016-08-17 20:26:01 +01:00
UbitUmarov
9f88273741 add GetMultiAccounts USER SERVICE HANDLER. UNTESTED !!! 2016-08-17 06:25:20 +01:00
UbitUmarov
04ea34f379 add GetUsersNames(string[] ids) to UserManagement. Make GetDisplayNames cap use it so several IDs are handle on a single call. Since there is no grid side suport, no much gain still 2016-08-17 06:00:42 +01:00
UbitUmarov
72876fc683 drasticly reduce HG inventory caches Expire times, Remove them all onClientClose. This to avoid potencial desyncs with inventory service 2016-08-16 23:11:01 +01:00
UbitUmarov
544b859c00 fix tests acording 2016-08-16 05:20:46 +01:00
UbitUmarov
1c1d40cf6a libOMV PrimFlags.JointLP2P does not exist. Its bit now means
VolumeDetector. VolumeDetectActive is now stored on that flag bit. with
 this change it is now sent to viewers that now gray out phantom on object
 edit. At same time fixes the fact volumedetector was not been saved on
 region db and so  was lost on restarts. libOMV needs to be fix on this and other PrimFlags
2016-08-16 05:05:53 +01:00
UbitUmarov
a997ffd497 sync osForceAttachToOtherAvatarFromInventory thread level in code and in osslEnable.ini mantis: 7997 2016-08-16 04:35:49 +01:00
UbitUmarov
41062c1627 fix misspelled message mantis: 7996 2016-08-16 04:21:49 +01:00
UbitUmarov
5dfb706bea fix llVolumeDetect(FALSE) not working 2016-08-16 01:50:06 +01:00
UbitUmarov
57aac3d77e remove OptionalModules\ViewerSupport\SimulatorFeaturesHelper ShouldSend() since it cannot be used 2016-08-14 03:56:44 +01:00
UbitUmarov
1337f5f26e remove a parameter for detection of grid fail to suport getting multiple user accounts per call and handle it where needed. 2016-08-13 23:41:57 +01:00
UbitUmarov
7c1b2a5dde add some wiring to have GetUserAccounts for multiple IDs on a single request to grid services. Unfinished, untested 2016-08-13 05:22:29 +01:00
UbitUmarov
b64f25e631 add a missing cast to ulong in RegionGridLocToHandle (mantis: 7994) 2016-08-13 00:16:50 +01:00
UbitUmarov
09832edadf avoid automatic packet spliting in GroupMembersReply 2016-08-12 18:47:01 +01:00
UbitUmarov
9080aaf9eb only reissue a kill if a update is for a deleted sog root part. 2016-08-12 04:08:19 +01:00
UbitUmarov
c04792142f partially revert commit 42a9afdc43cc.. of 06-12 not allowing more updates to be enqueued on deleted objects. Keep the catch up on deenqueue, so preserving the race condition safe guard. Let Scene sendkillObject work even if object is flaged as deleted. Still not clear how this are related to mantis 7858 or even less to 7990. 2016-08-12 03:58:04 +01:00
UbitUmarov
cfab2675ff remove code from httptests branch 2016-08-11 08:42:34 +01:00
UbitUmarov
9aa2484f0d to do that don't use slideexpiration; add cap event ChatterBoxForceClose 2016-08-11 08:38:39 +01:00
UbitUmarov
b16d6c0302 stop renewing xml cache entries expires. Let them expire or grid changes will ignored as long something keeq requesting (like group profiles refreshs). reduce the expire time more ignoring folish config. 2016-08-11 04:52:25 +01:00
UbitUmarov
8fb7a3543f let physics know about region water level change 2016-08-09 22:29:11 +01:00
UbitUmarov
6f5f6431a4 add a SimpleAngularDistance Updates prioritazition scheme. Results don't look that great so don't use it still. 2016-08-09 21:46:19 +01:00
UbitUmarov
6c00016447 add a simple prim area estimator 2016-08-09 13:18:51 +01:00
UbitUmarov
f387b93859 tell prim name on some more ubMeshmerizer error/warn messages 2016-08-09 11:59:27 +01:00
UbitUmarov
a30f75cfdc fix entity update flags update 2016-08-07 21:13:58 +01:00
UbitUmarov
c255c23981 move updates from updates queues into udp queues acording to their payload estimated size and udp sending capability on a time slice, instead always moving a arbitrary number of updates. 2016-08-07 21:13:29 +01:00
UbitUmarov
ff0ccf9c67 several changes related to culling option 2016-08-07 21:13:01 +01:00
UbitUmarov
a0538eb53d fix entity update flags update 2016-08-07 20:53:38 +01:00
UbitUmarov
081c66631c move updates from updates queues into udp queues acording to their payload estimated size and udp sending capability on a time slice, instead always moving a arbitrary number of updates. 2016-08-07 17:07:09 +01:00
UbitUmarov
8d22b79ba4 several changes related to culling option 2016-08-07 14:30:27 +01:00
UbitUmarov
68a4e363dd Merge branch 'httptests' of opensimulator.org:/var/git/opensim into httptests 2016-08-07 00:24:17 +01:00
UbitUmarov
83d6722d31 if a viewer overloads region capability to process RequestMapBlocks, ignore following requests for 300 seconds. This was necessary becaus some viewers like FireStorm are doing it, saturating region and grid services for no usefull reason 2016-08-06 22:12:38 +01:00
UbitUmarov
f7419ad52d ubOde revert making vehicle hover height disable hover. This at least breaks current scripts. wikis say it should, but makes no sense with vehicle type parameters defaults. Hover it again only disabled with timescale >300; handle llSameGroup on attachments 2016-08-06 05:21:15 +01:00
UbitUmarov
17cc238b44 ubOde a few changes to collisions reporting 2016-08-06 02:05:23 +01:00
UbitUmarov
61ec34b441 fix osGetHealRate thread level 2016-08-06 01:15:26 +01:00
UbitUmarov
20d8177d98 fix incorrect ids in llDetected collision parameters 2016-08-06 00:11:13 +01:00
UbitUmarov
9102f6e5da fill data for llDetected funtions of collisions closer to the event. (xengine wasn't update with this on merge bc was not used there). fix some parameters 2016-08-05 22:50:15 +01:00
UbitUmarov
60b08b51b6 remove country from avatars DetectParams, since it is only used on a cm function that can get it directly 2016-08-05 17:08:34 +01:00
UbitUmarov
e9660d5d05 fix parcel Avatar Sounds using group membership not active group 2016-08-05 15:57:30 +01:00
UbitUmarov
efb60b5b42 use group provided by viewer on Object rez from inventory 2016-08-05 15:36:50 +01:00
UbitUmarov
23578635df more changes relative to incorrect use of activegroupid 2016-08-05 15:19:42 +01:00
UbitUmarov
ab7619292f also use group provided by viewer on ObjectDuplicateOnRay 2016-08-05 01:59:19 +01:00
UbitUmarov
338a4d8d3b duplicate objects with the group requested by viewers and not internal idea of active one 2016-08-05 01:37:20 +01:00
UbitUmarov
a0cab03caa rez new objects with the group requested by viewers and not internal idea of active one 2016-08-05 00:52:45 +01:00
UbitUmarov
29dc449cc8 revert a variable rename 2016-08-04 23:00:40 +01:00
UbitUmarov
a90079bc92 cancel sending group powers on crossings, they are no longer needed. 2016-08-04 22:54:29 +01:00
UbitUmarov
e57d3edf6f make sure all new scenepresences have fresh groups information at creation time (grouptitle missing but not that needed at that point) (use direct calls exactly where we want things to happen), reusing a funtion name to rename later 2016-08-04 21:36:41 +01:00
UbitUmarov
a66e747c95 add GetActiveMembershipData() to groups modules, let core groups also have GetMembershipData(), wait for client to ask for it not telling in OnNewClient, as other modules do. 2016-08-04 20:57:57 +01:00
UbitUmarov
4f17078b07 add a weak safeguard 2016-08-04 18:21:16 +01:00
UbitUmarov
5861355577 do friends recaching on MakeRoot for normal tps, delay it on crossings 2016-08-04 17:39:10 +01:00
UbitUmarov
bb8e271081 fix a typo 2016-08-04 17:29:47 +01:00
UbitUmarov
2619005f46 also disable vehicle hover if its hover is set to zero 2016-08-04 17:17:16 +01:00
UbitUmarov
3f2291611f apply external forces and torque to vehicles also, as other engines do 2016-08-04 16:24:19 +01:00
UbitUmarov
ad76687227 update libode for mac osX. Thanks Gavin Hird (mantis 7781) 2016-08-04 15:05:33 +01:00
UbitUmarov
12658b1eed update libode for mac osX. Thanks Gavin Hird (mantis 7781) 2016-08-04 15:04:43 +01:00
UbitUmarov
4c7b2b2ed7 Merge branch 'master' into httptests 2016-08-04 06:14:46 +01:00
UbitUmarov
1b16ad9088 let get by handle also search on inner lookup table 2016-08-04 03:16:29 +01:00
UbitUmarov
721d5ed145 well then also no need to remove them :) 2016-08-04 01:19:52 +01:00
UbitUmarov
9e07c55746 no need to place normal size regions on the inner lookup table (HANDLEMASH ? its MASK) 2016-08-04 01:16:17 +01:00
UbitUmarov
374911c410 try to speed up get by position X,Y on region info cache 2016-08-04 00:39:28 +01:00
BlueWall
e15dc72113 Provide tests for native datatypes where LSL Constants are used in lists as JSON elements. Namely: LSL_Float/double, LSL_String/string, LSL_Integer/int. Fixes http://opensimulator.org/mantis/view.php?id=7957
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-08-03 22:24:04 +01:00
UbitUmarov
2d8669ad39 reduce ubOde walking super climbers 2016-08-02 21:08:22 +01:00
UbitUmarov
c035871e76 Merge branch 'master' into httptests 2016-08-02 18:19:34 +01:00
UbitUmarov
a99df75a30 (mantis 7983) update local cache when storing a baked tex on assets server 2016-08-02 17:45:06 +01:00
UbitUmarov
5baceff4e9 stop a spamming robust debug message 2016-08-02 17:37:41 +01:00
UbitUmarov
d0ccaead0e Merge branch 'master' into httptests 2016-08-02 16:54:11 +01:00
UbitUmarov
90b899c4e4 do not try to cache same asset twice with hg enabled 2016-08-02 15:56:44 +01:00
UbitUmarov
04ac81a46e minor cleanup 2016-08-02 02:21:41 +01:00
UbitUmarov
3b76b2f176 Merge branch 'master' into httptests 2016-08-02 01:40:00 +01:00
UbitUmarov
908b5e8526 revert that and actually don't loose the estates :) 2016-08-02 01:37:47 +01:00
UbitUmarov
b1ef269dd3 add a extra null check on epxirecache out ( ?? ) 2016-08-02 01:15:53 +01:00
UbitUmarov
4ba4c9cf9e missed a Math.sqrt ... 2016-08-01 04:48:01 +01:00
UbitUmarov
5576a100ce Merge branch 'master' into httptests 2016-08-01 01:05:31 +01:00
UbitUmarov
708d2cd413 replace DateTime.Now by utcNow in another place 2016-08-01 00:58:16 +01:00
UbitUmarov
8d5bc71a53 bug fix: use UtcNow in both places :) 2016-08-01 00:35:48 +01:00
UbitUmarov
a9befe1c62 Merge branch 'master' into httptests 2016-07-31 23:19:51 +01:00
UbitUmarov
159d722966 on 0.8 grids compatibility code just do a BIG range request. It whould be done in most cases (open borders) plus 4 more. In future this code should not be used if the grid is >=0.9 2016-07-31 23:12:09 +01:00
UbitUmarov
c0eae1f8f9 simply NotFoundLocationCache, comment out some debug messages 2016-07-31 22:39:01 +01:00
UbitUmarov
722b7cfbb2 bug fix 2016-07-31 19:35:10 +01:00
UbitUmarov
703e96b4cb Change RegionInfoCache again... 2016-07-31 19:08:35 +01:00
UbitUmarov
598e4ed7c9 rearrange handlers convertion math, harcoding the grid unit size of 256m, also inviting jit to use cpu barrel shifters. 2016-07-31 02:53:35 +01:00
UbitUmarov
a4caedceae rename a few things to reduce confusion between regions wold location and grid location (a lot more elsewhere) 2016-07-31 01:56:44 +01:00
UbitUmarov
62d0e50ca4 Merge branch 'master' into httptests 2016-07-31 00:04:35 +01:00
UbitUmarov
db7f1aaa2f cleanup to go break something else 2016-07-31 00:03:48 +01:00
UbitUmarov
0509badcc1 another try on jenkins 2016-07-30 23:56:54 +01:00
UbitUmarov
78d9312fc8 move some code back to AddRegion because some tests dont issue RegionLoaded 2016-07-30 23:23:28 +01:00
UbitUmarov
7b55348360 still on jenkins 2016-07-30 22:44:41 +01:00
UbitUmarov
f4385dcd92 do not set m_RegionInfoCache null on each LocalGridServicesConnector construction 2016-07-30 22:26:31 +01:00
UbitUmarov
7ae4211635 test jenkins for the null object 2016-07-30 22:19:25 +01:00
UbitUmarov
4599b3ecfd test jenkins for error line number 2016-07-30 22:05:55 +01:00
UbitUmarov
2826f713d4 stop creating caches on all standalone regions on a single instance ( why are shared modules been created on every scene?? ) 2016-07-30 21:25:26 +01:00
UbitUmarov
a63aef978a Merge branch 'master' into httptests 2016-07-30 21:02:08 +01:00
UbitUmarov
9a4afa753b fix NULL references added in recente changes in standalone mode 2016-07-30 20:56:19 +01:00
UbitUmarov
cb23d1bf24 Merge branch 'master' into httptests 2016-07-30 20:13:16 +01:00
UbitUmarov
e62f8fd09e change RegionInfoCache expires control 2016-07-30 20:08:14 +01:00
UbitUmarov
bf593dd6f4 fix RegionInfoCache keys compare, remove RegionCache now replaced by RegionInfoCache 2016-07-30 17:14:17 +01:00
UbitUmarov
79b7787eff let LocalGridServiceConnector also have a RegionInfoCache, use the remote one if this is active. 2016-07-30 14:35:43 +01:00
UbitUmarov
3c4d908cda remove obsolete config setting 2016-07-30 12:43:14 +01:00
UbitUmarov
22b1b91599 Merge branch 'master' into httptests 2016-07-30 04:31:26 +01:00
UbitUmarov
6cd0a3e07c fix cAgent.CrossingFlags 2016-07-30 04:25:32 +01:00
UbitUmarov
b44b898331 remove a unused parameter 2016-07-30 03:45:58 +01:00
UbitUmarov
a1759292c8 add a regionInfoCache cache add region with expire time option 2016-07-30 03:31:03 +01:00
UbitUmarov
202212bcbc add a regionInfoCache get by world 2D position 2016-07-30 03:13:23 +01:00
UbitUmarov
18bcacdded Merge branch 'master' into httptests 2016-07-30 01:53:25 +01:00
UbitUmarov
55b2d01028 in RegionInfoCache, replace lib omv ExpireCaches by a single dedicated one 2016-07-30 01:44:33 +01:00
UbitUmarov
3d58198c55 fix llEdgeOfWorld() for var regions (someone needs to test this better 2016-07-29 00:55:40 +01:00
UbitUmarov
c692664f3d a zero direction vector in llEdgeOfWorld() should return TRUE not FALSE, (SL wiki) 2016-07-28 21:37:16 +01:00
UbitUmarov
3cf8a58f9d Merge branch 'master' into httptests 2016-07-28 08:25:04 +01:00
UbitUmarov
16a7232f55 revert adding a new IM parameter ( commit bf604c85c6
, that was a mistake. this should fix invites accepts etc, that got broken
2016-07-28 08:22:51 +01:00
UbitUmarov
19df2a2916 remove more code related to Mega regions 2016-07-28 01:00:56 +01:00
UbitUmarov
7a69b7d20d remove more code related to Mega regions 2016-07-28 00:48:12 +01:00
UbitUmarov
ec8101a24a remove references to RegionCombinerModule 2016-07-28 00:34:16 +01:00
UbitUmarov
a8e19b7831 remove the RegionCombinerModule (mega regions), references still all over the place. runprebuild maybe needed after this 2016-07-28 00:12:07 +01:00
UbitUmarov
376084a2e5 Merge branch 'master' into httptests 2016-07-27 23:39:50 +01:00
UbitUmarov
01289b9c2d first step removing MegaRegions: refuse to run. Thanks to all that made MegaRegions possible, they where a important OpenSim feature, but can no longer be mantained 2016-07-27 23:13:24 +01:00
UbitUmarov
9aacdca653 but buoyancy was missing 2016-07-27 21:32:47 +01:00
UbitUmarov
32e30afbcb actually that was redundante, already done at low level 2016-07-27 21:31:43 +01:00
UbitUmarov
8c46ab02c7 move refresh forces into applyphysics 2016-07-27 21:11:39 +01:00
UbitUmarov
e951f4cc96 a few more changes relative to sits crossing 2016-07-27 14:28:16 +01:00
UbitUmarov
07853c86ed clear SitTargetAvatar on a sop copy 2016-07-27 11:45:32 +01:00
UbitUmarov
2e4c8798ab a few more changes on avatar crossing 2016-07-27 03:50:47 +01:00
UbitUmarov
f4fa891928 waste another thread job on another thing that should be part of a more
unified service, and also not hidding on a so called event"
2016-07-27 02:54:49 +01:00
UbitUmarov
d6e16c5130 missing changes about friends on crossings, and missing angular velocity clear on sits 2016-07-27 01:57:20 +01:00
UbitUmarov
800044cead take friends out of onMakeRoot if crossing 2016-07-26 22:30:51 +01:00
UbitUmarov
f19b3d28bd do GridUserService.SetLastPosition async on crossings 2016-07-26 22:09:06 +01:00
UbitUmarov
e0e8b784a5 apply the change to groups v2 also 2016-07-26 21:43:26 +01:00
UbitUmarov
52decfcc16 reduce some grid services calls on region crossings, sending more information on the agent update ( groups v2 needs change ) 2016-07-26 21:39:47 +01:00
UbitUmarov
1a8a8e16ef add a public SetGroupPowers to clientView 2016-07-26 17:57:14 +01:00
UbitUmarov
13ae6dff18 let some group related data to have a public set 2016-07-26 17:34:59 +01:00
UbitUmarov
e766f9d20f get a copy of current clientView group powers 2016-07-26 16:54:04 +01:00
UbitUmarov
3f0d84c28b cleanup some code 2016-07-25 19:49:40 +01:00
UbitUmarov
67a32c91bb remove redundant check 2016-07-25 08:45:15 +01:00
UbitUmarov
1d507f8073 remove extra char 2016-07-25 08:38:10 +01:00
UbitUmarov
fcdf0b00b1 add give a body to default rootVelocity 2016-07-25 07:24:39 +01:00
UbitUmarov
2548f240b5 add missing overrides 2016-07-25 07:18:23 +01:00
UbitUmarov
aa9503ab86 revert bad last changes and fix the issue another way 2016-07-25 07:06:36 +01:00
UbitUmarov
f661fdf2aa ubOde bug fix 2016-07-25 06:07:06 +01:00
UbitUmarov
c3b298f85e missing file 2016-07-25 02:11:45 +01:00
UbitUmarov
4b832f0f8e add osGetHealRate(avatarkey) and osSetHealRate(avatarkey, healrate); healrate from 0 (disables auto heal) to 100 (maybe too fast) % per second. (untested) 2016-07-25 02:05:53 +01:00
UbitUmarov
e60dc305a4 change bullet relative velocity sign to match ubOde 2016-07-25 01:07:19 +01:00
UbitUmarov
76239602b4 change avatar Health, from bad penetration depth to relative velocity 2016-07-25 00:51:37 +01:00
UbitUmarov
42a072d181 preserve max relative velocity on a colision report time slice 2016-07-25 00:47:43 +01:00
UbitUmarov
0a9f06fda7 ubOde actually revert last change don't send unnecessary empty collisions, will patch it elsewhere 2016-07-24 22:33:31 +01:00
UbitUmarov
c303cf7412 ubOde still on relative velocity. Make ubOde report avatar empty collisions to tick events on core. Avn didn't require this, core should not require also (TODO) 2016-07-24 22:28:45 +01:00
UbitUmarov
a572a22dd9 ubOde try to improve contact velocity on first avatar collision with terrain 2016-07-24 21:29:34 +01:00
UbitUmarov
574b97d93d ubOde fix contact relative velocity sign 2016-07-24 21:16:14 +01:00
UbitUmarov
d6d3e14f29 add a missing update to avatar damage Invulnerable 2016-07-24 19:31:28 +01:00
UbitUmarov
2bb467e358 add osSetHealth() value from 1 to 100; (mantis 7973) 2016-07-24 16:31:29 +01:00
UbitUmarov
37936550f0 reOoops ... 2016-07-24 15:55:31 +01:00
UbitUmarov
4fa8debde5 Ooops ... 2016-07-24 15:43:35 +01:00
UbitUmarov
bf604c85c6 add missing IM parameter ( needs fix where it is really relevant ) 2016-07-24 15:17:25 +01:00
UbitUmarov
96a5a053ef do not send IMs via child agents 2016-07-24 14:44:40 +01:00
UbitUmarov
f4eb1a8e1d add a coment for improvement of ChatterBoxSessionAgentListUpdates closer to viewers protocol. Not necessary on current groups chat lists defecient implementation 2016-07-23 21:20:36 +01:00
UbitUmarov
c4db0dd6ac change group lists control so it does show something (only xmlrpcgroups for now). This will never work without a centralized dispatcher/controler, or more complex information exchange. 2016-07-23 21:09:34 +01:00
UbitUmarov
bdab44ef7e remove code from httptests branch 2016-07-23 01:34:40 +01:00
UbitUmarov
cdf215f613 add a missing field to ChatterBoxSessionAgentListUpdates. it is still wrong, and its use even worse 2016-07-23 01:28:57 +01:00
UbitUmarov
504ee6e21c don't try to rez a object from a asset with empty data and Let user know about it 2016-07-22 16:41:41 +01:00
UbitUmarov
2062418c56 add another gatekeeper login fail reason reply 2016-07-21 11:34:17 +01:00
UbitUmarov
475087de79 add a gatekeeper login fail reason reply 2016-07-21 11:22:13 +01:00
UbitUmarov
2cacd77d41 let FS get a answer to folder uuid.zero, (still seems a no op); send
Library folders list"
2016-07-19 23:50:39 +01:00
UbitUmarov
2c6db4f617 fix a typo 2016-07-19 19:01:03 +01:00
UbitUmarov
46c55b6fa0 some cleanup on FetchInvDescHandler 2016-07-19 18:56:32 +01:00
Melanie Thielker
2cffa71be2 Add some additional checks to llTransferLindenDollars. 2016-07-18 11:12:14 +01:00
UbitUmarov
eaefae7e20 don't loose inventory items when there are bad folders 2016-07-17 22:52:58 +01:00
UbitUmarov
9b4e83caa0 dont try dequeues if didnt reacquired lock 2016-07-17 16:21:37 +01:00
UbitUmarov
79e464f33f dont try dequeues if didnt reacquired lock 2016-07-17 16:16:24 +01:00
UbitUmarov
e881562d34 fix drop on delayed events processing 2016-07-17 14:15:46 +01:00
UbitUmarov
442b272228 add a Drop method to PollService Event handlers, Drop requests on connections known to be lost or delay event check if they are sending a response 2016-07-17 13:20:56 +01:00
UbitUmarov
6a02ac634b identify contexts by ID now avaiable ( pipeline serialization) 2016-07-17 11:39:38 +01:00
UbitUmarov
c802368c86 replace http server with test version 2016-07-17 10:49:59 +01:00
UbitUmarov
f636ef037a http send is blocking, so we need we need to do it async in all cases. - this will need revision after server changes 2016-07-16 20:23:30 +01:00
UbitUmarov
d1810866b3 simplify http textures and meshs Throttles 2016-07-16 19:53:41 +01:00
UbitUmarov
c9bd6ff94b disable OSHttpTests that will collide with testing new http server changes 2016-07-15 15:54:54 +01:00
Geir Nøklebye
653b896794 PGSQL: Update simulation data with a number of missing fields for parcels. Some of the fields should probably be migrated to type Boolean to avoid the hairy casting in the query. In addition the overall server code relies in the Replace in SQL statement that is proprietary to MySQL, so the PGSQL code is rather unsafe as it is. Should probably set a transaction on the whole operation so that if something goes wrong the database record is not zapped as it is now. PostgreSQL 9.5 has the upsert functionality which would bring the code closer to the MySQL version. This commit also has an update to PGSQLRegionData
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-07-15 15:45:39 +01:00
UbitUmarov
5f5c4aca40 lib omv now supports SeeAvs fields, so use it, thx Gavin Hird 2016-07-15 15:36:53 +01:00
UbitUmarov
aba4e2d13b revert changes to Select/DeSelect, using the SelectObjects as control seems bad 2016-07-14 02:11:50 +01:00
UbitUmarov
445fb51455 make getBoundsCenter() call GetBoundsRadius() to do the math if needed 2016-07-13 22:35:46 +01:00
UbitUmarov
00687d5b0f use geometric center and not sog root position in culling 2016-07-13 22:29:09 +01:00
UbitUmarov
e0a1025497 Oops that was not slower 2016-07-13 16:28:07 +01:00
UbitUmarov
33655e40df slow down culling kills even more 2016-07-13 16:15:35 +01:00
UbitUmarov
acebfeb5c9 don't overlap Select and Deselect, fix deselect prims account 2016-07-13 15:56:01 +01:00
UbitUmarov
981980150c ignore camera on culling for now 2016-07-13 14:18:06 +01:00
UbitUmarov
7131703244 ugly culling 2016-07-13 14:00:33 +01:00
UbitUmarov
14296bc792 add missing prim count for stats 2016-07-13 10:25:52 +01:00
UbitUmarov
2220ceb522 a few changes to culling 2016-07-13 02:07:07 +01:00
UbitUmarov
abf423e361 be nicer to PIs (actually linux) 2016-07-12 23:23:47 +01:00
UbitUmarov
3507566692 reduce some locks on culling checks 2016-07-12 22:15:39 +01:00
UbitUmarov
bc6c342d01 let radius be radius, not diameter 2016-07-12 17:21:34 +01:00
UbitUmarov
5bb5eb4e37 don't break child agents start position 2016-07-12 16:33:09 +01:00
UbitUmarov
e0878864e8 work around missing information on child creation, hidding its effects with reduced view range in culling option is on 2016-07-12 15:50:05 +01:00
UbitUmarov
d879e119a8 add object UUID to a debug/warn message 2016-07-12 14:45:20 +01:00
Melanie Thielker
f87d5d0780 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-07-11 22:32:27 +01:00
Melanie Thielker
8239e29be7 Change the user verification call back to use the host name instead of the
IP address. Fixes NGINX on OSGrid getting confuzzled.
2016-07-11 22:31:32 +01:00
UbitUmarov
79fb13c95c reduce xfer burst if we are busy 2016-07-11 12:05:47 +01:00
UbitUmarov
a92266d58e fix ObjectPropertiesFamilyPacket LastOwnerID 2016-07-10 19:05:19 +01:00
UbitUmarov
e6d57a1e49 change Xfermanager file sending 2016-07-10 15:25:05 +01:00
UbitUmarov
8d27abd3b4 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-07-09 13:46:20 +01:00
UbitUmarov
941971648e kick Xfermanager from heartbeat and expires files based on its timming 2016-07-09 13:45:29 +01:00
Kevin Cozens
21de916225 Fixed the order of two file names used in a warning. 2016-07-08 21:21:46 -04:00
UbitUmarov
415c45b097 add a simple files expire to Xfer to catch some that never got a request (opened xfers also need a timeout) (not pretty code, but should not have heavy use) 2016-07-09 01:32:27 +01:00
UbitUmarov
fa9a4a9a2b some changes to RequestInventoryFile() 2016-07-09 00:20:51 +01:00
UbitUmarov
11a8a722df don't auto return objects if they have sitting avatars (not npcs) - mantis 7828 with diferent code 2016-07-08 09:56:59 +01:00
Diva Canto
e38f16d800 Correction of a test introduced in 34b308d5b6 2016-07-07 13:06:37 -07:00
UbitUmarov
a058fca1ac reduce lock time during object inventory ProcessInventoryBackup 2016-07-07 19:54:52 +01:00
UbitUmarov
668339f936 reduce the initial capacity of InventoryStringBuilder the 16k i added is
unreasonable for most cases. The coment about performance on a previus
commit refering to mantis 7904 was wrong, this changes will NOT do much in
terms of objects inventory download time, only a bit on cpu and memory
use"
2016-07-07 16:05:13 +01:00
UbitUmarov
416c02ef3a hide the footprints of my previus bug ( take out comented code 2016-07-07 15:30:07 +01:00
UbitUmarov
a4fc22a6b6 forget InventoryStringBuilder.close() 2016-07-07 15:22:32 +01:00
UbitUmarov
14b9d31bd9 change InventoryStringBuilder. This will do much for mantis 7904 objects inventory sending is slow by design 2016-07-07 14:38:27 +01:00
UbitUmarov
f768effa87 move object inventory send to udp queue asset ( was task). Remove a call
to RefreshGroupMembership() on start. It was too soon and its Groups
module job
2016-07-07 12:23:53 +01:00
UbitUmarov
4119e60c0c avoid InvalidBoundsRadius() calls caused by small changes 2016-07-07 00:16:25 +01:00
UbitUmarov
d7ab1cdd15 let RePrioritization also work on child agents 2016-07-06 18:58:28 +01:00
UbitUmarov
06b412c980 the bug was actually here 2016-07-06 17:32:59 +01:00
UbitUmarov
beafc99d43 bug fix, etc 2016-07-06 17:31:05 +01:00
UbitUmarov
6c48be6c91 finish removing child-repri option 2016-07-06 16:50:25 +01:00
UbitUmarov
0eabfb1e3e add some needed InvalidBoundsRadius() calls 2016-07-06 16:45:27 +01:00
UbitUmarov
c02fe98b7d add test option ObjectsCullingByDistance. In future, if true, it may
prevent sending objects outside view range to viewers. DO NOT SET TRUE
 unless testing it. Code still not completei!!!
2016-07-06 16:13:27 +01:00
UbitUmarov
259824fbc4 add EngineName also to the others 2016-07-04 09:13:20 +01:00
UbitUmarov
2ebccbcd08 add EngineName also to old ODE 2016-07-04 08:55:19 +01:00
UbitUmarov
1d9e343b7e Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-07-04 08:30:07 +01:00
UbitUmarov
ac72598c6b add OSSL osGetPhysicsEngineName(). this returns a string with name and version. does no permition checks or it whould be less usefull ( only ubOde returns value) 2016-07-04 08:29:26 +01:00
Melanie Thielker
4468aa0dcf Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-07-04 03:37:45 +01:00
Melanie Thielker
ea8f3c83bf Finally remove the requirement for an InventoryItem/FolderBase object to
be passed into inventory queries.
This makes the API more homogenous and also will more clearly show
coding
errors related to HG inventory where the .Owner field has a meaning
for a query but wasn't always set.
2016-07-04 03:35:48 +01:00
Diva Canto
e00603f78a New config var: DisableObjectTransfer. If set to True, objects never cross; instead they stay in the region, possibly placed outside its borders. 2016-07-03 12:24:31 -07:00
UbitUmarov
b3d8e35d67 dont try to check CanObjectEntry on a attachment in llSetPos() 2016-07-03 19:51:07 +01:00
UbitUmarov
58135ef52c fix a lost region size of 256m 2016-07-03 19:39:13 +01:00
UbitUmarov
42dd02fc32 scale down position X and Y acording to region size on sending coarse Updates. Viewers need to scale up by same amount. 2016-07-03 15:47:20 +01:00
UbitUmarov
a443dcce89 try to place avatars on a nicer location, when they arrive into a banned parcel 2016-07-03 10:22:14 +01:00
UbitUmarov
a6ee06d630 dont send bad profiles to viewer 2016-07-02 13:53:17 +01:00
UbitUmarov
cd34f978fb revert to previus GroupProfileRequest because floatsam groups server seems to return wrong values for GroupMembershipCount and GroupRolesCount. this should be fixed because we are getting the full lists just to count number of entries 2016-07-02 01:01:29 +01:00
UbitUmarov
7991bb08f1 reduce absurd viewers blind retries of GroupProfileRequest 2016-07-02 00:18:29 +01:00
UbitUmarov
057bc648f3 xmlrpcgroups: make use of a forgotten GetMemberGroupProfilemethod, put back xmlrpc cache since it is necessary to prevent folish viewers flooding 2016-07-01 23:26:16 +01:00
UbitUmarov
07c8e79b03 missing file 2016-07-01 19:32:14 +01:00
UbitUmarov
3af437c8bc cleanup a bit 2016-07-01 19:20:04 +01:00
UbitUmarov
7b7483ec7e save one call to grid to get agent groups powers (xmlrpcgoups only for now 2016-07-01 18:38:38 +01:00
UbitUmarov
aa744eecf2 add a few methods to modify clientview group powers 2016-07-01 18:19:09 +01:00
UbitUmarov
1777324a86 cleanup a bit AgentGroupDataUpdate sending 2016-07-01 17:31:31 +01:00
UbitUmarov
6deced0193 increase xmlrpc timeout in xmlrpcgroups, disable its cache until its entries invalidation is checked 2016-07-01 16:24:42 +01:00
UbitUmarov
9358a6ad29 revert several changes to groups modules (agentGroupData is private). change interregions invite/eject messages, etc 2016-07-01 16:10:45 +01:00
UbitUmarov
ea140d7cac change ubOde module, hopefully for better handling of multiple scenes on same instance. ( may be broken now ) 2016-06-29 14:14:16 +01:00
UbitUmarov
158e0ae402 Revert " don't try to send initial AgentGroupDataUpdate to NPCs" this was
already done

This reverts commit 84a6a6e008.
2016-06-28 23:57:14 +01:00
UbitUmarov
84a6a6e008 don't try to send initial AgentGroupDataUpdate to NPCs 2016-06-28 23:52:00 +01:00
UbitUmarov
90b825cda8 if a NPC is owned, allow access if ownerID matchs parcel owner or it is in the access list. option OS_NPC_OBJECT_GROUP it still needed if access is by group (this option should also work with not owned NPC) NEEDS TESTING, may prove to be a bad solution 2016-06-28 23:30:04 +01:00
UbitUmarov
a08c354a07 fix NPCs OS_NPC_OBJECT_GROUP option. group ID needs to be set during creation, before scenepresence.CompleteMovement, set tittle just after it. 2016-06-28 18:14:30 +01:00
UbitUmarov
5143bbc9d6 mantis: 7936 replace httpServer_OpenSim.dll with a new one restoring some checks lost in last update 2016-06-28 14:01:16 +01:00
UbitUmarov
bc4e5d81b9 add PRIM_OMEGA to llGet(LINK)PrimitiveParams. This will not return same values as spec, because the way our targetomega works. ( only did minor testing) 2016-06-26 14:40:26 +01:00
UbitUmarov
71404be21d let llPlaySound() in HUDs send sound to owner without parcel restriction 2016-06-26 10:02:56 +01:00
UbitUmarov
8cb3787de8 mantis 7942: allow llTriggerSound on HUDs to send sounds to all. 2016-06-26 09:40:05 +01:00
Diva Canto
c34fcae3f3 Added a test for checking permissions in inventory items that are transferred. This is a work in progress. All permission assertions are commented for now. Will get back to this later when permissions are fixed by Melanie. 2016-06-24 12:27:45 -07:00
Diva Canto
758e1e2535 Mantis #7933: copy-paste bug in avn code. 2016-06-23 13:53:42 -07:00
Diva Canto
cec5682da9 Mantis #7937: don't send group info to NPCs 2016-06-23 12:10:50 -07:00
Diva Canto
b522f0916a Mantis #7934 and related: landing points and telehubs for gods. Added a new configuration variable LandingPointBehavior that can switch between what we're used to in OpenSim and the behavior in SL. 2016-06-23 11:44:59 -07:00
Diva Canto
1065a4c1e4 Replace the http server dll with the right pair dll + xml 2016-06-23 07:55:50 -07:00
Diva Canto
55a4d1cf44 Same change here too. 2016-06-23 06:41:26 -07:00
Diva Canto
13c9fe7923 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2016-06-23 06:39:15 -07:00
Diva Canto
648cf51411 Fix failing test 2016-06-23 06:38:34 -07:00
Melanie Thielker
a2e4beea86 Update HttpServer_OpenSim.dll to fix an inventory loading bug. 2016-06-23 15:20:07 +02:00
Diva Canto
56e2358ec2 Because there's no such thing as too much culture. (looking forward to .NET 4.5 to set this globally) 2016-06-22 20:31:01 -07:00
Diva Canto
cc9ff12988 Set culture also in object crossings. 2016-06-22 20:18:16 -07:00
Diva Canto
c94c929ec1 Amend to previous commit -- set the culture also on the receiving end. 2016-06-22 18:35:14 -07:00
Diva Canto
33efc91342 Mantis #7802: set culture to US English on the thread that does the agent crossing, not that it's async and needs to parse decimal numbers. 2016-06-22 18:10:12 -07:00
Diva Canto
1e213f5150 Mantis #7802: added debug message to diagnose the problem. 2016-06-22 15:55:39 -07:00
Diva Canto
94616510f2 Missing AsBoolean 2016-06-22 15:39:09 -07:00
Diva Canto
193a3afa64 Make a debug message less misleading. 2016-06-22 15:28:18 -07:00
Diva Canto
f8bd3d2f2e Mantis #7935: regression on transferring attachments over the HG 2016-06-22 11:52:53 -07:00
Diva Canto
0b32cf0e8f Can't do it do it this low in the stack. Attachments on teleports apparently rely on
State being != 0.
Revert "Mantis #7932: Some objects were being serialized with PCode=9 and State != 0 (meaning attachments). That should never happen."

This reverts commit f19199cf4a.
2016-06-22 06:21:23 -07:00
Diva Canto
74c79d1f88 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2016-06-21 20:28:44 -07:00
Diva Canto
f19199cf4a Mantis #7932: Some objects were being serialized with PCode=9 and State != 0 (meaning attachments). That should never happen. 2016-06-21 20:28:25 -07:00
Melanie Thielker
5c81e03738 Fix a dumb mistake 2016-06-21 01:49:47 +02:00
Melanie Thielker
8e40bb6fb7 Make some more modules inheritable 2016-06-21 01:46:38 +02:00
Melanie Thielker
9de8cefee5 Split IM handling so an inheriting module can cange names if required. 2016-06-21 01:20:21 +02:00
Diva Canto
34b308d5b6 Guard against multiple calls to SetOwnerId on one logical ownership change. 2016-06-20 16:02:37 -07:00
Diva Canto
bc0fc16f44 Still mantis #7929: apply next owner mask to the new owner, the group. 2016-06-20 15:32:22 -07:00
Diva Canto
359908fa88 Related to mantis #7929: "For sale" was not being accepted, because of permissions fail. This adds a new permissions check CanSellGroupObject. THIRD-PARTY PERMISSIONS MODULES TAKE NOTE OF THIS NEW EVENT. 2016-06-20 10:08:15 -07:00
Diva Canto
623a2f859f Mantis #7929: objects deeded to the group were loosing some important properties. This makes the "For sale" be visible, but is not the end of the story. 2016-06-20 10:05:17 -07:00
Diva Canto
ff65248b9c Removed a couple of verbose messages 2016-06-19 20:13:32 -07:00
Diva Canto
8d99fe095a Mantis #7920: group info was not being updated in many situations. (regression) Putting back the heavy messaging. 2016-06-19 17:35:11 -07:00
Diva Canto
4f3da0a643 AgentGroupData was being sent by both UDP and EQ -- an overkill. Turn off UDP messaging. 2016-06-19 16:28:27 -07:00
Diva Canto
76ab1ed10c Restored sending group membership data via EventQueue -- this had been a regression. Took the opportunity to refactor that code, so that both Groups V2 and XmlRpcGroups can use the same function. 2016-06-19 16:27:12 -07:00
Diva Canto
d51fe01ed8 Mantis #7915: bring XmlRpcGroups/GroupsModule.cs up to speed with Groups V2 2016-06-19 15:15:57 -07:00
Diva Canto
a9fb3d0e18 Minor -- deregister an event handler in Groups V2 2016-06-19 15:14:50 -07:00
Diva Canto
ea3fe90ddb Mantis #7928: show grid size and show regions now working. Integers were being overflown. 2016-06-19 13:57:01 -07:00
Diva Canto
12b73603cc Still related to mantis #7917, parcel prims info. Now sending the correct numbers for "Simulator primitive usage" related to the parcel owner, not the entire region. 2016-06-19 09:17:04 -07:00
Diva Canto
ce7fa728ef Mantis #7917: regression on prim limits module. 2016-06-18 22:07:01 -07:00
Diva Canto
206faf0218 Guard against occurring null ref. 2016-06-18 17:00:15 -07:00
Diva Canto
fe1f01defb Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2016-06-17 12:40:41 -07:00
Diva Canto
8a070f16dd Mantis #7848: something wrong with a data field in Groups V2 2016-06-17 12:40:04 -07:00
Melanie Thielker
ed168473af Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-06-16 01:48:27 +02:00
Melanie Thielker
d2f61f5320 Also make the HGUserManagementModule more amenable to subclassing. 2016-06-16 01:47:52 +02:00
Melanie Thielker
f800f5ba57 Make the UserManagementModule inheritable 2016-06-15 16:51:02 +02:00
Diva Canto
e0a82a82de "reverting" the keep alive changes brought in from avination, to check if that's what's making osgrid fail. This is not really reverting, it's more manually resetting some places (not all) where keep alive is set. 2016-06-14 08:58:37 -07:00
Diva Canto
4be4e98525 Revert "Add a few more debug messages to diagnose problems in OSGrid's proxy use"
This reverts commit 2d2414adcf.
2016-06-13 20:40:47 -07:00
Diva Canto
1e9a944633 Revert "More debug to diagnose osgrid"
This reverts commit b5f29e93f6.
2016-06-13 20:39:52 -07:00
Diva Canto
b5f29e93f6 More debug to diagnose osgrid 2016-06-13 20:35:40 -07:00
Diva Canto
467de7a2f0 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2016-06-13 18:04:50 -07:00
Diva Canto
2d2414adcf Add a few more debug messages to diagnose problems in OSGrid's proxy use 2016-06-13 18:04:28 -07:00
Melanie Thielker
cdfbf78d07 Fields should be protected unless private is required 2016-06-14 01:27:48 +02:00
Melanie Thielker
68c73951ef Make the LLUDPServerShim inheritable. There is absolutely no reason for
this to be sealed!
2016-06-14 01:21:47 +02:00
Melanie Thielker
141205532b Make chat and instant message modules fully subclassable 2016-06-14 00:03:40 +02:00
Diva Canto
3ef5e1a24b Mantis #7923. EDIT BEAMS ARE BACK! 2016-06-12 22:01:36 -07:00
Diva Canto
c2e63e807e Mantis #7861. llEdgeOfWorld not working. Two reasons: (1) edge was being filled but not used; (2) region size was being ignored when computing the neighbors' coordinates.
Not sure if this is the intended semantics of this function, but it made sense in my varregion test with neighbors all around except in the South.
2016-06-12 14:48:30 -07:00
Diva Canto
d0c65d15dc Still mantis #7858: send kill object / update to child agents too 2016-06-12 14:29:30 -07:00
Mandarinka Tasty
634d85a30d Detection of Cylinder and Prism for flexi prims
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Diva Canto <diva@metaverseink.com>
2016-06-12 13:58:20 -07:00
Diva Canto
42a9afdc43 Mantis #7858: DeleteSceneObject done slightly differently. ProcessEntities now checks whether the objects have been deleted and, if so, sends an extra kill object packet, in order to compensate for potential race conditions encountered by the first one.
Note: I still cannot reproduce this problem, but I was able to emulate it by adding an artificial delay on ProcessEntities, which did, indeed, result in objects not being deleted. This fix fixed my emulated scenario.
2016-06-12 12:23:52 -07:00
Robert Adams
9ebdae8676 Restore SendAgentGroupDataUpdate() call in GroupsModule.cs.
Restore linkage to OnAgentClosed since the merge solved the reference
   problem by looking up the agent.
This should address Mantis 7915 and 7920.
2016-06-11 12:42:42 -07:00
Diva Canto
53d8b8a83f Mantis #7874: parcel properties not being updated upon avatar entering new parcel. Root cause: update of the avatar's current property was being made too soon. 2016-06-11 10:23:07 -07:00
Diva Canto
1468ee9179 Mantis #7858. This is s shot in the dark, because I cannot reproduce the problem. Removed what seemed to be redundant kill object calls that weren't there in 0.8.2 -- kill object is already being called in DeleteGroupFromScene. 2016-06-11 09:38:19 -07:00
Diva Canto
8e10963f45 Mantis #7919: fatal exception on LoadImageURLModule 2016-06-06 09:55:25 -07:00
Diva Canto
7d6adeedf5 Fixed a merge issue 2016-06-06 08:41:08 -07:00
Diva Canto
c4c3163db9 Don't copy assets to foreign asset servers when the objects are being deleted
Conflicts:
	OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
2016-06-06 08:37:15 -07:00
Melanie Thielker
48915377a6 Correct spelling and grammar, thanks Mata Hari 2016-05-30 19:04:19 +02:00
Mandarinka Tasty
77af32cdbf Enhancement of osRegionRestart
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2016-05-30 15:58:39 +02:00
Melanie Thielker
bcee4e3772 Fix a line deletion that should not have been deleted 2016-05-23 19:33:36 +02:00
Melanie Thielker
08bd80f5f4 Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-05-23 19:20:05 +02:00
Jeff Kelley
527ea6af02 Fixed discrepancy between code and ini symbols. 2016-05-23 19:19:36 +02:00
Melanie Thielker
775a657bb1 Addressing #7903. Fix legacy sit offsets to use legacy computation.
New offsets of course still use the correct math.
2016-05-23 19:18:24 +02:00
Diva Canto
057d1b2a6e Minor improvement over the previous commit -- make sure the code exists in the FolderType enum 2016-05-16 21:57:19 -07:00
Diva Canto
9e21647011 Mantis #7878 -- Landmarks were not being created in HGSuitcaseInventory 2016-05-16 19:36:20 -07:00
Roger Kirkman
97a471cb35 Fix crash due to setting Thread.name after thread start.
Signed-off-by: Diva Canto <diva@metaverseink.com>
2016-05-12 17:42:42 -07:00
Melanie Thielker
1e44aba620 According to the SL wiki, estate managers can set parcels for sale. Make it sew. 2016-05-02 21:40:14 +02:00
Melanie Thielker
4bac95bf4a Change requirements for the LL god functions from CanRunConsoleCommand to IsAdministrator, a function that was not available when these were first coded and makes much more sense. 2016-05-01 20:33:47 +02:00
Melanie Thielker
59ed89769a Apply user specified default perms across the board, to items uploaded as well as items created and to rezzed prims in world.
This effectively removes the concept of "default permissions" from OpenSim
because all known modern viewers set the permissions flags on login.
Ancient abandoned viewers will now default to the SL defaults.
2016-04-29 22:36:56 +02:00
Melanie Thielker
d42de53dda Allow default permissions from the viewer to be applied to uploaded objects.
Make inventory items reflect coorect permissions immediately unstead of after relog
2016-04-29 21:23:32 +02:00
Melanie Thielker
bedebf9498 Prevent "Object->Take" from working on attachments. 2016-04-29 17:11:36 +02:00
Melanie Thielker
8ef34a1bc5 Fix incorrect SQLite syntax in Migrations 2016-04-28 17:15:08 +02:00
Melanie Thielker
a01f24e331 Replace the "land show" method with the better one from 0.8. 2016-04-28 16:13:23 +02:00
Melanie Thielker
995655c445 Make the SimulatorFeaturesModule nonshared as it ought to be from it's code structure. 2016-04-27 00:48:56 +02:00
Melanie Thielker
2c75be7f6e From information given my Mandarinka Tasty, add firing the detach event even for temp attachments 2016-04-27 00:35:30 +02:00
Melanie Thielker
cf87898358 Remove a remnant of the optionalmodules unit test that was removed earlier 2016-04-26 20:03:16 +02:00
Melanie Thielker
6771fb7d5d Reverse a comparison, this is probably the cause of attach issues 2016-04-26 17:43:36 +02:00
Melanie Thielker
61a7566381 Fire detach events even in temp attachments. They don't really need it but keeping the tests happy 2016-04-25 20:27:23 +02:00
Melanie Thielker
8f668ec888 Stop serializing and storing assets for objects that were never rezzed from inventory items. 2016-04-25 20:02:11 +02:00
Melanie Thielker
3637280aad Since the OptionalModules tests have been removed, also stop trying to run them 2016-04-25 20:01:12 +02:00
Vegaslon
46a62a37d1 Fix Temporary Attachments not being able to be detached by client
Signed-off-by: Melanie Thielker <melanie@t-data.com>
2016-04-25 19:44:15 +02:00
Geir Nøklebye
7aa3d4256e POSTGRES: Update database migrations to be in accordance with MySQL table definitions. Prerequisite for fixing PGSQLSimulationdata
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>  (mantis #7846)
2016-04-25 12:17:17 -04:00
Geir Nøklebye
b418033915 Updated the code to handle Agent Preferences. Thanks to TomDataworks for providing a final solution.
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>  (mantis #7610)
2016-04-25 12:15:34 -04:00
TomDataworks
e9b0f71575 Fix Mantis #7805, table handler needs to look for all unique constraints.
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>
2016-04-25 12:11:03 -04:00
Kevin Cozens
5ed0993845 Removed trailing whitespace in prebuild.xml 2016-04-25 12:10:09 -04:00
Geir Nøklebye
92035667ff Adding missing references to Prebuild.xml
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>  (last part of mantis #7843)
2016-04-25 12:08:43 -04:00
Geir Nøklebye
4b1cecf748 Update Prebuild.xml. There are no longer Test in OptionalModules
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>  (first part of mantis #7843)
2016-04-25 12:03:41 -04:00
Geir Nøklebye
b91cfcca2b POSTGRES: Added check for Heightfield not equal to Database NULL.. Mirrors OpenSim commit 50d738
Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>  (mantis #7845)
2016-04-25 12:01:36 -04:00
Melanie Thielker
6f13d1e3df Remove "f" (float) type markers that may have crept in through copypasta. 2016-04-15 15:58:46 +02:00
Melanie Thielker
28fb722612 CR safari. Remove gratuitious CRs in some files 2016-04-07 19:53:56 +02:00
AliciaRaven
4e5de888a7 Update LibOMV to latest versions. LibOMV commit hash 177ea9848a43e6df3b82f70aea4ac903ece1b2e3 2016-04-06 18:30:20 +01:00
AliciaRaven
ed9d4feef5 Include option for the HG version of FSAssets connector under HGAssetService in robust example ini 2016-04-05 22:53:27 +01:00
AliciaRaven
3ff19a8ac3 Fix missing id parameter in FSAssets database connector when updating Access time. 2016-04-05 21:52:28 +01:00
Kevin Cozens
2cfe848ceb Correct case in the names of the Avatar and Friends tables 2016-03-24 16:43:27 -04:00
Melanie Thielker
4cc954249d Mantis 7842 - remove another possible null dereference 2016-03-23 21:03:20 +01:00
Melanie Thielker
548b741130 Correct the case of the Presence table 2016-03-22 23:05:31 +01:00
Melanie Thielker
482daacea7 Add migration to add "active" column on PGSQL. UNTESTED! 2016-03-22 20:55:21 +01:00
Melanie Thielker
de109dbe92 Change casing on UserAccounts 2016-03-22 20:08:46 +01:00
Melanie Thielker
73e527fffc Fix some artefacts that came from merging the OSGrid code. 2016-03-22 20:01:22 +01:00
Melanie Thielker
e8b46023e4 Add osRequestURL and osRequestSecureURL with an options list.
Only currently supported option is "allowXss" which will send the needed
Access-control-allow-origin: * header to allow xss scripting against
the LSL http server.
2016-03-16 20:04:52 +01:00
Jeff Kelley
efa21156f3 Implement Access-Control-Allow-Origin for HTTP LSL server 2016-03-16 19:22:40 +01:00
Melanie Thielker
8e772fde7f Remove debug spam 2016-03-15 02:36:06 +01:00
Melanie Thielker
39f7c4a292 Expand on the comment on the new HTTP limit feature. 2016-03-14 16:11:37 +01:00
Jeff Kelley
41644bbfa9 Implement parameterization of HTTP_BODY_MAXLENGTH maximum as proposed in Mantis 7839. 2016-03-14 16:08:49 +01:00
Melanie Thielker
07b78a68fc Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-03-09 02:53:06 +01:00
Melanie Thielker
1697f3e0c2 Finish plumbing RezRestoreToWorld. 2016-03-09 02:52:45 +01:00
Melanie Thielker
43ca32150c Plumb RezRestoreToWorld from the client (part done) 2016-03-09 02:45:11 +01:00
Robert Adams
be43fc2234 BulletSim: use the new 'setAvatarSize' physics call introduced in 0.9.
This disables all the avatar size fudge numbers previously used by BulletSim.
If you have your region tuned to the old way, set
"[BulletSim]AvatarUseBefore09SizeComputation=true" in your INI files.
2016-03-06 14:23:06 -08:00
Robert Adams
b65a18ef3f Remove unused parameter ShouldUseFireAndForgetForCollisions. It was
used a while ago for testing but the execution code was removed.
2016-03-06 14:16:46 -08:00
Robert Adams
feb058f5c5 BulletSim: Send out avatar position update if velocity is now zero
and it wasn't zero last tick. This will prevent some avatar creeping.
Adjust BulletSim default avatar velocity zeroing so the avatar stops sooner.
2016-03-06 11:30:25 -08:00
Melanie Thielker
57b6398b71 Make mesh upload respect the same parts maximum as what is set for the
simulator
2016-03-05 22:30:02 +01:00
Melanie Thielker
110297793c Fix a couple of typos 2016-03-05 22:22:09 +01:00
Melanie Thielker
15b9601393 Introduce UseOsgridFormat config to select the OSGrid specific path name
generator
2016-03-05 01:26:28 +01:00
Melanie Thielker
74c2113bce Port the safer database access and the cure for "Chicken Bones" which
are artefacts that can be created by fsck and would make standard
FSAssets choke. These refinements were tested on OSGrid.
2016-03-05 01:17:42 +01:00
Melanie Thielker
c541b5cf43 Mantis 7833: Fix a condition where email sent from an object that is in
the process of being removed can cause a null reference
2016-03-03 17:08:56 +01:00
Diva Canto
ab12a14279 Pushed AssemblyVersion up to VersionInfo, so that we don't need to do global replace anymore. 2016-02-21 11:14:02 -08:00
Diva Canto
cd54bbe789 The old sqlite inventory data interface was still around and causing problems: the only part of the code using it was the data (sqlite) tests. Given that this old interface has been obsolete for several years, it has now been removed, including the tests. TODO: Writing tests for the new (ah!) inventory data interface. 2016-02-21 10:37:12 -08:00
Diva Canto
206b035571 SQLite: Removed obsolete migration file 2016-02-21 09:12:25 -08:00
Diva Canto
ee24b25165 Flatten migrations for sqlite
Conflicts:
	OpenSim/Data/SQLite/Resources/RegionStore.migrations
(Resolved)
2016-02-21 09:10:00 -08:00
Diva Canto
ded776c86b MySQL migrations: fix one last migration that had been left behind 2016-02-21 07:08:55 -08:00
Diva Canto
134e94a7e9 Flatten migrations for MySQL.
Conflicts:
	OpenSim/Data/MySQL/Resources/RegionStore.migrations
	OpenSim/Data/MySQL/Resources/UserAccount.migrations
2016-02-20 19:27:12 -08:00
Melanie Thielker
367b7d7e5e Merge branch 'master' of opensimulator.org:/var/git/opensim 2016-01-31 03:08:24 +01:00
Melanie Thielker
bb6866b474 Replace the new ODE lib with one built against GLIBC 2.12. It's not our
place to force people to upgrade their distro
2016-01-31 03:07:34 +01:00
UbitUmarov
170acd7d67 change parcel_owner_is_god configuration option from default from true to false, leaving only region_owner true by default 2016-01-30 15:42:59 +00:00
UbitUmarov
b34652e9eb accept mantis 7785 requests, at least until bullet can be also be used fix landing height. (could not test) 2016-01-26 21:42:46 +00:00
UbitUmarov
668ff1e12c make sure MaxRegionsViewDistance is lower than MaxDrawDistance 2016-01-26 20:55:00 +00:00
UbitUmarov
8981cba137 update OpenSimDefaults.ini 2016-01-26 20:52:09 +00:00
UbitUmarov
109723dc2d add option MaxRegionsViewDistance to control the maximum range to tell viewer to connect to Neighbour regions, since that is diferent from view range 2016-01-26 20:39:37 +00:00
Robert Adams
66be75556b BulletSim: increase default value of AvatarStopZeroThreshold as this reduces
the occurance of stopped avatar drifting in the viewer. Not sure why but this
is a short term fix while investigation continues.
2016-01-20 06:35:53 -08:00
Robert Adams
33af419050 BulletSim: make collision sounds work most of the time. Seems that collisions
usually stop  the collider so velocity is often small.
Also remove some chatty debug messages.
2016-01-19 22:09:51 -08:00
Robert Adams
ddd59fab5f BulletSim: add stationary suppression on AddForce application. This enables
small pushing of avatars (Mantis 7779).
2016-01-18 10:50:28 -08:00
Robert Adams
5ed90b3921 BulletSim: fix problem of not zeroing motion when stationary (drift problem from
Mantis 7813). Redo Z computations for movement. Clean up code to simplify
tests. Add function to suppress stationary tests unless velocity drops.
2016-01-18 10:48:10 -08:00
Robert Adams
35d4298be6 BulletSim: change method signatures for internal AddForce methods to remove
confusion about push forces. The latter is an external, physics engine interface
feature (the force parameter has a different unit if pushing vs adding force)
and that distinction is not used internally.
2016-01-18 07:02:48 -08:00
Robert Adams
fb57d31538 BulletSim: revert avatar stationary testing for having slight velocity.
This fix causes drift (Mantis 7813). This revision will rebreak pushing
(Mantis 7779) but drifting is bad and pushing will be fixed in future commits.
2016-01-18 07:00:50 -08:00
Robert Adams
b02f29300d Code cleanup to terse update sending as given in a patch in Mantis 7813.
Thanks tqlion!
2016-01-18 06:58:41 -08:00
Robert Adams
22501ea06d BulletSim: fix Mantis 7798: land collisions not working. 2016-01-10 16:42:23 -08:00
Robert Adams
d4e88f8883 BulletSim: tweaking so avatar can be pushed. In particular, llPushObject,
which called BSCharacter.AddForce, can now move a character.
2016-01-10 14:53:55 -08:00
UbitUmarov
151001c70b change muckwaddle name contributors.txt 2016-01-10 18:26:53 +00:00
UbitUmarov
6d112948fb update contributors.txt 2016-01-10 18:24:24 +00:00
TomDataworks
905dec5d23 Fix region data range selection in the PGSQL backend.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2016-01-10 18:05:08 +00:00
UbitUmarov
ee15c51ba4 add npc create option OS_NPC_OBJECT_GROUP. with it the npc will be created with the group of the object with the script, if that object owner is member of that group. This should allow parcel access by group to work now, and not much else. The groupTitle will also be set, it the region option NoNPCGroup is not active. 2016-01-01 23:41:25 +00:00
UbitUmarov
f8f28311bf stop avatar move to target on parcel ban enforce 2016-01-01 23:03:46 +00:00
Robert Adams
7831d219d7 Add locking around stats record fetch to resolve Mantis 7793. 2015-12-27 15:05:17 -08:00
UbitUmarov
e2517b51f8 ubMeshmerizer: remove some wrong faces still present in taper cases, some code cleanup 2015-12-26 21:38:36 +00:00
UbitUmarov
6427930a7e ODE lib: update the lib for linux 32bit and 64bit, this time without debug info. Thnx again Dan. (keep older close in case this fails 2015-12-26 02:29:53 +00:00
UbitUmarov
74c48d495b ODE lib: update the lib for linux 32bit. Thnx Dan. (keep older close in case this fails 2015-12-26 01:55:13 +00:00
UbitUmarov
f92deb65f8 fix cilinder and cone physics mesh 2015-12-26 01:49:30 +00:00
UbitUmarov
073877dcae ODE lib: update the lib for linux 64bit. Thnx Dan. (keep older close in case this fails 2015-12-25 19:33:38 +00:00
UbitUmarov
14250c3d84 ODE lib change: fix capsule - mesh faces double side collisions. Do double side collisions if at least two dimensions of the mesh are 1.5x the capsule height, otherwise do single side as before. SL and bullet do double Side always. Double side can cause instabilities in some cases. i only windows dev enviroment for the moment. to build for your enviroment: git clone git://opensimulator.org/git/opensim-libs. This maybe be very broken, let us know 2015-12-25 17:43:20 +00:00
UbitUmarov
65269f6f7f fix html encapsulation for MSIE was doing nothing 2015-12-25 14:34:02 +00:00
UbitUmarov
85a75ce0bc assume direct string.replace is good enought to avoid a stringbuild use 2015-12-25 14:16:47 +00:00
UbitUmarov
41078f8d51 try to implement HTTP_BODY_MAXLENGTH. Make it limit body input bytes. Read entire relevant input buffer before UTF-8 parsing, or it may fail. 2015-12-25 13:51:05 +00:00
UbitUmarov
e5f7856eaf Merge branch 'master' of opensimulator.org:/var/git/opensim 2015-12-25 10:44:59 +00:00
UbitUmarov
b7ea5c4967 a few code cosmetic changes 2015-12-25 10:43:51 +00:00
Diva Canto
52ebb3f2fb The configger tool hadn't been updated since the introduction of OpenSimDefaults! :0
It is updated now.
2015-12-24 10:05:59 -08:00
UbitUmarov
7430c629aa enable the upload region map texture asset for large regions for large regions that i had disabled, but with max size reduced to 512pixels. New viewers don't use this, but osGetRegionMapTexture needs it ( mantis 7787 ) 2015-12-24 11:20:46 +00:00
UbitUmarov
37cb24da60 add prim estimated center of mass correction also for tortured prims meshs. Not fully tested 2015-12-24 01:21:15 +00:00
UbitUmarov
24aa529715 fix avatar movetotarget that got broken with changes on significant movement. Do it all on scenepresence.cs, and not also on scene.cs. check distance to target only on X,Y if not flying or landing 2015-12-23 21:22:00 +00:00
UbitUmarov
5135214e5b physics landing: don't land on top of volume detectors 2015-12-22 13:23:08 +00:00
UbitUmarov
6437a94388 a few changes to physics new root avatar position height estimation 2015-12-22 00:06:17 +00:00
UbitUmarov
88a63ecc39 drop attachments to ground a bit in front of the avatar, not on his location 2015-12-21 18:13:07 +00:00
UbitUmarov
7081ef948c clean a bit 2015-12-21 17:56:12 +00:00
UbitUmarov
4b14ec3c45 add physics help on root agent arrival via some login types and if not under action of telehub or landpoint. will change land to the top of anything physics sees above ground up to 1024m above ground. Only works with ubOde (possible ode but untested). Feature testing... some results may be ugly. 2015-12-21 16:31:49 +00:00
UbitUmarov
0e99763e6b revert the setting of phantom flag on attachment drop to ground, since it can break nomod objects 2015-12-21 13:52:45 +00:00
UbitUmarov
52d7aca6a2 simplify avatar updates throotle control, this possible needs to get more complex again 2015-12-21 13:20:24 +00:00
UbitUmarov
827058e359 drop attachments to ground with phantom active. We should not do this, but for now there no better way to avoid nasty collisions. (large physical objects may still have bad collisions with ground on drop) 2015-12-20 11:57:52 +00:00
UbitUmarov
844266c4d5 change the return list of objects costs, sending a answer if none found 2015-12-20 11:43:27 +00:00
UbitUmarov
b31adde5fc BUG FIX on avatar position updates send control 2015-12-20 11:12:48 +00:00
UbitUmarov
a4f91e5064 do not change a attachment phatom state on crossings 2015-12-19 19:49:27 +00:00
UbitUmarov
01a27e8c71 establish a minimun for ReprioritizationDistance 2015-12-19 17:39:42 +00:00
UbitUmarov
48f6010a1c a more clean enforcement of BestAvatarResponsiveness (others aren't good at moment 2015-12-19 17:29:51 +00:00
UbitUmarov
e095f51b05 update the xmlrpcGroups http keep alive option, and coment 2015-12-19 15:29:51 +00:00
UbitUmarov
9a492258c9 reduce xmlrpcgroups error messages if its debug option is off. Disable keepalive by default 2015-12-19 15:24:43 +00:00
UbitUmarov
da1c347676 temporary assets are as local 2015-12-19 15:05:49 +00:00
UbitUmarov
b29ab1b2df adjust the checks for invalid asset IDs. changed upload fail detection 2015-12-19 15:03:22 +00:00
UbitUmarov
b2acef8aad remove the unused OBB physics parameters export, since they aren't actually usefull outside ubOde 2015-12-17 22:34:21 +00:00
UbitUmarov
56e28c6c27 fix silly bug: Dynamics are to apply to root prim not child 2015-12-17 19:02:46 +00:00
UbitUmarov
01b4b25cdb current priority code uses avatar position not camera, so fix reprioritizer. This may need to be reviewed in future.. it should be camera 2015-12-17 18:15:33 +00:00
UbitUmarov
ed74fb5da4 save a expensive call to CameraPosition 2015-12-17 12:24:37 +00:00
UbitUmarov
a4ed6111b0 change updates reprioritization control code. Do it under normal avatar updates timing and with a workjob not a timer issued thread. 2015-12-17 12:20:02 +00:00
UbitUmarov
3505ab759d dont bother another thread to try to send if there is no one to listen 2015-12-16 23:54:48 +00:00
UbitUmarov
19c551e815 fix test: scene update needs to run after the delay 2015-12-16 23:26:51 +00:00
UbitUmarov
764f270d34 revert last change and add delays on testing, since child updates now have time control, since they are heavy http connections 2015-12-16 23:13:10 +00:00
UbitUmarov
ddd067266b temporary remove the delay on first child updates 2015-12-16 22:43:31 +00:00
UbitUmarov
a5a31114b2 add the option to not display parcel ban lines 2015-12-16 22:22:26 +00:00
UbitUmarov
41ae6f06e0 several changes to parcels access control and scenepresence updates rates 2015-12-16 22:16:51 +00:00
UbitUmarov
1d131a0c33 make parcel bans do something on vehicles. Just a first code, far from good 2015-12-15 21:00:06 +00:00
UbitUmarov
b7155f5651 fix typo 2015-12-15 18:32:02 +00:00
UbitUmarov
9327bb2546 a few more changes on parcels location finding 2015-12-15 18:19:08 +00:00
UbitUmarov
a9e8bd2884 remove replaced code 2015-12-15 17:20:00 +00:00
UbitUmarov
c7b963df8f replace GetNearestPoint... funtions 2015-12-15 17:13:32 +00:00
UbitUmarov
9db987b6f9 some changes parcels AABB math etc 2015-12-15 11:46:50 +00:00
UbitUmarov
4805e91d39 dont round to nearest int when checking position in parcel since next high int can be on other parcel 2015-12-15 04:10:47 +00:00
UbitUmarov
2f7e9a97db rename a parameter 2015-12-14 14:07:30 +00:00
UbitUmarov
78794b1dfe bug fix 2015-12-14 14:06:17 +00:00
UbitUmarov
35b88b6580 removed unneeded funtions 2015-12-14 12:47:17 +00:00
UbitUmarov
e37e8c3bdf on join parcels, keep the information of the larger parcel, since thats how its expected now 2015-12-14 12:29:00 +00:00
UbitUmarov
2a354f6c28 calculate land startpoint, endpoint and center estimate when it is updated, it not every time they are needed 2015-12-14 11:57:24 +00:00
UbitUmarov
ca6b5fc80d taint prim count when join or subdivide parcels 2015-12-13 18:22:46 +00:00
UbitUmarov
736bcc70fe change default landpoint type to anywhere (direct) 2015-12-13 18:07:40 +00:00
UbitUmarov
6c5005aa3b several changes to telehubs, LandPoint and land access 2015-12-13 16:59:01 +00:00
UbitUmarov
36e53b0e03 fix: do tell and log denied access to estate 2015-12-13 12:42:15 +00:00
UbitUmarov
5d6da6bb35 fix: if no groups module, deny access 2015-12-13 12:14:31 +00:00
UbitUmarov
f3c03aaa62 several changes to region and land access control - this may be a bit broken now 2015-12-13 11:31:06 +00:00
UbitUmarov
79945cff7c improve a bit llpushobject on avatars using bullet, but force is ignored a few seconds after a movement comand. RAdams plz take a look 2015-12-12 20:52:12 +00:00
UbitUmarov
819fe96503 invalidate LandPoint on land subdivide 2015-12-12 17:32:59 +00:00
UbitUmarov
4d493dd32e make sure land access/ban lists are active when changed by new viewers 2015-12-12 15:40:09 +00:00
UbitUmarov
3781c486c6 fix land access/ban list sending for new viewers 2015-12-12 13:05:24 +00:00
UbitUmarov
0934e1cf71 add IsEstateManager check to Permissions 2015-12-12 10:03:07 +00:00
UbitUmarov
5c39d9790e change vivox url from https:// to http:// still another 2015-12-11 19:50:22 +00:00
UbitUmarov
6ea43d6014 change vivox url from https:// to http:// missed several 2015-12-11 19:48:50 +00:00
UbitUmarov
b63a7d7705 change vivox url from https:// to http:// (merge issue) 2015-12-11 19:44:42 +00:00
UbitUmarov
b35d3a3134 fix backup control flag, still a bad merge effect 2015-12-11 02:06:32 +00:00
UbitUmarov
6de7da467a keep SOG reference to root part since two many things depend on deleted SOGs not being deleted 2015-12-10 17:04:39 +00:00
UbitUmarov
62009ba9c0 remove some SOG references on delete to help GC 2015-12-10 14:00:43 +00:00
UbitUmarov
bdab95f1d2 dont try to process packets for deleted clients 2015-12-09 22:57:13 +00:00
UbitUmarov
bbe55df6c6 disable useless and totally wrong incoming Pools 2015-12-09 22:32:48 +00:00
UbitUmarov
42e5ee4c4b don't keep a reference to config, if not in use 2015-12-09 21:35:20 +00:00
UbitUmarov
4ad7160e05 minor cleanup 2015-12-09 17:20:51 +00:00
UbitUmarov
f7a29ad8b5 minor cleanup 2015-12-09 16:42:24 +00:00
UbitUmarov
ce44ce447b coment out odd DoubleQueue class code 2015-12-09 16:30:45 +00:00
UbitUmarov
8314987474 tick region health a bit faster 2015-12-09 16:27:59 +00:00
UbitUmarov
3ca4b6f319 fix the queue type in use 2015-12-09 16:26:03 +00:00
UbitUmarov
eccec66359 fix the queue type in use 2015-12-09 16:12:21 +00:00
UbitUmarov
447943302d add some missing GC.RemoveMemoryPressure() 2015-12-09 01:43:32 +00:00
UbitUmarov
7d8b783d31 send a full update on GroupResize, not a terse 2015-12-05 08:30:30 +00:00
UbitUmarov
a42db4d01e add pants and shirt to opensim library and fix some bodyparts uuids 2015-12-04 19:05:45 +00:00
UbitUmarov
61fbd7dceb add opensim BodyParts library 2015-12-04 18:34:31 +00:00
UbitUmarov
a7079c9227 add default eyes to default wearables, and revert previus bad commit 2015-12-04 18:29:31 +00:00
UbitUmarov
0d8f62405c add other Eyes asset id to xferupload defaults 2015-12-04 17:34:49 +00:00
UbitUmarov
0ae7b7e7e8 change handling of optional skirt baked texture 2015-12-03 16:21:43 +00:00
UbitUmarov
c903e3afd0 fix a 1m diference in regions view range estimations 2015-12-03 01:13:54 +00:00
UbitUmarov
d5e21a0ad2 remove failed CreateAgent from agent child regions list 2015-12-02 04:40:06 +00:00
UbitUmarov
e2796e6044 fix typo 2015-12-02 04:26:30 +00:00
UbitUmarov
ae3e288b14 createAgent needs to be sync 2015-12-02 04:24:58 +00:00
UbitUmarov
52a5688b6e minor: fix a log timing information 2015-12-02 02:43:52 +00:00
UbitUmarov
b1c4f69154 fix protocol version to max wearables mapping 2015-12-01 19:49:27 +00:00
Melanie Thielker
f42522b510 Fix protocol versions to wearables count mapping 2015-12-01 16:07:47 +01:00
Melanie Thielker
41072259e4 Change protocol version max to 0.6 2015-12-01 16:01:12 +01:00
UbitUmarov
e37c4e878c more changes on lookAt and RotLookAt; do something in attachments 2015-12-01 12:11:48 +00:00
UbitUmarov
a9e58d6175 some changes due to lookAt and RotLookAt 2015-12-01 10:15:38 +00:00
UbitUmarov
193b3079e4 Merge branch 'master' of opensimulator.org:/var/git/opensim 2015-12-01 09:43:05 +00:00
UbitUmarov
c277dbd66c fix a more few typos 2015-12-01 09:42:28 +00:00
Robert Adams
e4d0ae4f6e BulletSim: fix collision sound calculation. Modify some routines to make
collider and collidee clearer. Also fix (when did it break?) avatars not moving
if standing on a moving object. Now friction will move avatars if standing
on a disc or the top of a train.
2015-11-30 20:51:12 -08:00
Diva Canto
3be555e3f3 Replaced ICSharpCode.SharpZipLib.dll for the same reason 2015-11-30 20:02:29 -08:00
Diva Canto
b5a8a69c01 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-11-30 19:49:45 -08:00
Diva Canto
0d79805f65 Replaced the mono addins dlls with freshly compiled ones, because the existing ones may somehow been mutually inconsistent. 2015-11-30 19:49:10 -08:00
UbitUmarov
b453ef0fbd fix a few typos 2015-11-30 19:47:58 +00:00
UbitUmarov
fbef862aee add a few more known texture IDs 2015-11-30 19:45:44 +00:00
UbitUmarov
d952b267e9 Merge branch 'master' of opensimulator.org:/var/git/opensim 2015-11-29 18:28:14 +00:00
UbitUmarov
25f13f7c01 fix llLookAt in non-physical case 2015-11-29 18:27:34 +00:00
Diva Canto
55a9bbc6ce Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-11-29 09:48:48 -08:00
Diva Canto
1aa0234408 Trying to make http requests less slow, according to http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow 2015-11-29 09:48:17 -08:00
UbitUmarov
302d28625d change llLookAt math to master cleaner solution, assuming lAxis2rot does work 2015-11-29 14:36:09 +00:00
UbitUmarov
ca026ac735 fix the default shape type on upload, it is always convex 2015-11-29 00:19:25 +00:00
UbitUmarov
15f8a46216 let Bullet do collision sounds (RAdams plz fix the relative speed) 2015-11-29 00:02:46 +00:00
UbitUmarov
82e464cb8c let old ODE trigger collision sounds like ubOde 2015-11-28 23:44:53 +00:00
UbitUmarov
9928076d1a remove terrain height clamping left over the ushort format testing 2015-11-27 23:46:58 +00:00
UbitUmarov
f59350a1ee add a nasty global lock, ode.dll requires on multi regions per instance ( also make sure ninjaJoints are disabled 2015-11-27 22:50:28 +00:00
UbitUmarov
37d7576d67 add missing Xengine MinTimerInterval to opensim.ini.example 2015-11-27 19:25:56 +00:00
UbitUmarov
5aa1c0d328 coment out warnings that do a messed around number of threadpool workitens and number of active threads ( at least when a pool is in use) 2015-11-27 18:43:17 +00:00
Diva Canto
cade717b5f Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-11-27 08:24:39 -08:00
Diva Canto
5b7a585b4f Sometimes the viewer sends a null string as mapName; this made the client thread throw an exception with unexpected behavior for users (nothing happens). This commit gives it a sane default: it assumes we're looking for a position in the current region. 2015-11-27 08:22:30 -08:00
UbitUmarov
3304e52750 add a delay to consume other change messages on move and cross 2015-11-27 14:56:04 +00:00
UbitUmarov
f1bbc4d386 stop some requests processing when module as no scenes (there must be a better way to fix this) 2015-11-27 14:39:11 +00:00
UbitUmarov
bb0db96256 DeregisterRegion from grid earlier on close 2015-11-27 14:01:42 +00:00
UbitUmarov
e2fb600bf5 change Backup on scene close to Forced, and not dependent on last change time. 2015-11-27 13:56:57 +00:00
UbitUmarov
c5395cef74 remove thread Heartbeat from watchdog 2015-11-27 13:45:14 +00:00
UbitUmarov
9224b5d680 revert last change to watchdog timeouts, that should not be needed 2015-11-27 13:32:49 +00:00
UbitUmarov
baf8e762a6 change JobEngine stop code and add a extra check for thread removed on watchdog timeout checks 2015-11-27 13:28:10 +00:00
UbitUmarov
3029080d9b change threading on GetTexture and getMesh and WebFetch Modules. 2015-11-27 07:38:54 +00:00
UbitUmarov
f16d36627f change threading on GetTexture and GetMesh NonSharable region modules 2015-11-27 05:00:11 +00:00
Jak Daniels
c0e920c1ad Fix Region Max height in boundingSize parameters checking in ArchiverModule.cs to float.MaxValue .. as was changed in ArchiveReadRequest.cs in commit 71f5c2b856 A comparison of consistent 'default' values determines whether boundingBox check is true.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-27 00:16:08 +00:00
Melanie Thielker
9afe2b018f Mantis #7765: Add new ClampNegativeZ option. Defaults to false to restore prior functionality.
Avination code wasn't designed for deep building.
2015-11-26 17:29:50 +01:00
UbitUmarov
172bb05ec2 suspend the use of DisableSimulator, that is causing teleport and crossing issues 2015-11-25 04:13:13 +00:00
UbitUmarov
1484348d7f Merge branch 'master' of opensimulator.org:/var/git/opensim 2015-11-25 03:22:20 +00:00
UbitUmarov
583c874773 remove default of 60minutes on MapImageService Refresh time, forgotten from early merge debug 2015-11-25 03:21:38 +00:00
Melanie Thielker
774ac5e96b If no job engine is started at all, keep checking it's status from
bombing
2015-11-24 21:10:40 +01:00
UbitUmarov
6d5b405168 simplify DeliverChatToAvatars(..) ( hopefully not breaking it ) 2015-11-24 17:28:05 +00:00
UbitUmarov
a0c3297b37 again chat echos, check repeats uncondicionally 2015-11-24 15:12:39 +00:00
UbitUmarov
08d061d201 reset control even prior to use 2015-11-24 14:28:35 +00:00
UbitUmarov
f45905851a at end of teleport disable the sending simulator, not destiny 2015-11-24 14:01:51 +00:00
UbitUmarov
7cf2d261b3 reduce 'echos' on several regions per instance (mantis 7754) 2015-11-24 12:51:58 +00:00
UbitUmarov
19b96697a6 try not to use Process.HasExit that is broken in some mono versions 2015-11-24 11:22:40 +00:00
Diva Canto
5e4b16658b Flipped version to 0.9.0.0 2015-11-23 18:15:09 -08:00
UbitUmarov
87464b5039 remove a debug message 2015-11-24 02:03:38 +00:00
UbitUmarov
9d8fe7f3db revert previus commit 2015-11-23 23:10:02 +00:00
UbitUmarov
81eb9816a2 remove libomv detection/log from llLoginService 2015-11-23 23:03:16 +00:00
UbitUmarov
e9345479c4 remove warning on siting in phantom prims without sittarget 2015-11-23 22:11:27 +00:00
Jak Daniels
15af6265a1 Fixed some stupid math and checks on --bounding-origin and --bounding-size. Bounding origin can of course be negative if it needs to be as we're taking stuff from the (possibly rotated) source region. Bounding size must always be >=0 and <= destination region size.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-22 17:30:08 +00:00
UbitUmarov
f75d113230 change silly Monitor use 2015-11-22 08:40:55 +00:00
UbitUmarov
ec069edead change syncronization method 2015-11-22 08:31:54 +00:00
UbitUmarov
e28eecd0bf revert take the Monitor.wait out of the locks 2015-11-22 08:08:01 +00:00
UbitUmarov
1de096dffb coment out merge option on multiregion oar load i added 2015-11-22 08:00:58 +00:00
UbitUmarov
5c3f88b64d take the Monitor.wait out of the locks 2015-11-22 07:55:49 +00:00
UbitUmarov
b80cbf5060 a few more changes on Multiregion control file load 2015-11-22 07:18:11 +00:00
UbitUmarov
a6187db2a7 add a a missing monitor.wait if still not needed, mb in future 2015-11-22 05:44:06 +00:00
UbitUmarov
3be340cbf2 a few changes on Multiregion control file load ; load oar seems far from good 2015-11-22 05:42:13 +00:00
UbitUmarov
f6820959b7 add Monitor.wait on load 2015-11-22 04:49:01 +00:00
UbitUmarov
4349bde440 reduce noise before compare 2015-11-22 04:10:26 +00:00
UbitUmarov
6dcbd20cfa add merge option on multioar test 2015-11-22 03:58:07 +00:00
UbitUmarov
71f5c2b856 minor changes 2015-11-22 03:56:48 +00:00
UbitUmarov
541d2ce2cd don't use 'funny' Quaternions 2015-11-22 02:22:48 +00:00
Jak Daniels
0b216c37df Changes to Load Oar options and new code to support importing OARs with different Region sizes to the destination region.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-22 01:32:48 +00:00
Jak Daniels
cc992bf156 Changes to TerrainModule/ITerrainModule to support importing OARs with different Region sizes to the destination region.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-22 01:32:36 +00:00
Jak Daniels
7cac0ccbe3 Changes to TerrainChannel/ITerrainChannel to support importing OARs with different Region sizes to the destination region.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-22 01:32:08 +00:00
Jak Daniels
b23e5fd8b6 Changes to LandObject/ILandObject to support importing OARs with different Region sizes to the destination region.
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2015-11-22 01:31:48 +00:00
Shy Robbiani
01e7fa3095 row format fixed removed to allow creation of regions table
row_format=fixed is not supported by innodb and has broken the creation
of the regions table during the first startup of ROBUST. It must be a
relict from MyISAM. Also removed the probably inappropriate table
comment.

Signed-off-by: Kevin Cozens <kevin@ve3syb.ca>
2015-11-21 20:03:42 -05:00
UbitUmarov
88b3545ec3 add a missing override 2015-11-21 19:56:57 +00:00
UbitUmarov
c84334fc72 add a missing override 2015-11-21 19:53:14 +00:00
UbitUmarov
11342314e1 add thread allocation calls for new ode.dll (old ode) 2015-11-21 02:53:35 +00:00
UbitUmarov
0b36d4ea2f some cleanup, allow cast rays to collide with terrain within limited range (old ode) 2015-11-21 02:14:19 +00:00
UbitUmarov
3f4fdacb34 remove a warning 2015-11-21 01:55:17 +00:00
UbitUmarov
156fdd4908 remove some duplicate using statements 2015-11-21 01:49:31 +00:00
UbitUmarov
36426b0db2 remove some compile warnings increasing total number by 2 2015-11-21 00:49:43 +00:00
UbitUmarov
019d057563 stop the Vehicle AFTER fixing position not before, bc stop code also updates position (old ode) 2015-11-20 19:40:04 +00:00
UbitUmarov
395d160c41 stop a Vehicle on a failed region cross (or empty border) (old ode) 2015-11-20 19:11:26 +00:00
UbitUmarov
53895289a6 remove Ode.Net - missing file. ( old ode may be broken now) 2015-11-20 18:48:48 +00:00
UbitUmarov
8cc08b899c remove Ode.Net - missing files. ( old ode may be broken now) 2015-11-20 18:29:21 +00:00
UbitUmarov
25983c1ba9 remove the hard to maintain Ode.Net wrapper only in use by old ode 2015-11-20 18:25:56 +00:00
UbitUmarov
ad6080bb0b change ScriptStopStrategy to the default value co-op (mantis 7740 2015-11-20 15:48:17 +00:00
UbitUmarov
ca5ec4c33b make llAvatarOnLinkSitTarget(0) return UUID.Zero 2015-11-20 01:44:19 +00:00
UbitUmarov
4a0531244a change a log message from error to just Debug 2015-11-20 00:45:12 +00:00
UbitUmarov
98a00cbce5 ubOde: add threading related calls new ode.dll may need. Hope this doesn't break with current linux ode library 2015-11-20 00:37:41 +00:00
UbitUmarov
0c93159297 remove unused return value on DeliverMessageTo() 2015-11-20 00:09:56 +00:00
UbitUmarov
278687b1e8 remove duplicate object chat messages ( mantis 7745 ),fix llRegionSay, this are still merge issues 2015-11-20 00:01:13 +00:00
UbitUmarov
36f7e96392 clean code a bit 2015-11-19 15:02:12 +00:00
UbitUmarov
2e43343ca9 ClearPartAttachmentData before adding object to scene, not after 2015-11-19 14:45:39 +00:00
UbitUmarov
8505ca88dd work around some 'tests' errors: use one autoresetevent per scene 2015-11-19 02:46:25 +00:00
UbitUmarov
759fda0871 work around some 'tests' errors: reset the event at start of new test. 2015-11-19 02:43:49 +00:00
UbitUmarov
9c5acb3df4 work around some 'tests' errors: just a test 2015-11-19 01:43:33 +00:00
UbitUmarov
f242137e31 work around some 'tests' errors: add a DefaultPermitions module to sceneB 2015-11-19 01:18:34 +00:00
UbitUmarov
a4ed111de1 cleanup indentation 2015-11-18 17:45:56 +00:00
UbitUmarov
6dafce9a12 fix another variable number of wearable types issue 2015-11-18 17:35:26 +00:00
UbitUmarov
0fbb4f0067 work around some 'tests' errors: dont expect a particular http error response 2015-11-18 01:05:46 +00:00
UbitUmarov
059a09a684 add LegacySitOffsets option to configuration file 2015-11-17 18:34:22 +00:00
UbitUmarov
62cacff071 add LegacySitOffsets handling at LSL api 2015-11-17 18:17:11 +00:00
UbitUmarov
da5aad87bf start adding LegacySitOffsets option. TRUE will prevent the use of new math for the compensation of SL sittarget bug, and so not break content. (this is the main code change) 2015-11-17 17:41:09 +00:00
UbitUmarov
eab427e58b work around some 'tests' errors: UUID.Zero is a invalid ownerID - missing file 2015-11-17 09:00:18 +00:00
UbitUmarov
0991ad321a work around some 'tests' errors: UUID.Zero is a invalid ownerID 2015-11-17 08:58:00 +00:00
UbitUmarov
6c766f3ab4 remove unused parameter - missing file 2015-11-17 08:02:48 +00:00
UbitUmarov
f7f5aba597 remove unused parameter 2015-11-17 07:59:11 +00:00
UbitUmarov
cd29abf1ac work around some 'tests' errors: fix wrong parameters 2015-11-17 07:22:36 +00:00
UbitUmarov
81b7f5551c work around some 'tests' errors: sp attachments and appearance are not in sync 2015-11-17 06:52:03 +00:00
UbitUmarov
51d0087a49 work around some 'tests' errors: AgentGroupDataUpdate is udp 2015-11-17 06:42:45 +00:00
UbitUmarov
2ba14f82fe work around some 'tests' errors: a new event queue has a few null events 2015-11-17 06:23:57 +00:00
UbitUmarov
bbfeca4b0c work around some 'tests' errors: a new event queue has a few null events 2015-11-17 06:19:45 +00:00
UbitUmarov
16d158f2f1 work around some 'tests' errors: missing call to InventoryDeQueueAndDelete() 2015-11-17 05:49:39 +00:00
UbitUmarov
9566c000f2 work around some 'tests' errors: terrain effects limits changed 2015-11-17 05:25:08 +00:00
UbitUmarov
dd18c9f689 fix llRequestAgentData cache timeout 2015-11-17 05:14:54 +00:00
UbitUmarov
364082d0e8 work around some 'tests' errors: add a httpserver 2015-11-17 04:19:30 +00:00
UbitUmarov
1e87e90915 work around some 'tests' errors: allow sitTargetposition and orientation to be read from OAR on opensim, they are reset at avination, this may cause issues with old sits 2015-11-17 03:42:46 +00:00
UbitUmarov
4e74564caa work around some 'tests' errors: suspend TestllSetLinkPrimitiveParamsForAgent bc avatar sit math changed 2015-11-17 03:16:37 +00:00
UbitUmarov
d1737de8d2 work around some 'tests' errors: Coalesced objects handling has changed 2015-11-17 03:10:59 +00:00
UbitUmarov
8567ef3c40 work around some 'tests' errors: test for null cacheItems 2015-11-17 03:00:27 +00:00
UbitUmarov
4660c3076c work around some 'tests' errors: assets are modified by the test, on current code 2015-11-17 02:08:01 +00:00
UbitUmarov
ec0a16c559 work around some 'tests' errors: suspend sit on sittarget until im not 2 sleepy to fix the math 2015-11-17 01:53:44 +00:00
UbitUmarov
083b52173b work around some 'tests' errors: suspend undo-redo tests until new ones can be written to conform to new code 2015-11-17 01:44:15 +00:00
UbitUmarov
e15ebc091f bug fix: improve chat to child avatars. Still not good because of low resolution of child position updates 2015-11-17 01:31:06 +00:00
UbitUmarov
67aefb5e42 bug fix: StateSource of a SOG that is not a attachment is StateSource.PrimCrossing 2015-11-17 00:48:35 +00:00
UbitUmarov
895a57e426 work around some 'tests' errors: backup is async 2015-11-16 23:25:28 +00:00
UbitUmarov
9c5646a1ba work around some 'tests' errors: dont use references to objects that may have been deleted 2015-11-16 23:21:58 +00:00
UbitUmarov
52a3cc39e9 work around some 'tests' errors: fix math 2015-11-16 22:41:36 +00:00
UbitUmarov
3a65627481 work around some 'tests' error: internal GroupResize() doesn't heave Undo 2015-11-16 21:42:39 +00:00
UbitUmarov
10d5c80910 work around some 'tests' error: object is deleted on DeRezObjects, fix last commit side effects 2015-11-16 21:28:59 +00:00
UbitUmarov
ca4b7efd0f dont find parts of groups marked as Deleted 2015-11-16 21:11:22 +00:00
UbitUmarov
99ecf522cd work around some 'tests' error: object is deleted on DeRezObjects 2015-11-16 20:59:57 +00:00
UbitUmarov
250db8c82a work around some 'tests' error: object crossing is async 2015-11-16 20:34:23 +00:00
UbitUmarov
d19e4f598f deatach from backup on attachment 2015-11-16 20:12:40 +00:00
UbitUmarov
95a7a03052 work around some 'tests' error: normalization of <0,0,0> no longer causes argument exception, missed a few more 2015-11-16 19:00:53 +00:00
UbitUmarov
fd2784a037 work around some 'tests' error: normalization of <0,0,0> no longer causes argument exception 2015-11-16 18:50:15 +00:00
UbitUmarov
a2e376e993 work around some 'tests' error: contents of link folders are no longer sent 2015-11-16 18:43:11 +00:00
UbitUmarov
554f591eb6 work around some 'tests' errors 2015-11-16 18:19:54 +00:00
UbitUmarov
9b6633697b coment out excessive debug messages 2015-11-16 17:35:20 +00:00
Melanie Thielker
b2592ab132 Fix a merge conflict 2015-11-16 15:30:39 +01:00
Melanie Thielker
f93ce485b1 Merge branch 'master' into avinationmerge
Conflicts:
	OpenSim/Framework/AvatarAppearance.cs
2015-11-16 15:28:51 +01:00
UbitUmarov
53e0cd5534 handle diferente number of wearables on getting assets form another appearance 2015-11-15 10:04:35 +00:00
UbitUmarov
bcb27d4406 fix the protection for more Wearables than region suports 2015-11-15 08:16:52 +00:00
Diva Canto
f5799ff445 That didn't actually do anything for Simian, and it broke the locahost
case
Revert "Also restoring proper function for Simian external GetTexture functionality."

This reverts commit 366e81b977.
2015-11-14 08:10:27 -08:00
Diva Canto
554d4bad8d Fixed typos 2015-11-12 18:40:10 -08:00
Diva Canto
3515fda101 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-11-12 18:31:27 -08:00
Melanie Thielker
6f45c31ea0 Merge branch 'master' into avinationmerge 2015-11-13 03:24:23 +01:00
UbitUmarov
a2a71f0951 configuration options relative to last tow commits 2015-11-13 02:18:12 +00:00
UbitUmarov
75befda6df Add some values to the SimulatorFeatures cap's OpenSimExtras section relative to FPS statistics. This is transition code ported from avinationmerge. 2015-11-13 02:12:13 +00:00
UbitUmarov
752a1534f8 add the option Normalized55FPS. This is transition code ported from avinationmerge branch. (configration file changes will be commited later) 2015-11-13 01:12:37 +00:00
UbitUmarov
f037f8335e Merge branch 'master' into avinationmerge 2015-11-12 23:04:04 +00:00
UbitUmarov
55cce6aee0 minor: reset character collision flags, even if without a Body 2015-11-12 22:40:55 +00:00
UbitUmarov
9bd6befdeb add some safeguard checks 2015-11-12 21:24:14 +00:00
Melanie Thielker
8c7f475740 Add some values to the SimulatorFeatures cap's OpenSimExtras section:
SimulatorFPS: The actual optimal FPS of the simulator, un-fudged
SimulatorFPSFactor: The fudge factor that is applied to the stats sent to the viewer
SimulatorFPSWarnPercent: The percentage below which a lag meter should go to amber
SimulatorFPSCritPercent: The percentage below which a lag meter should go to red
To display the real values, a viewer would divide the reported FPS by the SimulatorFPSFactor and use that to calculate the percentage of SimulatorFPS. E.g. reported is 55fps, SimulatorFPSFactor is 5.0 and SimulatorFPS is 11.
2015-11-12 21:13:44 +01:00
Melanie Thielker
d3911606ef Move a call to RequestModuleInterface to a new scene callback function
because the current implementation would have always returned null
2015-11-12 20:34:09 +01:00
Ai Austin
c4d225ed50 Corrections to ini example files for standalones v2
Remove "currently unused" indicators for some parameters and add missing
"DestinationGuide" parameter in [GridServiceInfo] in
StandaloneCommon.ini.example as they do work for a standalone.
Regularize example URLs for externally provided web page and economy
helper information for uniformity. Correct mistake in reference to grid
wide DestinationGuide in override capability in OpenSim.ini.example.

Signed-off-by: Michael Cerquoni <nebadon2025@gmail.com>
2015-11-12 12:44:53 -05:00
UbitUmarov
649a3fc39c dont abort llDialog if buttons labels are longer than 24bytes, let udp truncate. This is not as spec but allows old scripts or with minor bugs to still work 2015-11-11 06:06:22 +00:00
UbitUmarov
adda0ab7d8 limit llDialog buttons text to 24 bytes (at lludp level) 2015-11-11 05:55:34 +00:00
UbitUmarov
b383cdae33 fix cut points of UTF-8 strings 2015-11-10 20:08:44 -08:00
UbitUmarov
2b937fdf40 reduce the small MTU violation sending terrain compressed patchs 2015-11-10 23:56:08 +00:00
UbitUmarov
188b2d84c1 increase the number of packets in Land queue that force terrain to delay patchs sending. 2015-11-10 23:50:00 +00:00
UbitUmarov
e096b49dd7 check if a packet can be sent imediatly without accounting it as sent on throttles when it is enqueued for later send. 2015-11-10 23:17:56 +00:00
UbitUmarov
40cb83b555 make m_minimumDripRate a bit larger than mtu. Add a bucket space check that does not consume avaiable space, so reducing bandwidth 2015-11-10 22:50:20 +00:00
UbitUmarov
f57a48a0fb fix silly bug 2015-11-10 20:34:19 +00:00
UbitUmarov
5bfd49404d start TerrainCheckUpdates on heartbeat thread, but do it async; fix a bug on slow terrain send limits check 2015-11-10 17:44:53 +00:00
UbitUmarov
b6c3592411 fix/add lldialog and llTextBox message size error checks, aborting if error as spec. (we can change this to silent truncate and execute the larger ones since llUdp now does it. But doing as spec now) 2015-11-10 15:08:08 +00:00
UbitUmarov
38aad774f7 change lldialog and llTextBox maximum message lenght to 512 bytes as specification. 2015-11-10 14:47:36 +00:00
UbitUmarov
ae9d40c7d0 add a StringToBytes variant that takes Maximum lenght as argument. 2015-11-10 14:29:13 +00:00
UbitUmarov
55b524aa74 fix: set Normalized55FPS default to TRUE 2015-11-09 15:37:57 +00:00
UbitUmarov
d17633f6c0 replace StatisticsFPSfactor that needed to be changed with FrameTime to a simpler true or false Normalized55FPS that is now TRUE by default. Incorrectly this commit also contains changes that should had their own commits: changes to heartbeat time control ant to gathering and calculation of related statistics. 2015-11-09 15:06:41 +00:00
UbitUmarov
3dc16b74af add StatisticsFPSfactor configuration option (fudge factor) with default of 1.0 (inactive), corresponding to current decision. rename MinFrameTime as FrameTime, change its value and ODE step time. Changed several related coments. (someone may need to translate them to proper english) 2015-11-08 04:38:58 +00:00
UbitUmarov
097c56330a rename MinFrameTime as FrameTime, since it is not a minimum but a target value; retune its value a bit so reported FPS is closer to integer value; change ode step size acording to reduce jitter in phys FPS; Make Statistics Scaling factor (fludge factor) configurable. (legacy default of 5.0 in code) 2015-11-08 04:28:46 +00:00
UbitUmarov
185d3bd39e change maximum angular velocity to a value derived from heartbeat rate and Nyquist. 2015-11-08 01:47:54 +00:00
UbitUmarov
eccc6f1081 fix wrong condition to set low angular velocity as Zero. 2015-11-08 00:24:54 +00:00
UbitUmarov
69fefd1d00 send the estimation of time dilation at packet build time, not the one at unknown past. 2015-11-06 21:27:42 +00:00
UbitUmarov
527ea37540 change OfflineMessageModule from new avination code to original master, for compatibility with current web servers php scripts. This may change after current test phase 2015-11-06 05:18:54 +00:00
UbitUmarov
f8efd00775 add a console/log warning about large physics meshs on ubOde that can have negative impact on region load 2015-11-05 16:57:48 +00:00
UbitUmarov
dc752e8d82 fix get/set parameters on avatars 2015-11-05 03:07:25 +00:00
UbitUmarov
89655b0baa apply OtakuMegane code changes to irc channel chat so some characters are not lost 2015-11-02 02:23:35 +00:00
UbitUmarov
baf5649b70 fix avatarAppearance wearables copy 2015-11-02 02:08:13 +00:00
Melanie Thielker
51e5204a67 Add forgotten file 2015-11-02 01:21:28 +01:00
Melanie Thielker
d02f566b49 Merge branch 'master' into avinationmerge 2015-11-02 00:45:48 +01:00
Melanie Thielker
6bb12ab975 Set wearables count to max legacy wearables for version < 0.4 2015-11-02 00:45:05 +01:00
Melanie Thielker
f88e4a1ec9 Plumb the rest of the context stuff. Well, what I see so far anyway 2015-11-02 00:23:38 +01:00
Melanie Thielker
3da0a318b3 Merge branch 'avinationmerge' of opensimulator.org:/var/git/opensim into avinationmerge 2015-11-01 23:40:54 +01:00
Diva Canto
aea86f30a0 Don't crash the sim if the map image is null. 2015-11-01 11:38:41 -08:00
Diva Canto
af7c002d52 Don't crash the sim if the map image is null. 2015-11-01 11:37:59 -08:00
Melanie Thielker
5f18f2ce6a More EntityTransferContext plumbing 2015-11-01 19:37:14 +01:00
Melanie Thielker
69585a4824 More plumbing of the EntityTransferContext (not yet complete) 2015-11-01 19:11:14 +01:00
UbitUmarov
29798cefcc Merge branch 'master' into avinationmerge 2015-11-01 04:12:17 +00:00
UbitUmarov
54e1d54fb5 fix more merge issues 2015-11-01 03:33:19 +00:00
UbitUmarov
24472c3b67 fix merge issues 2015-11-01 03:25:36 +00:00
UbitUmarov
72684592ba Merge branch 'master' into avinationmerge
Conflicts:
	OpenSim/Framework/AvatarAppearance.cs
	OpenSim/Framework/Servers/ServerBase.cs
	OpenSim/Framework/VersionInfo.cs
	OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
	OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
	OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
	OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
	OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
	OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
	OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
	OpenSim/Region/PhysicsModules/ConvexDecompositionDotNet/Properties/AssemblyInfo.cs
	OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs
	OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
	OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
	OpenSim/Services/HypergridService/GatekeeperService.cs
	OpenSim/Services/Interfaces/IAvatarService.cs
	OpenSim/Services/LLLoginService/LLLoginService.cs
2015-11-01 03:01:59 +00:00
Melanie Thielker
6510ba8a64 Plumb the special VeriableWearablesSuported field which we will
temporarily use to determine extended wearableness
2015-11-01 01:15:31 +01:00
Melanie Thielker
efcf0e4f2e Minor: Add an initializer to show what the default value would be. 2015-11-01 01:03:44 +01:00
Melanie Thielker
5f3b443c03 Remove an unneeded code path, it could never be reached. Ubit caught it
:)
2015-11-01 00:57:45 +01:00
Melanie Thielker
2198330142 This is the replacement fix for large regions and string version. 2015-11-01 00:40:13 +01:00
Melanie Thielker
6d0b45cd4e Revert "fix transfer protocol version in string format. These are not
fixes you are looking for..... (Jedi mind trick)

This reverts commit 19e5667451.
2015-11-01 00:35:27 +01:00
UbitUmarov
9ba288a2e7 fix typo reported on mantis 7735 2015-10-31 22:48:31 +00:00
UbitUmarov
af4ca8e80e fix internal support for non square regions 2015-10-31 21:58:40 +00:00
UbitUmarov
19e5667451 fix transfer protocol version in string format. Let that case have tests identical to new format (this still isnt for your babies keep them safe...) 2015-10-31 21:50:24 +00:00
Melanie Thielker
ea56f4f27c Introduce an EntityTransferContext carrying the version numbers to pass
to all interested functions. Should fix the varregion conditional.
Still a testing version, do NOT use in production!
2015-10-31 18:13:02 +01:00
Melanie Thielker
e8e0ba6d8f Remove testing cruft that is blocking the new protocols. Unit tests no
longer test TP v1 now.
TP v1 will be removed within 6 months anyway.
2015-10-31 17:22:27 +01:00
Melanie Thielker
dc6bdbf740 Put back the option of having asymmetrical protocol versions in
transfers
2015-10-31 16:57:24 +01:00
UbitUmarov
ed909f56da fix mantis 7734, Thanks Garmin for the report 2015-10-31 13:22:50 +00:00
UbitUmarov
1030d07f31 simplify new regions protocol version control. (May not work, and babies safety warnings still valid 2015-10-31 12:57:14 +00:00
UbitUmarov
9232876421 let silly tests override version on local connections 2015-10-31 02:05:11 +00:00
UbitUmarov
400c61cd60 fix teleport to to string version regions 2015-10-31 00:06:30 +00:00
Melanie Thielker
f0fd028ed9 Merge branch 'master' of opensimulator.org:/var/git/opensim 2015-10-31 00:06:34 +01:00
Melanie Thielker
dc6d9eadf3 Testing stage of the new versioning system. Use at own risk. May not
work. Will eat your babies. Yada. Yada.
2015-10-31 00:01:35 +01:00
UbitUmarov
dd9b06e3b6 fix mantis 7733, reverting setting of IsAttachment on first call to full check. Replace instead same simple IsAttachment tests by full checks 2015-10-29 22:14:11 +00:00
UbitUmarov
45ff7cec80 fix cut points of UTF-8 strings 2015-10-28 21:27:56 +00:00
UbitUmarov
8b1ae501b5 fix services handling of visualparameters, avoiding possible crashs (mantis 7732) partially appling code from avinationmerge 2015-10-27 18:39:33 +00:00
UbitUmarov
114ac59314 dont tell clients that we can edit a friend's attachments when we do forbid it 2015-10-27 01:20:21 +00:00
UbitUmarov
9e6d9e0436 friends rights to edit objects display on viewers fixed. This needs to be optimized in future 2015-10-27 01:17:32 +00:00
UbitUmarov
1982d72320 Make changes to a friend rights reach him on another sim; find on map does show the region. Issues: precise location on region still not avaiable and object edit permitions on viewers edit are not being updated (but are enforced by region). friends information is updated, and warnings are displayed. Only did minor testing... 2015-10-26 22:42:48 +00:00
UbitUmarov
6821ace3c6 add basic SendFindAgent() to lludp. Future use may require a list of pairs (X,Y). For now one pair is good enough. 2015-10-26 21:56:02 +00:00
UbitUmarov
8922d58f05 try fix IRC connector issue on mantis 7731 but with code a bit diferent from proposed patch. Also append '@irc' to nick on region messages, so message origin is clear 2015-10-26 18:00:01 +00:00
UbitUmarov
c3532ba876 set SOG.IsAttachment when doing a full check, so future gets see the right value 2015-10-25 19:59:05 +00:00
UbitUmarov
8d33ab903b merge issue: fix missing '/' 2015-10-24 22:48:31 +01:00
Diva Canto
6f69925c51 Removed invalid dependencies from prebuild (those dlls no longer exist) 2015-10-22 21:47:04 -07:00
Diva Canto
70b681d21e Removed invalid dependencies from prebuild (those dlls no longer exist) 2015-10-22 21:46:02 -07:00
UbitUmarov
28d4afbe3a replace objects scale clamp by a more readable clamp. Simplify GroupResize and let rescale factors < 1 also be checked for size limits, Set new scales directly not checking them again. 2015-10-23 01:39:53 +01:00
UbitUmarov
8ed17f745d let ode also finish internal representation of prim actors, before simulation 2015-10-22 18:03:49 +01:00
UbitUmarov
7cb6ecb9f5 Make physics engines finish internal representation of loaded prims before starting simulation so it does start for all at same time. Currently only in use by ubOde 2015-10-22 17:34:28 +01:00
UbitUmarov
7aaa84515f rename terrain for opensim and respective configuration flag that a future costumized ODE library may have 2015-10-22 16:20:19 +01:00
Diva Canto
afba4dc1ce Mark XAssetService obsolete and warn users. 2015-10-21 19:26:00 -07:00
Diva Canto
719c0d09ae Mark XAssetService obsolete and warn users. 2015-10-21 19:22:20 -07:00
Diva Canto
25552dda7d Fix an issue introduced in 70a46fe090. I accidentally deleted the entire [EntityTransfer] section instead of just a few variables in it. 2015-10-21 16:50:31 -07:00
Diva Canto
41b28550ad Fix an issue introduced in 70a46fe090. I accidentally deleted the entire [EntityTransfer] section instead of just a few variables in it. 2015-10-21 16:47:56 -07:00
UbitUmarov
e464bf5d82 recover scripts execution time stat i lost on previus changes. Behing async, this will not add with other time stats giving total frame time, as happens on other simulators. But its a good diag stat. 2015-10-21 18:34:06 +01:00
UbitUmarov
f84b75b1e0 update ubOde hashspaces levels 2015-10-21 01:50:28 +01:00
UbitUmarov
44deac4c1e we do not have prims with size 2^128, missing file 2015-10-21 01:41:04 +01:00
UbitUmarov
d44bb7d009 we do not have prims with size 2^128... 2015-10-21 01:39:32 +01:00
UbitUmarov
f6252e9037 also on OpenSimDefaults.ini 2015-10-21 01:13:41 +01:00
UbitUmarov
c37ea1910d fix or remove some wrong ODE configuration settings 2015-10-21 01:11:39 +01:00
UbitUmarov
deb4364f42 remove the use of Vector3 for axis locks on the rest of engines 2015-10-21 00:15:09 +01:00
UbitUmarov
ce5d5fc8dc the inertia matrix inversions and body inertia changes to implement axis locks need to be avoid, so use ubOde axis locks code. Hopefully this will not cause incompatibilities 2015-10-21 00:01:23 +01:00
UbitUmarov
747044f587 stop using a vector3 to store axis locks 3bit flags also in ode 2015-10-20 23:57:57 +01:00
UbitUmarov
f6891b36be stop using a vector3 to store axis locks 3bit flags in ubOde 2015-10-20 19:33:15 +01:00
UbitUmarov
0045398324 move ugly convertion of axis locks 3 bit flags to a wasted vector3 down to PhysicsActor. Let engines use LockAngularMotion with either Vector3 argument or byte 2015-10-20 19:00:26 +01:00
UbitUmarov
d8528a7ba0 add axis locks to sop serializer. Now they are also saved to inventory 2015-10-20 18:37:24 +01:00
UbitUmarov
3c69071145 also apply axis locks, when creating a prim physics actor 2015-10-20 18:21:13 +01:00
UbitUmarov
3e25430e3a store rotation axis locks in MySql and SQlite dbs ( others need to be updated also 2015-10-20 18:08:04 +01:00
UbitUmarov
52860a7d15 stop using a Vector3 to store 3bits 2015-10-20 16:55:18 +01:00
UbitUmarov
dfd60d6f71 STATUS_ROTATE are linkset flags and not prim 2015-10-20 15:37:43 +01:00
UbitUmarov
2718018cb8 update ODE windows DLL libraries to a modified version 0.13.1 r1902. Linux will be updated later if all goes well 2015-10-20 02:12:51 +01:00
Melanie Thielker
2b437f8d86 Let the initiator of a teleport or crossing know that we handle extra
wearables
2015-10-20 00:58:16 +02:00
Diva Canto
59b63b6406 On to 0.8.3!
Conflicts:
	OpenSim/Region/PhysicsModules/ConvexDecompositionDotNet/Properties/AssemblyInfo.cs
2015-10-18 21:51:49 -07:00
Diva Canto
839e239c99 Added warning in RegionCombinerModule about it being considered obsolete and encouraging people to switch to varregions. 2015-10-18 21:50:11 -07:00
Diva Canto
06d2508b96 On to 0.8.3! 2015-10-18 21:47:10 -07:00
Diva Canto
e6163c990e Added warning in RegionCombinerModule about it being considered obsolete and encouraging people to switch to varregions. 2015-10-18 16:59:47 -07:00
Diva Canto
7ab633461e Fixed merge conflicts
Clean up of simulation version, the number that rules the compatibility of teleports:
- It's not configurable anymore, it's fixed in code. Each number means an increase in features of the teleport procedure
- Its definition moved to the global VersionInfo class
As of now it's still 0.3.

Conflicts:
	OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
2015-10-18 16:24:33 -07:00
Diva Canto
70a46fe090 Clean up of simulation version, the number that rules the compatibility of teleports:
- It's not configurable anymore, it's fixed in code. Each number means an increase in features of the teleport procedure
- Its definition moved to the global VersionInfo class
As of now it's still 0.3.
2015-10-18 16:06:31 -07:00
Diva Canto
339e252cce The protocol version checking on the grid server connector seemed to have a bug. I think I fixed it. 2015-10-18 11:06:21 -07:00
Diva Canto
f7d8952946 The protocol version checking on the grid server connector seemed to have a bug. I think I fixed it. 2015-10-17 19:29:20 -07:00
UbitUmarov
a31e5e799e stop a object when making it not physical 2015-10-18 00:35:52 +01:00
UbitUmarov
24435cfe9a Fix wrong active angularlock detection (it was only burning cpu), stop trying to add a amotor to each child prim and stop using unnecessary trimeshcallbacks 2015-10-17 21:56:15 +01:00
UbitUmarov
e2d7e6290d fix GetTerrainHeightAtXY also on master. Fix wrong active angularlock detection (it was only burning cpu), stop trying to add a amotor to each child part and fix a typo. 2015-10-17 20:07:52 +01:00
UbitUmarov
8dcb4de53c fix GetTerrainHeightAtXY for large regions. Also change ode dispose() 2015-10-17 14:42:04 +01:00
UbitUmarov
f39e6bc482 bug fix. Some rare meshs reported as having +-infinity dimensions 2015-10-15 19:06:39 +01:00
Diva Canto
e14e432b50 More exception catching in ODE at shutdown. Not sure why the exception happens. 2015-10-14 17:57:13 -07:00
Diva Canto
073bdda4b8 Restored authentication in AssetServicesConnector. 2015-10-14 15:26:26 -07:00
Diva Canto
366e81b977 Also restoring proper function for Simian external GetTexture functionality. 2015-10-14 14:45:21 -07:00
Diva Canto
721db9418f Fixed Robust-bound GetTexture handler that had been knocked off with the new sim-bound handler that uses a Poll service. Rather than hammering both handlers into one single class, I'm splitting them into 2 classes, because they are considerably different. 2015-10-14 14:41:28 -07:00
Diva Canto
45b8e6c1a7 Fixed exception upon shutting down in plain ODE.
09:49:57 - [SHUTDOWN]: Ignoring failure during shutdown - System.NullReferenceException: Object reference not set to an instance of an object.
   at OpenSim.Region.PhysicsModule.ODE.OdeScene.Dispose() in f:\dev\opensim-core\OpenSim\Region\PhysicsModules\Ode\OdeScene.cs:line 4062
2015-10-14 09:56:23 -07:00
UbitUmarov
8d7fa62088 fix a typo.. 2015-10-14 04:06:17 +01:00
UbitUmarov
7deaad7368 bug fix, and make Mesh-Mesh and Mesh-Terrain collisions a lot softer 2015-10-14 02:32:51 +01:00
UbitUmarov
9ec9eee75f reduce jitter due to viewer interpolators on objects that are really almost at rest 2015-10-13 23:03:51 +01:00
UbitUmarov
2e2c1a1fcd change fps and dilation (still something not that usefull). make collisions a bit less explosive.., do changes on own time limited loop and not on simulation loop, ... 2015-10-13 23:01:54 +01:00
UbitUmarov
f360ddd28e rename UbitMeshmerizer class as ubMeshmerizer 2015-10-13 11:08:54 +01:00
UbitUmarov
8e333c953d in stats use real integration time, not the wanted one. Dont let stats calls overlap using a proper lock object 2015-10-12 11:29:13 +01:00
UbitUmarov
3d8384b696 detect a fully degenerated mesh and avoid using it and so crashing ubOde 2015-10-12 00:49:07 +01:00
UbitUmarov
af5ea18f33 use System.IO.Compression.DeflateStream for mesh decompression like master, since ACE zlib does seem to fail to decompress some meshs present at OSG, (possible same issue happens with map with option to draw prims) 2015-10-11 23:04:22 +01:00
UbitUmarov
88763178c5 display prim name, if unzip of selected phsyics mesh part fails on ubMeshmerizer ( thx Dan) 2015-10-11 20:17:58 +01:00
UbitUmarov
2b354902b5 fix the casting to Boolean of lsl types vector,quaternion,list and rotation, so that if(variable) does compile and work. key still requires a explicit compare to NULL_KEY 2015-10-08 06:27:37 +01:00
UbitUmarov
40dc2541ff change opensim.ini.example to reflect the changes to npc creation options 2015-10-08 02:45:24 +01:00
UbitUmarov
3a498b0637 change NPC restriction options default from restricted to all allowed, as master 2015-10-08 02:39:14 +01:00
UbitUmarov
7fb1063990 dont send of the contents of LinkFolders also on Multiple folder fetch. Outfits changes still seem to work, except FS that doesnt delete the links to previus outfits, as singularity does 2015-10-06 21:32:02 +01:00
UbitUmarov
aa64d3bb7c dont send of the contents of LinkFolders 2015-10-06 18:17:15 +01:00
UbitUmarov
24ca32d8a8 send DisplayNames dates in UTC and not region local time. send a next update date that can be parsed and make it also in future so name edition is blocked since we don't suport them. (singu fails to display date, and seems to fail converting utc to local time 2015-10-05 10:43:45 +01:00
UbitUmarov
2700231764 in llAttachToAvatarTemp() (TempAttachmentsModule) dont add to inventory, like master 2015-10-04 03:34:55 +01:00
Robert Adams
e1ce04de42 Implement an overridable implementation of PhysicsActor.SetVehicle()
that works for all physics engines.
BulletSim: implement an optimized version of SetVehicle() that still
  uses the vehicle code to do bounds checking but does it in one taint
  operation.
2015-10-02 18:35:02 -07:00
UbitUmarov
124602c6c2 reduce some diferences with master 2015-10-02 22:47:31 +01:00
UbitUmarov
d900d0112d put back ip check on llSetContentType 2015-10-02 18:55:09 +01:00
UbitUmarov
b8cb9d1bbb also on another location, plus a bit clean 2015-10-02 18:39:05 +01:00
UbitUmarov
de51b7af85 do group SetPos sync as master, script thread does need to wait for it to be done. This needs improvement, doing it async again with script thread waiting watching coop 2015-10-02 17:56:02 +01:00
UbitUmarov
bdd7ea06ff change llSetContentType to master version, but removing IP check 2015-10-02 17:45:48 +01:00
UbitUmarov
1af6ac4bfc remove unused method parameter master also removed 2015-10-02 17:44:19 +01:00
UbitUmarov
31873485d9 do not send DisableSimulator on teleport if agent is already returning 2015-10-02 02:42:25 +01:00
UbitUmarov
6ae7341e42 send DisableSimulator messages on closing childagents. Possible still not on at best timming, or on the right source files 2015-10-01 20:50:12 +01:00
UbitUmarov
6bc479fecd make bakes reception handle empty BakedTexture elements. But at same time stop sending them, only sending to Xbakes server items that do have a texture, like master does 2015-10-01 19:30:37 +01:00
UbitUmarov
2abe1ccc59 change GetNewRezLocation physics ray results processing 2015-10-01 14:47:32 +01:00
UbitUmarov
e110ca24cf remove a forgotten if that is actually only a statement 2015-10-01 14:37:24 +01:00
UbitUmarov
7e8544f26e fix missing clear of queued timer even and state transition flags on scripts reset 2015-10-01 05:20:04 +01:00
UbitUmarov
6df75a927c let hoverheight rest position be a falling state 2015-09-30 20:37:14 +01:00
UbitUmarov
aa3303e3af add get method on physics actors PIDHoverActive 2015-09-30 20:13:31 +01:00
UbitUmarov
f87e284ec2 first steps adding suport for llSetHoverHeight() called from attachments on ubOde. Sure needs work.. like sp motion control still assumes stopped and not falling state. Only very basic test on flat land done 2015-09-30 19:14:37 +01:00
UbitUmarov
4a2e6db344 add high level code suport for SetHoverHeight() called from a attachment, so in future physics engines can also suport it 2015-09-30 17:34:25 +01:00
UbitUmarov
d281ec5342 some fixes/changes on land send 2015-09-30 06:09:01 +01:00
UbitUmarov
0151c773e2 let sp know about scene before anything else on creation 2015-09-30 06:05:28 +01:00
UbitUmarov
5b7a3c703d clamp all draw distance changes within region limits 2015-09-30 05:57:02 +01:00
UbitUmarov
feb78b2910 add several options for NPC creation so abusive use can be reduced (restrictive by default) UNTESTED 2015-09-30 02:45:11 +01:00
UbitUmarov
1124d14eb0 remove some restrictions on NPCs creation 2015-09-29 22:15:56 +01:00
UbitUmarov
3e9b326fcc clean some spacing issues 2015-09-29 21:44:25 +01:00
UbitUmarov
0b21724fe4 try fix some whitespaces VS decided to change 2015-09-29 02:29:55 +01:00
UbitUmarov
f2c8f83215 add processing of AvatarGroupsRequest message that should be used to get other avatars group memberships, but keep it disabled since some viewers no longer suport it correctly and expect memberships in reply to avatar properties, so we need to keep wasting bandwith sending useless information when some viewers really only want avatarproperties 2015-09-29 01:43:49 +01:00
UbitUmarov
a580d945d1 remove groups handlers onClientClose also on groups V2 2015-09-28 21:03:20 +01:00
UbitUmarov
cf6856a8df remove groups handlers onClientClosed 2015-09-28 21:00:08 +01:00
UbitUmarov
f97807b53f let us see our online friends 2015-09-28 20:57:33 +01:00
UbitUmarov
028cbb7cbe remove a auxiliar vector no longer needed 2015-09-28 18:10:27 +01:00
UbitUmarov
ad58f9b17e recover a lost position check for mega regions 2015-09-28 17:55:35 +01:00
UbitUmarov
e0de76aa14 put back virtual declarations 2015-09-28 16:47:44 +01:00
UbitUmarov
fb69661bb9 ... ossl merge issue 2015-09-28 16:40:55 +01:00
UbitUmarov
fd20a9576d ... post merge issue 2015-09-28 16:03:10 +01:00
UbitUmarov
6ded1da9f2 ... merge issue 2015-09-28 15:49:22 +01:00
UbitUmarov
c4ef8984a3 clear merge issue 2015-09-28 15:21:23 +01:00
UbitUmarov
93af984e94 add missing handlers for preferences 2015-09-28 13:22:32 +01:00
UbitUmarov
6e12836d71 change copyright to opensim 2015-09-28 13:08:46 +01:00
UbitUmarov
380d1c1d5a change copyright to opensim 2015-09-28 12:58:23 +01:00
UbitUmarov
55d0425dfe add missing handlers for preferences 2015-09-28 12:47:29 +01:00
UbitUmarov
4c0ef5a0ef change version string 2015-09-28 12:37:12 +01:00
UbitUmarov
b22ad8a69b add missing Makefile from master, put me on contributors 2015-09-28 11:57:16 +01:00
UbitUmarov
c6f8b5d682 remove virtual declarations master doesnt have 2015-09-28 11:53:37 +01:00
UbitUmarov
dcd36d0c9b apply changes to xmlrcp groups to groups V2, compiles but not tested :( 2015-09-27 16:53:36 +01:00
UbitUmarov
04b32e1982 let SendAvatarGroupsReply fall back to UDP if no caps and make use of it 2015-09-27 07:07:40 +01:00
UbitUmarov
18536b4be6 add missing SendAgentGroupDataUpdate to llClientView 2015-09-27 06:38:19 +01:00
UbitUmarov
1e23b3482c AvatarGroupsReply message does not have ListInProfile fields 2015-09-27 06:21:38 +01:00
UbitUmarov
b269185031 several changes to xmlrpcGroups. Packets AgentData and AgentGroupData are private to the requesting agent, etc 2015-09-27 06:10:12 +01:00
UbitUmarov
238b32d95f in xmlrpcGroups send all groups on MakeRoot. this will slow down crossings even more, but viewers seem to need it now, something to review later 2015-09-26 19:17:59 +01:00
UbitUmarov
ae195632e9 add the Default Groups module lost in the merge 2015-09-26 18:18:29 +01:00
UbitUmarov
239dcaffb7 coment out some debug, clean a bit 2015-09-26 14:14:05 +01:00
UbitUmarov
05db03e809 fix unscripted sits without physics help 2015-09-26 03:14:06 +01:00
UbitUmarov
d0a7e5bd78 fix object rez on terrain, i broke adding physics assistance 2015-09-26 02:33:57 +01:00
UbitUmarov
0fb033e567 fix object crossings to other scene on same instance 2015-09-26 01:31:57 +01:00
UbitUmarov
07a8618c56 revert previus wrong commit 2015-09-25 21:43:51 +01:00
UbitUmarov
40ae9ec554 patch objects crossings for var regions, until region location is fully fixed 2015-09-25 18:38:52 +01:00
UbitUmarov
e6f675b81b rearrange source code 2015-09-25 17:41:50 +01:00
UbitUmarov
2b0587770a add butterflies to terrain 2015-09-25 05:46:06 +01:00
UbitUmarov
13b8b17b9a we still don't have extended wind and cloud neither do viewers 2015-09-24 20:55:39 +01:00
UbitUmarov
a6b8eb7bca some cleanup on terrain encoder 2015-09-24 19:11:17 +01:00
UbitUmarov
f484773447 save a few more bits per flat patch 2015-09-24 15:23:52 +01:00
UbitUmarov
58daecfccb don't mess ray direction.. 2015-09-24 06:57:53 +01:00
UbitUmarov
af34bfddd1 add physics assistance on placement of a new object. This may help on mantis 7727, but may still need more work 2015-09-24 06:46:07 +01:00
UbitUmarov
5ca610d56a bug fix, let ubODE see more than one mesh on cast ray 2015-09-24 06:32:40 +01:00
UbitUmarov
759789bc45 change console main help to match master 2015-09-24 02:07:30 +01:00
UbitUmarov
8fde2fb901 slow down terrain sending so other users of LAND queue do have a chance to send things 2015-09-24 00:35:06 +01:00
UbitUmarov
e441c9cac1 dont let http keepalive and context reuse be true 2015-09-23 23:59:50 +01:00
UbitUmarov
c83351b9c0 fix the DC term on flat patch encoding 2015-09-23 22:35:27 +01:00
UbitUmarov
63bc0b574f speedup flat terrain patchs encoding, plus a few minor changes. 2015-09-23 21:04:13 +01:00
UbitUmarov
592ba85b0a add Culture.FormatProvider on all casts to LSLString on Vectors and Quaternions. This may need better checking 2015-09-23 17:04:48 +01:00
UbitUmarov
9e183cbd30 fix for future non square regions 2015-09-23 03:31:23 +01:00
UbitUmarov
5f5dbfc264 same for old Ode 2015-09-23 01:50:59 +01:00
UbitUmarov
43ca70655f remove a odd floating offset on physical prims/terrain collisions 2015-09-23 01:42:24 +01:00
UbitUmarov
ccfb561e8d change the encapsulation of compressed land patchs in llUDP packets 2015-09-23 00:01:32 +01:00
UbitUmarov
778793d77f fix GetPacketsQueuedCount typos in last commit 2015-09-22 19:24:58 +01:00
UbitUmarov
ae70f61a64 let minimum wqburst be a bit larger than MTU 2015-09-22 18:56:03 +01:00
UbitUmarov
a8dc07ff5c removed a protocol breaking lludp debug option that no one should try, changed terrain send throotle to be by packets in queue, reduced odds of MTU violation on terrain send (still bad). Most UDP protocol implementations may not mind much, but our code still does 2015-09-22 18:39:59 +01:00
UbitUmarov
032958709b last merging of sog m_linkedAvatars into m_sittingAvatars - untested. 2015-09-21 21:49:51 +01:00
UbitUmarov
a6b8cc9887 replace LSL reference to sog GetLinkedAvatars 2015-09-21 21:38:50 +01:00
UbitUmarov
25677e4a1b try to remove Scenepresence dependence on sog m_linkedAvatars, sitting may still work 2015-09-21 21:31:01 +01:00
UbitUmarov
04800a7570 add missing sit check 2015-09-21 19:56:59 +01:00
UbitUmarov
c7b1d52e29 remove duplicated and breaking code 2015-09-21 17:59:44 +01:00
Kevin Cozens
b412db72be Fix a regression to GetSittingAvatars(). Return List<ScenePresence> once more. 2015-09-21 11:00:34 -04:00
UbitUmarov
a81a1865b5 coment out lludp debug things that only fill up the help screen 2015-09-21 12:13:59 +01:00
UbitUmarov
f272a023e2 SQLite db migration update 2015-09-21 12:07:17 +01:00
UbitUmarov
33b4077c2c revert my change to the range of greyscale image maps, setting it back to 0 - 127.5 so not to break loading of old files. There isnt a range that fits all needs anyway 2015-09-21 00:44:53 +01:00
UbitUmarov
fe5807cd09 fix terrain save greyscale mapping to 1:1 suporting standard 0-255m range and not only 0-127m. Jpeg format still using a non standard color encoded heightmap 2015-09-20 15:31:38 +01:00
UbitUmarov
56a4b5ba7a put back the hack to make viewers display map tags (now and then at least) that i had removed and do it also on the local region. Make parcel overlay a bit less transparent than i did before. 2015-09-19 21:30:09 +01:00
UbitUmarov
ba4d0c1c6f a few more changes to worldMap. Use ExpireCaches, cache remote mapItems requests, etc 2015-09-19 06:42:52 +01:00
UbitUmarov
87ad573ec2 MapBlockFromGridRegion and Map2BlockFromGridRegion are the same thing 2015-09-18 02:00:10 +01:00
UbitUmarov
4798cce390 sync remote responses for mapItens with the local ones, but sending all valid information, so later we can cache/throotle 2015-09-17 21:51:51 +01:00
UbitUmarov
ab18c801a9 dont block a region just bc it doesnt have the requested map item 2015-09-17 21:17:04 +01:00
UbitUmarov
f4093a04e7 dont create terrain map asset for V1 viewers on large regions again, but do create parcel overlay since current viewers seem to use it (or we are missing something elsewhere) 2015-09-17 21:11:59 +01:00
UbitUmarov
6bca0c9c9c recover bulletS fps math change lost in merge 2015-09-17 08:45:52 +01:00
UbitUmarov
812e808cee remove messages on agents cross fails that got merged 2015-09-17 08:18:35 +01:00
UbitUmarov
d767feafa4 generate maptile assets again, v2 do use at least the parcels overlay 2015-09-17 05:24:19 +01:00
UbitUmarov
f6c2e6e1a3 merge issues and a few more changes 2015-09-17 05:10:24 +01:00
UbitUmarov
133f3a41eb remove bad merge code.. 2015-09-17 01:43:10 +01:00
UbitUmarov
2f1eab2792 remove bad merge from master 2015-09-16 16:34:16 +01:00
UbitUmarov
9ac01010f4 change point of evocation of AgentHasMovedAway for HG 2015-09-16 04:32:09 +01:00
Kevin Cozens
8c5a2e1e70 Added migration for UserAccounts table. 2015-09-15 21:52:12 -04:00
UbitUmarov
2bd7bbd1cb restore some avn code, fixing for var regions 2015-09-16 02:25:12 +01:00
UbitUmarov
b9137e2dee avoid a null ref (that should not happen after last commit), also reduce use of thread jobs, where one is good enought 2015-09-15 22:30:39 +01:00
UbitUmarov
3906bb2749 fix missing check for viaHGLogin 2015-09-15 22:24:50 +01:00
UbitUmarov
19c5f9ce1d fix bad side efects of missing avination optional configuration 2015-09-15 21:33:26 +01:00
UbitUmarov
42954349e4 temporary reduce maxwearables, so teleport testing can be performed before other regions get updated 2015-09-15 16:48:04 +01:00
UbitUmarov
0a67cda224 remove redundant using(){} 2015-09-15 06:28:21 +01:00
UbitUmarov
2d88e4cf73 mute watchdog timeouts on world map work threads. They do wait for events for a long time 2015-09-15 04:56:26 +01:00
UbitUmarov
3bad55e1ef remove file OpenSimDefaults.ini.example no longer in use in master 2015-09-14 23:52:35 +01:00
UbitUmarov
67984ca273 remove coment asking to check ODEPhysicsSettings section. That was because of diferent setting for av_density for ubODE no longer needed 2015-09-14 23:47:05 +01:00
UbitUmarov
0f6c3fb242 my first commit 2015-09-14 23:37:39 +01:00
Melanie Thielker
f0fa0d67e4 Merge branch 'ubitworkvarnew' into avinationmerge 2015-09-14 20:08:11 +02:00
UbitUmarov
c2b05da4af add missing dll config file for linux 2015-09-14 18:48:54 +01:00
Melanie Thielker
c85df49af5 Merge branch 'ubitworkvarnew' into avinationmerge 2015-09-14 19:31:29 +02:00
UbitUmarov
5becc16acf try to improve vehicles crossing with Xengine. Lag seems main issue now, but needs testing, specially the fail cases, that most likelly need more work 2015-09-14 16:40:01 +01:00
UbitUmarov
6b54c741ca try to add a mysql migration to avn 2015-09-14 03:35:01 +01:00
UbitUmarov
ac6625f7b0 update ProtocolVersions 2015-09-14 00:30:14 +01:00
Melanie Thielker
0a23d1634d Change the actual versions allowed to connect, which is different from
the interface major version
2015-09-14 01:27:20 +02:00
Melanie Thielker
82105ba81d Change the actual versions allowed to connect, which is different from
the interface major version
2015-09-14 01:26:30 +02:00
UbitUmarov
a5aef4024d mels fixes to prebuild order 2015-09-14 00:14:05 +01:00
UbitUmarov
4386ee886d Merge branch 'ubitworkvarnew' of ssh://3dhosting.de/var/git/careminster into ubitworkvarnew 2015-09-14 00:05:25 +01:00
UbitUmarov
154e19b0e7 change interface version to 8, as core 2015-09-14 00:03:43 +01:00
Melanie Thielker
783aff9723 Bump Interface Version to 8 2015-09-14 00:36:47 +02:00
Melanie Thielker
9d1515efdb Make regions tolerant to newer regions with more werables.
Also, bump the interface version to 8
2015-09-14 00:35:31 +02:00
Melanie Thielker
93adf1ab55 Entries in prebuild.xml are order sensitive. Fix the compile break 2015-09-13 23:40:19 +02:00
Melanie Thielker
f24414c063 Remove the last proprietary copyright headers, insert BSD ones. 2015-09-13 21:03:38 +02:00
UbitUmarov
672f7468f7 change the names also on the assembyInfo files 2015-09-13 00:05:29 +01:00
UbitUmarov
209cb840a2 missing file... 2015-09-12 21:56:07 +01:00
UbitUmarov
caf298cda3 add entries the the ini.example files for ubODE 2015-09-12 21:46:40 +01:00
UbitUmarov
e9a56d5e19 rename Ubit physics modules 2015-09-12 21:38:26 +01:00
UbitUmarov
064aade4c1 remove a silly and not necessary List i added 2015-09-12 17:20:07 +01:00
UbitUmarov
280780d3bc let regionCache really find a varregion by a position 2015-09-12 15:27:36 +01:00
UbitUmarov
dfc142a50f try to be more friendly to HG 2015-09-12 14:37:07 +01:00
UbitUmarov
0eba5d25c3 revert validating Library textures. Those need to be on a grid assets or will not work anyway 2015-09-12 12:51:47 +01:00
UbitUmarov
8e920ac59d try to validate textures from library folder 2015-09-12 07:24:35 +01:00
UbitUmarov
118aff520e try to better merge avn and os fetchinventory and fetchinvdescendents 2015-09-12 06:10:52 +01:00
UbitUmarov
61ad58310b fix the typos that seem to matter so much to some :p 2015-09-12 02:21:27 +01:00
UbitUmarov
8621abf2b7 send a reply on UpdateInventoryItem with the transactionID viewer sent. Protocol seems to have also a callbackID on this, apparently ignored by viewers ( as possible the transactionID ) 2015-09-12 02:05:52 +01:00
UbitUmarov
410ae96d04 put back diva's cache with her recent fix but also avoid duplicated InventoryService.UpdateItem call in case of m_uploadState is complete. In that case CompleteItemUpload will do it 2015-09-11 22:26:05 +01:00
UbitUmarov
08187cb599 inventory mess return to the state before divas cache issue 2015-09-11 20:40:10 +01:00
UbitUmarov
af0febf6a7 inventory mess 2015-09-11 19:55:38 +01:00
Diva Canto
a6012a3fae Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-09-11 09:49:33 -07:00
Diva Canto
29aaf5564f Mantis #7720: AssetXferUploader was setting AssetID to UUID.Zero. Before that wouldn't matter (item would be a terminal object) but with the introduction of the item cache, it matters, because the object in the cache was being modified to have AssetID=UUID.Zero. Also keeping the item cache consistent when item properties change. 2015-09-11 09:48:51 -07:00
UbitUmarov
7841628313 change to avn fecthinventory and webfecth.. code 2015-09-11 16:25:46 +01:00
UbitUmarov
6a0465b70a remove diva's inventory cache since it seems to cause mantis 7720, broken items UUID. Guess it doesn't cover all paths 2015-09-11 04:46:15 +01:00
UbitUmarov
2bd8fb6b5a add a few terminating / in LSLhttp uris as core 2015-09-10 13:17:50 +01:00
UbitUmarov
82785f559e remove a avn thing before it gets into core 2015-09-10 13:00:30 +01:00
UbitUmarov
daf8a4d01d fix lost sending of initial terrain to child agents 2015-09-10 01:02:52 +01:00
UbitUmarov
b93412972e revert SynchronousRestObjectRequester timeout to miliseconds, and fix where it was wrong set in seconds 2015-09-09 23:17:18 +01:00
UbitUmarov
5e12bc452d minor clean, letting small classes be own module class 2015-09-09 19:03:31 +01:00
UbitUmarov
47aa8107fd let old ode also have a Module class 2015-09-09 18:53:24 +01:00
UbitUmarov
e1a8125b4f found core hack to fix modules interdependencies RegionLoaded is not that obvius 2015-09-09 17:55:46 +01:00
UbitUmarov
8571736ff3 split Module from its scene, so if not enabled there is no scene memory allocation. All physics modules need this ( if not others) 2015-09-09 17:15:04 +01:00
UbitUmarov
9a919bac3f demote ConvexDecompositionDotNet to a simple dll, i had made it a region module 2015-09-09 15:07:35 +01:00
UbitUmarov
52fb24ade5 retouch ubitode module 2015-09-09 14:27:21 +01:00
Melanie Thielker
e26d0ee40a Make sure the chat module doesn't deactivate just because the section
heading is missing
2015-09-09 05:40:39 +02:00
UbitUmarov
ece4088a45 add missing llSetVelocity stub 2015-09-08 21:53:52 +01:00
UbitUmarov
254008cd1f and now.. seems to work.. but does it really work? 2015-09-08 21:41:52 +01:00
UbitUmarov
6dc4c8321d properties folders 2015-09-08 20:44:20 +01:00
UbitUmarov
40fd7cbf74 a mess with Modules and Module 2015-09-08 20:03:54 +01:00
UbitUmarov
3780e98d36 more on compile.. 2015-09-08 18:54:40 +01:00
UbitUmarov
339f60e990 more on compile.. 2015-09-08 18:45:53 +01:00
UbitUmarov
ecc1969857 more on compile.. 2015-09-08 18:13:15 +01:00
UbitUmarov
e8d5f23fc4 opps my files? 2015-09-08 17:34:27 +01:00
UbitUmarov
5c619fe0ab opps my files? 2015-09-08 17:21:45 +01:00
UbitUmarov
d2d34a473d rename Ubitode 2015-09-08 17:17:09 +01:00
UbitUmarov
774c42e7fb fix some compile 2015-09-08 17:02:44 +01:00
UbitUmarov
31afc76fcf fix some compile 2015-09-08 16:51:42 +01:00
UbitUmarov
971b613d08 fix some compile 2015-09-08 16:47:31 +01:00
UbitUmarov
5b3e2ab9aa Merge branch 'mbworknew1' into ubitworkvarnew 2015-09-08 15:03:22 +01:00
Robert Adams
4dd17c4117 More 'everything is a module' merging.
Have most of UbitOde converted.
There are compile errors in OpenSimBase as the new modules stuff is not all there.
Removed ChOdePlugin as it's connection to OdePlugin was tangled.
2015-09-08 06:15:46 -07:00
UbitUmarov
29d78f7e3a add script events per sec stat, using the time report code, but ignoring the time for nowwq 2015-09-08 14:13:56 +01:00
Robert Adams
e5367d822b Merge of ubitworkvarnew with opensim/master as of 20150905.
This integrates the OpenSim refactoring to make physics, etc into modules.
AVN physics hasn't been moved to new location.
Does not compile yet.

Merge branch 'osmaster' into mbworknew1
2015-09-08 04:54:16 -07:00
UbitUmarov
c4c6fcf7ad fix missing proprieties get, etc 2015-09-08 12:43:54 +01:00
UbitUmarov
2a84ef861a improve old ODE prim region borders 2015-09-07 13:27:13 +01:00
UbitUmarov
7276a89ddd recover opensim m_sendTerrainUpdatesByViewDistance. if false do as opensim (slower since it depended on sending terrain as TASK). if true send by view range and also all terrain at arrival 2015-09-07 11:23:00 +01:00
UbitUmarov
abd6640453 allocate llRAW LookupHeightTable on demand and release it, saving a few 512KB of memory 2015-09-07 08:06:41 +01:00
UbitUmarov
3a8e76cdd1 restore terrain modifiers, left out earlier bc of merge errors, (untested) 2015-09-07 07:50:51 +01:00
Diva Canto
45046858a1 Typos in comments 2015-09-06 14:57:18 -07:00
UbitUmarov
cfcfa8f3d7 add lost admin_reset_land method 2015-09-06 21:46:30 +01:00
UbitUmarov
16025fa34b remove a forgotten cast to int 2015-09-06 20:28:59 +01:00
UbitUmarov
af440162f7 minor change, add a lock we had at avn 2015-09-06 20:22:44 +01:00
Diva Canto
3a72e755b9 Deleted access control spec from [LoginService] section of standalone config. It's in OpenSim.ini now under [AccessControl]. Backwards compatibility preserved. 2015-09-06 10:02:16 -07:00
Diva Canto
82ea4179da Clean up viewer-based access control specifications. 2015-09-06 10:00:20 -07:00
Diva Canto
4f208b6282 Related to previous commits: fixed namespace. 2015-09-06 09:31:35 -07:00
UbitUmarov
d9fafd9603 fix the missing initialization of the folish ProcessUnackedSends option 2015-09-06 17:12:31 +01:00
UbitUmarov
3a0137cb45 fix odd drawdistance control initialization 2015-09-06 16:36:30 +01:00
UbitUmarov
93b9a92990 add missing stub for llSetVelocity 2015-09-06 04:55:58 +01:00
Diva Canto
f928d41a27 Amend to previous commit: delete the corresponding AssemblyInfo's 2015-09-05 17:40:27 -07:00
Diva Canto
3cf07564b6 Moved the two region loaders into the RegionLoaderPlugin dll, therefore eliminating 2 top-level dlls that didn't make much sense. 2015-09-05 17:37:07 -07:00
UbitUmarov
94d13c6d22 dont store/upload map asset for large regions, ( needs testing) 2015-09-06 01:21:20 +01:00
UbitUmarov
c1a4786be0 still a missing stat ID 2015-09-06 01:01:31 +01:00
Diva Canto
5bfc2743c6 Deleted unused file. 2015-09-05 15:20:32 -07:00
Diva Canto
bba79424b6 Merge branch 'master' of ssh://opensimulator.org/var/git/opensim 2015-09-05 10:29:18 -07:00
Diva Canto
c2346a0823 Changed a couple of comments to be more generic 2015-09-05 10:28:44 -07:00
UbitUmarov
13b1c5dfce let ode suport var size regions
Signed-off-by: Diva Canto <diva@metaverseink.com>
2015-09-05 10:17:30 -07:00
dahlia
4b0dc6253c Best wishes everyone! 2015-09-05 01:58:59 -07:00
Diva Canto
2210c5807f Fixes a problem with Bullet physics when it is configured to run on a separate thread. 2015-09-04 16:33:07 -07:00
Diva Canto
d7f22fb2cc POSScene wasn't really a region module. Fixed now. 2015-09-04 15:48:59 -07:00
Diva Canto
a32187f53a Moved UserStatistics feature to OptionalModules too. 2015-09-04 15:28:51 -07:00
Diva Canto
49d19e3650 Moved DataSnapshot feature to OptionalModules too. 2015-09-04 15:17:53 -07:00
Diva Canto
f9a7099abc Moved RegionCombinerModule to OptionalModules. Removed it as its own top-level project/dll. 2015-09-04 15:12:36 -07:00
Diva Canto
d00f73c3a4 Deleted OpenSim.Framework.Communications. Moved its two remaining files to OpenSim.Framework. 2015-09-04 14:39:23 -07:00
Diva Canto
9005365115 Deleted old unfinished code under Framework.Communications that wasn't being used anywhere.
Also folded GenericAsyncResult into RestClient, since it is used only there. This is preparation to remove Framework.Communications entirely.
2015-09-04 14:14:53 -07:00
Diva Canto
1559fc42b6 Deleted unused interface 2015-09-04 13:45:52 -07:00
Diva Canto
cb79e580dc Fixed wrong path to Meshing dll 2015-09-04 11:27:39 -07:00
Diva Canto
218eb908be In SceneGraph, use the property PhysicsScene instead of the variable _PhysScene, so that it gets properly initialized before being dereferenced. 2015-09-04 10:54:04 -07:00
Diva Canto
9d7e310e21 Deleted commented code 2015-09-04 09:40:21 -07:00
Diva Canto
dac8edd5dd Transformed the LLUDP ad-hoc plugin into a region module. It works. 2015-09-03 15:59:06 -07:00
Diva Canto
0235e58fff Moved ExtendedPhysics from OptionalModules to Bullet project, because it's very much an optional Bullet feature. This way, Bullet doesn't need to depend on the OptionalModules dll. No changes in configs or behavior. 2015-09-01 09:20:20 -07:00
Diva Canto
9435405ca1 Deleted physics plugin classes.
More unit tests fixed.
2015-08-31 16:23:43 -07:00
Diva Canto
50e7e38f45 Physics refactoring: all unit tests pass. 2015-08-31 15:04:10 -07:00
Diva Canto
11194209df First commit where physics work as region module.
Moved all physics dlls out of Physics and into bin directly, so they can be found by the module loader.
Removed call to PhysicsPluginManager.
2015-08-31 14:09:15 -07:00
Diva Canto
134d4300f0 All physics plugins are now region modules. Compiles but doesn't run. 2015-08-31 13:02:51 -07:00
Diva Canto
49ab478d28 Fixed a namespace dependency. Also started preparing prebuild.xml for making physics region modules. 2015-08-31 09:41:00 -07:00
Diva Canto
3741edd1c7 Refactored Meshing modules:
- Moved ZeroMesher from OpenSim.Region.PhysicsModules.SharedBase to OpenSim.Region.PhysicsModules.Meshing
- Created subfolder for all Meshmerizer files, also in the same Meshing dll
- Made them both region modules, with ZeroMesher being the default one
This compiles but doesn't run yet.
2015-08-31 09:21:05 -07:00
Diva Canto
ce2c67876e More namespace and dll name changes. Still no functional changes. 2015-08-30 21:05:36 -07:00
Diva Canto
2c0cad6dd3 Renamed the namespaces too 2015-08-30 20:29:31 -07:00
Diva Canto
1d6b33bc2d Major renaming of Physics dlls / folders. No functional changes, just renames. 2015-08-30 20:06:53 -07:00
Diva Canto
5648eb7bd1 Moved instantiation of SceneCommunicationService object to inside the scene constructor. This was a left over from the original monolithic design of scene communications. The less the instantiators of scenes know about the scene's internals, the better. 2015-08-30 15:52:26 -07:00
2128 changed files with 263376 additions and 302220 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
*.lsl binary
*.dat binary
*.bmp binary
*.BMP binary
*.gif binary
*.ico binary
*.j2c binary
*.j2k binary
*.jpg binary
*.png binary
*.tga binary
*.tif binary
*.db2 binary
*.llm binary
*.nib binary
*.rtf binary
*.ttf binary
*.ogg binary
*.dll binary
*.exe binary
*.so binary
*.dylib binary
*.anim binary

62
.github/workflows/msbuildnet.yml vendored Normal file
View File

@@ -0,0 +1,62 @@
name: .msbuildnet6
on:
push:
branches: [ "master" ]
paths:
- '**.cs'
workflow_dispatch:
jobs:
build:
if: github.repository == 'opensim/opensim'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: shortsha
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: preBuild
run: bash ${GITHUB_WORKSPACE}/runprebuild.sh
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Build
id: build
run: dotnet build --configuration Release OpenSim.sln
- name: release
if: success()
run: zip -r LastDotNetBuild.zip bin ThirdPartyLicenses README.md CONTRIBUTORS.txt LICENSE.txt
- uses: softprops/action-gh-release@v1
if: success()
with:
tag_name: r${{ steps.vars.outputs.sha_short }}
name: LastDotNetAutoBuild
files: LastDotNetBuild.zip
- name: report push to irc if from main OpenSim repository
if: github.event_name == 'push' && github.repository_owner == 'opensim'
uses: rectalogic/notify-irc@v1
with:
channel: "#opensim-dev"
server: "irc.libera.chat"
nickname: osgithub
message: |
${{ github.actor }} pushed to ${{ github.repository }}
${{ join(github.event.commits.*.message, '\n') }}
dotnet compile: ${{ steps.build.conclusion }}
- name: manual report to irc if from main OpenSim repository
if: github.event_name == 'workflow_dispatch' && github.repository_owner == 'opensim'
uses: rectalogic/notify-irc@v1
with:
channel: "#opensim-dev"
server: "irc.libera.chat"
nickname: osgithub
message: |
${{ github.repository }}
dotnet compile: ${{ steps.build.conclusion }}

8
.gitignore vendored
View File

@@ -12,6 +12,9 @@
*.dll.build
*.dll
*.log
.idea
*.bak
*.lnk
# Ignore .user and .suo files as these are user preference specific
# http://stackoverflow.com/questions/72298/should-i-add-the-visual-studio-suo-and-user-files-to-source-control
@@ -31,6 +34,7 @@
*/*/*/*/*/bin
*/*/*/*/*/*/bin
*/*/*/*/*/*/*/bin
.vs/
addon-modules/
bin/Debug/*.dll
bin/*.dll.mdb
@@ -47,6 +51,7 @@ bin/ScriptEngines/*-*-*-*-*
bin/ScriptEngines/*.dll
bin/ScriptEngines/*/*.dll
bin/ScriptEngines/*/*.state
bin/ScriptEngines/Yengine/*
bin/*.maddin
bin/*.exe
bin/*.ini
@@ -58,6 +63,7 @@ bin/UserAssets
bin/assetcache
bin/maptiles
bin/bakes
bin/MeshCache
bin/estate_settings.xml
bin/config-include/CenomeCache.ini
bin/config-include/FlotsamCache.ini
@@ -93,7 +99,6 @@ TAGS
Makefile.local
bin/.version
compile.bat
addon-modules
OpenSim/Data/Tests/test-results/
OpenSim/Framework/Serialization/Tests/test-results/
OpenSim/Framework/Servers/Tests/test-results/
@@ -112,5 +117,6 @@ OpenSim/Tests/test-results/
test-results/
doc/html
doc/doxygen.error.log
bin/OpenSim.ini
*.patch

View File

@@ -1,23 +0,0 @@
^tailor.state.old$
^tailor.state.journal$
\.csproj$
\.csproj\.user$
\.mdp$
\.mds$
\.dll\.build$
^bin/Debug/.+\.dll$
^bin/.+\.db$
^bin/OpenSim\.ini$
^bin/OpenSim\.log$
^bin/estate_settings\.xml$
^bin/Regions
bin/.+\.dll.mdb$
bin/addin-db-
bin/.+\.dll$
bin/.+\.maddin$
Examples/.+\.dll$
^bin/.+\.exe
^(OpenSim|Prebuild)/.+\.(exe|exe\.build|exe\.mdb)$
^OpenSim\.(build|sln)$
^Prebuild/Prebuild\.(build|sln)$
.+~$

View File

@@ -1,274 +0,0 @@
<!-- -*- xml -*- -->
<!-- please leave the top comment for us emacs folks -->
<property name="nunitcmd" value="nunit-console" />
<!-- This target produces a source distribution of OpenSimulator -->
<!-- TODO: A few parameters still need to be tweaked after running this - need to do this automatically with sed or similar -->
<target name="distsrc">
<copy file="bin/OpenSim.ini.example" tofile="bin/OpenSim.ini"/>
<copy file="bin/config-include/StandaloneCommon.ini.example" tofile="bin/config-include/StandaloneCommon.ini"/>
<copy file="bin/config-include/FlotsamCache.ini.example" tofile="bin/config-include/FlotsamCache.ini"/>
<!-- delete files generated by runprebuild.sh which had to be run in order to generate the build file for this target-->
<delete>
<fileset basedir="OpenSim">
<include name="**/*.build"/>
<include name="**/*.csproj*"/>
<include name="**/*.dll.build"/>
<include name="**/*.pidb"/>
<exclude name="Tools/OpenSim.32BitLaunch/**"/>
<exclude name="Tools/Robust.32BitLaunch/**"/>
<exclude name="Tools/LaunchSLClient/**"/>
</fileset>
</delete>
<delete>
<fileset>
<include name="OpenSim.build"/>
<include name="OpenSim.sln"/>
</fileset>
</delete>
</target>
<property name="distbindir" value="distbin" />
<!-- This target produces a binary directory called distbin/ in OpenSim/bin which contains everything needed for binary distribution -->
<!-- For safety/laziness sake, we're going to take the approach of deleting known extraneous files here rather than
trying to copy across only the essential ones -->
<target name="distbin">
<delete dir="${distbindir}"/>
<copy todir="${distbindir}">
<fileset>
<include name="**"/>
</fileset>
</copy>
<delete dir="${distbindir}/OpenSim"/>
<delete dir="${distbindir}/Prebuild"/>
<delete dir="${distbindir}/%temp%"/>
<delete dir="${distbindir}/.nant"/>
<delete dir="${distbindir}/ThirdParty"/>
<delete>
<fileset basedir="${distbindir}">
<include name="compile.bat"/>
<include name="BUILDING.md"/>
<include name="Makefile"/>
<include name="nant-color"/>
<include name="OpenSim.*"/>
<include name="prebuild.xml"/>
<include name="runprebuild*"/>
<include name="TESTING.txt"/>
<include name="TestResult.xml"/>
<include name="bin/OpenSim.Server.ini"/>
<include name="bin/Regions/Regions.ini"/>
<include name="bin/*.db"/>
<include name="**/.git/**"/>
<include name=".gitignore"/>
<include name=".hgignore"/>
</fileset>
</delete>
</target>
<target name="test" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<!-- Unit Test Assembly -->
<!-- if you want to add more unit tests it's important that you add
the assembly here as an exec, and you add the fail clause later.
This lets all the unit tests run and tells you if they fail at the
end, instead of stopping short -->
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests">
<arg value="./bin/OpenSim.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.framework.tests">
<arg value="./bin/OpenSim.Framework.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.framework.servers.tests">
<arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.framework.serialization.tests">
<arg value="./bin/OpenSim.Framework.Serialization.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.serialization.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindencaps.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenCaps.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindencaps.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.scriptengine.tests">
<arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.scriptengine.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.coremodules.tests">
<arg value="./bin/OpenSim.Region.CoreModules.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.optionalmodules.tests">
<arg value="./bin/OpenSim.Region.OptionalModules.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.optionalmodules.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.framework.tests">
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.data.tests">
<arg value="./bin/OpenSim.Data.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.capabilities.handlers.tests">
<arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.server.handlers.tests">
<arg value="./bin/OpenSim.Server.Handlers.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.server.handlers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.services.inventoryservice.tests">
<arg value="./bin/OpenSim.Services.InventoryService.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.services.inventoryservice.tests)==0}" />
<delete dir="%temp%"/>
</target>
<target name="test-stress" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.stress">
<arg value="./bin/OpenSim.Tests.Stress.dll" />
</exec>
<fail message="Failures reported in stress tests." unless="${int::parse(testresult.opensim.tests.stress)==0}" />
<delete dir="%temp%"/>
</target>
<target name="test-perf" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.performance">
<arg value="./bin/OpenSim.Tests.Performance.dll" />
</exec>
<fail message="Failures reported in performance tests." unless="${int::parse(testresult.opensim.tests.performance)==0}" />
<delete dir="%temp%"/>
</target>
<target name="find-nunit">
<exec program="which" failonerror="false"
resultproperty="hasnunit2">
<arg value="nunit-console2" />
</exec>
<property name="nunitcmd" value="nunit-console2"
if="${int::parse(hasnunit2)==0}" />
<property name="nunitcmd" value="nunit-console"
if="${int::parse(hasnunit2)==1}" />
</target>
<!-- this is used for panda test execution -->
<!-- work in progress -->
<target name="test-xml" depends="build, find-nunit">
<mkdir dir="test-results" failonerror="false" />
<!-- Unit Test Assembly -->
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.tests">
<arg value="./bin/OpenSim.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.tests">
<arg value="./bin/OpenSim.Framework.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.serialization.tests">
<arg value="./bin/OpenSim.Framework.Serialization.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Serialization.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests">
<arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Servers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindencaps.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenCaps.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.ClientStack.LindenCaps.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.ClientStack.LindenUDP.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.scriptengine.tests">
<arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.ScriptEngine.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.coremodules.tests">
<arg value="./bin/OpenSim.Region.CoreModules.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.CoreModules.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.optionalmodules.tests">
<arg value="./bin/OpenSim.Region.OptionalModules.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.OptionalModules.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.framework.tests">
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.Framework.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.tests">
<arg value="./bin/OpenSim.Data.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Data.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.capabilities.handlers.tests">
<arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Capabilities.Handlers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.server.handlers.tests">
<arg value="./bin/OpenSim.Server.Handlers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Server.Handlers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.services.inventoryservice.tests">
<arg value="./bin/OpenSim.Services.InventoryService.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Services.InventoryService.Tests.dll-Results.xml" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.scriptengine.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.optionalmodules.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.services.inventoryservice.tests)==0}" />
</target>
<target name="doxygen">
<exec program="doxygen" workingdir="doc" commandline="doxygen.conf" />
</target>

View File

@@ -1,40 +1,89 @@
# git clone
get or update source from git
`git clone git://opensimulator.org/git/opensim`
# Building on Windows
Steps:
* runprebuild.bat
* Load OpenSim.sln into Visual Studio .NET and build the solution.
* chdir bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run OpenSim.exe
## Requirements
To building under Windows, the following is required:
# Building on Linux
* [dotnet 8.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Prereqs:
* Mono >= 2.4.3
* Nant >= 0.85
* On some Linux distributions you may need to install additional packages.
See http://opensimulator.org/wiki/Dependencies for more information.
* May also use xbuild (included in mono distributions)
* May use Monodevelop, a cross-platform IDE
optionally also
From the distribution type:
* ./runprebuild.sh
* nant (or !* xbuild)
* cd bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run mono OpenSim.exe
!* xbuild option switches
!* clean: xbuild /target:clean
!* debug: (default) xbuild /property:Configuration=Debug
!* release: xbuild /property:Configuration=Release
* [Visual Studio .NET](https://visualstudio.microsoft.com/vs/features/net-development/), version 2022 or later
### Building
To create the project files, run
`runprebuild.bat`
run
`compile.bat`
Or load the generated OpenSim.sln into Visual Studio and build the solution.
Configure, see below
Now just run `OpenSim.exe` from the `bin` folder, and set up the region.
# Building on Linux / Mac
## Requirements
* [dotnet 8.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
* libgdiplus
if you have mono 6.x complete, you already have libgdiplus, otherwise you need to install it
using a package manager for your operating system, like apt, brew, macports, etc
for example on debian:
`apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev`
### Building
To create the project files, run:
`./runprebuild.sh`
then run
`dotnet build --configuration Release OpenSim.sln`
Configure. See below
run `./opensim.sh` from the `bin` folder, and set up the region
# Configure #
## Standalone mode ##
Copy `OpenSim.ini.example` to `OpenSim.ini` in the `bin/` directory, and verify the `[Const]` section, correcting for your case.
On `[Architecture]` section uncomment only the line with Standalone.ini if you do now want HG, or the line with StandaloneHypergrid.ini if you do
copy the `StandaloneCommon.ini.example` to `StandaloneCommon.ini` in the `bin/config-include` directory.
The StandaloneCommon.ini file describes the database and backend services that OpenSim will use, and is set to use sqlite by default, which requires no setup.
## Grid mode ##
Each grid may have its own requirements, so FOLLOW your Grid instructions!
in general:
Copy `OpenSim.ini.example` to `OpenSim.ini` in the `bin/` directory, and verify the `[Const]` section, correcting for your case
On `[Architecture]` section uncomment only the line with Grid.ini if you do now want HG, or the line with GridHypergrid.ini if you do
and copy the `GridCommon.ini.example` file to `GridCommon.ini` inside the `bin/config-include` directory and edit as necessary
# Using Monodevelop
From the distribution type:
* ./runprebuild.sh
* type monodevelop OpenSim.sln
# References
Helpful resources:
* http://opensimulator.org/wiki/Build_Instructions
* http://opensimulator.org/wiki/Configuration

View File

@@ -4,27 +4,19 @@ The following people have contributed to OpenSim (Thank you for your effort!)
These folks represent the current core team for OpenSim, and are the
people that make the day to day of OpenSim happen.
* justincc (OSVW Consulting, justincc.org)
* dahlia
* Melanie Thielker
* Diva (Crista Lopes, University of California, Irvine)
* BlueWall (James Hughes)
* Nebadon Izumi (Michael Cerquoni, OSgrid)
* Snoopy Pfeffer
* Robert Adams (MisterBlue)
* Oren Hurvitz (Kitely)
* Kevin Cozens
* Leal Duarte (Ubit Umarov)
= Core Developers Following the White Rabbit =
Core developers who have temporarily (we hope) gone chasing the white rabbit.
They are in all similar to the active core developers, except that they haven't
been that active lately, so their voting rights are awaiting their come back.
* Teravus (w3z)
* Arthur Rodrigo S Valadares (IBM)
* Dan Lake
* Marck
* Mic Bowman
* Nebadon Izumi (Michael Cerquoni, OSgrid)
* Alicia Raven
= Past Open Sim Developers =
These folks are alumns of the OpenSim core group, but are now
@@ -56,7 +48,16 @@ where we are today.
* nlin (3Di)
* John Hurliman
* chi11ken (Genkii)
* dahlia
* justincc (OSVW Consulting, justincc.org)
* Arthur Rodrigo S Valadares (IBM)
* BlueWall (James Hughes)
* Dan Lake
* Marck
* Mic Bowman
* Oren Hurvitz (Kitely)
* Snoopy Pfeffer
* Teravus (w3z)
= Additional OpenSim Contributors =
These folks have contributed code patches or content to OpenSimulator to help make it
@@ -68,9 +69,9 @@ what it is today.
* alex_carnell
* Alan Webb (IBM)
* Aleric
* Alicia Raven
* Allen Kerensky
* BigFootAg
* Bill Blight
* BlueWall Slade
* bobshaffer2
* brianw/Sir_Ahzz
@@ -88,6 +89,7 @@ what it is today.
* dmiles (Daxtron Labs)
* Dong Jun Lan (IBM)
* DoranZemlja
* Drake Arconis
* dr0b3rts
* dslake
* eeyore
@@ -106,6 +108,7 @@ what it is today.
* Flyte Xevious
* Freaky Tech
* Garmin Kawaguichi
* Geir Noklebye
* Glenn Martin (MOSES)
* Gryc Ueusp
* H-H-H (ginge264)
@@ -114,6 +117,7 @@ what it is today.
* Imaze Rhiano
* Intimidated
* Jak Daniels
* Jeff Kelly
* Jeremy Bongio (IBM)
* jhurliman
* John R Sohn (XenReborn)
@@ -127,6 +131,7 @@ what it is today.
* KittyLiu
* Kurt Taylor (IBM)
* Lani Global
* lickx
* lillith_xue
* lkalif
* LuciusSirnah
@@ -135,8 +140,10 @@ what it is today.
* Magnuz Binder
* maimedleech
* Mana Janus
* Mandarinka Tasty
* MarcelEdward
* Matt Lehmann
* mewtwo0641
* Mic Bowman
* Michelle Argus
* Michael Cortez (The Flotsam Project, http://osflotsam.org/)
@@ -144,6 +151,7 @@ what it is today.
* Micheil Merlin
* Mike Osias (IBM)
* Mike Pitman (IBM)
* Mike Rieker (Dreamnation)
* mikemig
* mikkopa/_someone - RealXtend
* Misterblue
@@ -157,6 +165,7 @@ what it is today.
* openlifegrid.com
* otakup0pe
* Pixel Tomsen
* Quill Littlefeather
* ralphos
* RemedyTomm
* Revolution
@@ -176,14 +185,20 @@ what it is today.
* SpotOn3D
* Stefan_Boom / stoehr
* Steven Zielinski (MOSES)
* Stolen Ruby
* Strawberry Fride
* Talun
* TechplexEngineer (Blake Bourque)
* TBG Renfold
* Terry Ford
* tglion
* tlaukkan/Tommil (Tommi S. E. Laukkanen, Bubble Cloud)
* TomDataWorks
* TomTheDragon (muckwaddle)
* tyre
* uriesk
* Vegaslon <vegaslon@gmail.com>
* Vincent Sylvester
* VikingErik
* Vytek
* webmage (IBM)

43
Makefile Normal file
View File

@@ -0,0 +1,43 @@
# hey, emacs! this is a -*- makefile -*-
#
# OpenSim makefile
#
RUBY = $(strip $(shell which ruby 2>/dev/null))
ifeq ($(RUBY),)
NANT = nant
else
NANT = $(shell if test "$$EMACS" = "t" ; then echo "nant"; else echo "./nant-color"; fi)
endif
all: prebuild
# @export PATH=/usr/local/bin:$(PATH)
${NANT}
find OpenSim -name \*.mdb -exec cp {} bin \;
release: prebuild
${NANT} -D:project.config=Release
find OpenSim -name \*.mdb -exec cp {} bin \;
prebuild:
./runprebuild.sh
clean:
# @export PATH=/usr/local/bin:$(PATH)
-${NANT} clean
test: prebuild
${NANT} test
test-xml: prebuild
${NANT} test-xml
tags:
find OpenSim -name \*\.cs | xargs etags
cscope-tags:
find OpenSim -name \*\.cs -fprint cscope.files
cscope -b
include $(wildcard Makefile.local)

File diff suppressed because it is too large Load Diff

View File

@@ -46,7 +46,7 @@ namespace OpenSim.Groups
public string AccessToken;
}
public class ExtendedGroupMembersData
public class ExtendedGroupMembersData
{
// This is the only difference: this is a string
public string AgentID;
@@ -65,7 +65,7 @@ namespace OpenSim.Groups
public UUID RoleID;
// This is the only difference: this is a string
public string MemberID;
}
public struct ExtendedGroupNoticeData

109
OpenSim/Addons/Groups/GroupsMessagingModule.cs Normal file → Executable file
View File

@@ -131,7 +131,7 @@ namespace OpenSim.Groups
{
if (!m_groupMessagingEnabled)
return;
scene.RegisterModuleInterface<IGroupsMessagingModule>(this);
m_sceneList.Add(scene);
@@ -163,7 +163,7 @@ namespace OpenSim.Groups
if (m_groupData == null)
{
m_log.Error("[Groups.Messaging]: Could not get IGroupsServicesConnector, GroupsMessagingModule is now disabled.");
RemoveRegion(scene);
RemoveRegion(scene);
return;
}
@@ -218,7 +218,7 @@ namespace OpenSim.Groups
m_msgTransferModule = null;
}
public Type ReplaceableInterface
public Type ReplaceableInterface
{
get { return null; }
}
@@ -252,7 +252,7 @@ namespace OpenSim.Groups
m_debugEnabled = verbose;
MainConsole.Instance.OutputFormat("{0} verbose logging set to {1}", Name, m_debugEnabled);
MainConsole.Instance.Output("{0} verbose logging set to {1}", Name, m_debugEnabled);
}
/// <summary>
@@ -262,7 +262,7 @@ namespace OpenSim.Groups
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
GroupRecord groupInfo = m_groupData.GetGroupRecord(agentID.ToString(), groupID, null);
if (groupInfo != null)
@@ -279,7 +279,7 @@ namespace OpenSim.Groups
{
SendMessageToGroup(im, groupID, UUID.Zero, null);
}
public void SendMessageToGroup(
GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition)
{
@@ -296,13 +296,13 @@ namespace OpenSim.Groups
// In V2 we always only send to online members.
// Sending to offline members is not an option.
string[] t1 = groupMembers.ConvertAll<string>(gmd => gmd.AgentID.ToString()).ToArray();
// We cache in order not to overwhelm the presence service on large grids with many groups. This does
// mean that members coming online will not see all group members until after m_usersOnlineCacheExpirySeconds has elapsed.
// (assuming this is the same across all grid simulators).
if (!m_usersOnlineCache.TryGetValue(groupID, out onlineAgents))
{
string[] t1 = groupMembers.ConvertAll<string>(gmd => gmd.AgentID.ToString()).ToArray();
onlineAgents = m_presenceService.GetAgents(t1);
m_usersOnlineCache.Add(groupID, onlineAgents, m_usersOnlineCacheExpirySeconds);
}
@@ -325,7 +325,7 @@ namespace OpenSim.Groups
im.RegionID = thisClient.Scene.RegionInfo.RegionID.Guid;
}
if ((im.binaryBucket == null) || (im.binaryBucket.Length == 0) || ((im.binaryBucket.Length == 1 && im.binaryBucket[0] == 0)))
if (im.binaryBucket is null || im.binaryBucket.Length == 0 || (im.binaryBucket.Length == 1 && im.binaryBucket[0] == 0))
{
ExtendedGroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero.ToString(), groupID, null);
if (groupInfo != null)
@@ -355,9 +355,9 @@ namespace OpenSim.Groups
{
if (!sendCondition(member))
{
if (m_debugEnabled)
if (m_debugEnabled)
m_log.DebugFormat(
"[Groups.Messaging]: Not sending to {0} as they do not fulfill send condition",
"[Groups.Messaging]: Not sending to {0} as they do not fulfill send condition",
member.AgentID);
continue;
@@ -366,7 +366,7 @@ namespace OpenSim.Groups
else if (hasAgentDroppedGroupChatSession(member.AgentID.ToString(), groupID))
{
// Don't deliver messages to people who have dropped this session
if (m_debugEnabled)
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: {0} has dropped session, not delivering to them", member.AgentID);
continue;
@@ -414,7 +414,7 @@ namespace OpenSim.Groups
"[Groups.Messaging]: SendMessageToGroup for group {0} with {1} visible members, {2} online took {3}ms",
groupID, groupMembersCount, groupMembers.Count(), Environment.TickCount - requestStartTick);
}
#region SimGridEventHandlers
void OnClientLogin(IClientAPI client)
@@ -445,13 +445,13 @@ namespace OpenSim.Groups
// The instant message module will only deliver messages of dialog types:
// MessageFromAgent, StartTyping, StopTyping, MessageFromObject
//
// Any other message type will not be delivered to a client by the
// Any other message type will not be delivered to a client by the
// Instant Message Module
UUID regionID = new UUID(msg.RegionID);
if (m_debugEnabled)
{
m_log.DebugFormat("[Groups.Messaging]: {0} called, IM from region {1}",
m_log.DebugFormat("[Groups.Messaging]: {0} called, IM from region {1}",
System.Reflection.MethodBase.GetCurrentMethod().Name, regionID);
DebugGridInstantMessage(msg);
@@ -487,7 +487,7 @@ namespace OpenSim.Groups
{
return gmd.AgentID == sp.UUID;
});
if (m.AgentID == UUID.Zero)
if (m.AgentID.IsZero())
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: skipping agent {0} because he is not a member of the group", sp.UUID);
@@ -508,7 +508,7 @@ namespace OpenSim.Groups
m_log.DebugFormat("[Groups.Messaging]: skipping agent {0} because he has an agent in region of origin", sp.UUID);
return;
}
else
else
{
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: not skipping agent {0}", sp.UUID);
@@ -531,7 +531,7 @@ namespace OpenSim.Groups
}
}
});
}
}
}
@@ -555,7 +555,7 @@ namespace OpenSim.Groups
break;
case (byte)InstantMessageDialog.SessionSend:
// User hasn't dropped, so they're in the session,
// User hasn't dropped, so they're in the session,
// maybe we should deliver it.
IClientAPI client = GetActiveClient(new UUID(msg.toAgentID));
if (client != null)
@@ -599,35 +599,34 @@ namespace OpenSim.Groups
{
if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Sending chatterbox invite instant message");
UUID fromAgent = new UUID(msg.fromAgentID);
// Force? open the group session dialog???
// and simultanously deliver the message, so we don't need to do a seperate client.SendInstantMessage(msg);
IEventQueue eq = activeClient.Scene.RequestModuleInterface<IEventQueue>();
eq.ChatterboxInvitation(
GroupID
, groupInfo.GroupName
, new UUID(msg.fromAgentID)
, msg.message
, AgentID
, msg.fromAgentName
, msg.dialog
, msg.timestamp
, msg.offline == 1
, (int)msg.ParentEstateID
, msg.Position
, 1
, new UUID(msg.imSessionID)
, msg.fromGroup
, OpenMetaverse.Utils.StringToBytes(groupInfo.GroupName)
);
if (eq != null)
{
eq.ChatterboxInvitation(
GroupID
, groupInfo.GroupName
, fromAgent
, msg.message
, AgentID
, msg.fromAgentName
, msg.dialog
, msg.timestamp
, msg.offline == 1
, (int)msg.ParentEstateID
, msg.Position
, 1
, new UUID(msg.imSessionID)
, msg.fromGroup
, OpenMetaverse.Utils.StringToBytes(groupInfo.GroupName)
);
eq.ChatterBoxSessionAgentListUpdates(
new UUID(GroupID)
, AgentID
, new UUID(msg.toAgentID)
, false //canVoiceChat
, false //isModerator
, false //text mute
);
var update = new GroupChatListAgentUpdateData(AgentID);
var updates = new List<GroupChatListAgentUpdateData> { update };
eq.ChatterBoxSessionAgentListUpdates(GroupID, new UUID(msg.toAgentID), updates);
}
}
}
}
@@ -654,7 +653,7 @@ namespace OpenSim.Groups
UUID AgentID = new UUID(im.fromAgentID);
GroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero.ToString(), GroupID, null);
if (groupInfo != null)
{
AgentInvitedToGroupChatSession(AgentID.ToString(), GroupID);
@@ -662,14 +661,12 @@ namespace OpenSim.Groups
ChatterBoxSessionStartReplyViaCaps(remoteClient, groupInfo.GroupName, GroupID);
IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
queue.ChatterBoxSessionAgentListUpdates(
GroupID
, AgentID
, new UUID(im.toAgentID)
, false //canVoiceChat
, false //isModerator
, false //text mute
);
if (queue != null)
{
var update = new GroupChatListAgentUpdateData(AgentID);
var updates = new List<GroupChatListAgentUpdateData> { update };
queue.ChatterBoxSessionAgentListUpdates(GroupID, remoteClient.AgentId, updates);
}
}
}
@@ -679,7 +676,7 @@ namespace OpenSim.Groups
UUID GroupID = new UUID(im.imSessionID);
UUID AgentID = new UUID(im.fromAgentID);
if (m_debugEnabled)
if (m_debugEnabled)
m_log.DebugFormat("[Groups.Messaging]: Send message to session for group {0} with session ID {1}", GroupID, im.imSessionID.ToString());
//If this agent is sending a message, then they want to be in the session
@@ -711,11 +708,7 @@ namespace OpenSim.Groups
bodyMap.Add("session_info", sessionMap);
IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
if (queue != null)
{
queue.Enqueue(queue.BuildEvent("ChatterBoxSessionStartReply", bodyMap), remoteClient.AgentId);
}
queue?.Enqueue(queue.BuildEvent("ChatterBoxSessionStartReply", bodyMap), remoteClient.AgentId);
}
private void DebugGridInstantMessage(GridInstantMessage im)

777
OpenSim/Addons/Groups/GroupsModule.cs Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -95,11 +95,11 @@ namespace OpenSim.Groups
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, string token)
{
if (GroupID == UUID.Zero && (GroupName == null || (GroupName != null && GroupName == string.Empty)))
if (GroupID.IsZero() && string.IsNullOrEmpty(GroupName))
return null;
Dictionary<string, object> sendData = new Dictionary<string, object>();
if (GroupID != UUID.Zero)
if (!GroupID.IsZero())
sendData["GroupID"] = GroupID.ToString();
if (!string.IsNullOrEmpty(GroupName))
sendData["Name"] = GroupsDataUtils.Sanitize(GroupName);
@@ -268,18 +268,24 @@ namespace OpenSim.Groups
sendData["METHOD"] = method;
string reply = string.Empty;
lock (m_Lock)
reply = SynchronousRestFormsRequester.MakeRequest("POST",
try
{
lock (m_Lock)
reply = SynchronousRestFormsRequester.MakeRequest("POST",
m_ServerURI + "hg-groups",
ServerUtils.BuildQueryString(sendData));
}
catch
{
return null;
}
//m_log.DebugFormat("[XXX]: reply was {0}", reply);
if (string.IsNullOrEmpty(reply))
return null;
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
reply);
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
return replyData;
}

View File

@@ -103,7 +103,7 @@ namespace OpenSim.Groups
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
@@ -135,7 +135,7 @@ namespace OpenSim.Groups
{
m_LocalGroupsConnector = new GroupsServiceLocalConnectorModule(m_Config, m_UserManagement);
// Also, if local, create the endpoint for the HGGroupsService
new HGGroupsServiceRobustConnector(m_Config, MainServer.Instance, string.Empty,
new HGGroupsServiceRobustConnector(m_Config, MainServer.Instance, string.Empty,
scene.RequestModuleInterface<IOfflineIMService>(), scene.RequestModuleInterface<IUserAccountService>());
}
@@ -164,13 +164,12 @@ namespace OpenSim.Groups
void OnCompleteMovementToRegion(IClientAPI client, bool arg2)
{
object sp = null;
if (client.Scene.TryGetScenePresence(client.AgentId, out sp))
if (client.SceneAgent is ScenePresence sp)
{
if (sp is ScenePresence && ((ScenePresence)sp).PresenceType != PresenceType.Npc)
if (sp.PresenceType != PresenceType.Npc)
{
AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId);
if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0 &&
AgentCircuitData aCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId);
if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0 &&
m_OfflineIM != null && m_Messaging != null)
{
List<GridInstantMessage> ims = m_OfflineIM.GetMessages(aCircuit.AgentID);
@@ -184,12 +183,12 @@ namespace OpenSim.Groups
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
reason = string.Empty;
if (m_UserManagement.IsLocalGridUser(RequestingAgentID))
return m_LocalGroupsConnector.CreateGroup(RequestingAgentID, name, charter, showInList, insigniaID,
return m_LocalGroupsConnector.CreateGroup(RequestingAgentID, name, charter, showInList, insigniaID,
membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason);
else
{
@@ -198,14 +197,14 @@ namespace OpenSim.Groups
}
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
reason = string.Empty;
string url = string.Empty;
string name = string.Empty;
if (IsLocal(groupID, out url, out name))
return m_LocalGroupsConnector.UpdateGroup(AgentUUI(RequestingAgentID), groupID, charter, showInList, insigniaID, membershipFee,
return m_LocalGroupsConnector.UpdateGroup(AgentUUI(RequestingAgentID), groupID, charter, showInList, insigniaID, membershipFee,
openEnrollment, allowPublish, maturePublish, out reason);
else
{
@@ -246,9 +245,9 @@ namespace OpenSim.Groups
return null;
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
public List<DirGroupsReplyData> FindGroups(string RequestingAgentIDstr, string search)
{
return m_LocalGroupsConnector.FindGroups(AgentUUI(RequestingAgentID), search);
return m_LocalGroupsConnector.FindGroups(RequestingAgentIDstr, search);
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
@@ -374,7 +373,7 @@ namespace OpenSim.Groups
}
}
return new List<GroupRoleMembersData>();
}
@@ -403,7 +402,7 @@ namespace OpenSim.Groups
// Here we always return true. The user has been added to the local group,
// independent of whether the remote operation succeeds or not
url = m_UserManagement.GetUserServerURL(uid, "GroupsServerURI");
if (url == string.Empty)
if (url.Length == 0)
{
reason = "You don't have an accessible groups server in your home world. You membership to this group in only within this grid.";
return true;
@@ -460,7 +459,7 @@ namespace OpenSim.Groups
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
return m_LocalGroupsConnector.GetAgentToGroupInvite(AgentUUI(RequestingAgentID), inviteID); ;
return m_LocalGroupsConnector.GetAgentToGroupInvite(AgentUUI(RequestingAgentID), inviteID);
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
@@ -605,14 +604,8 @@ namespace OpenSim.Groups
private string AgentUUI(string AgentIDStr)
{
UUID AgentID = UUID.Zero;
try
{
AgentID = new UUID(AgentIDStr);
}
catch (FormatException)
{
return AgentID.ToString();
}
if (!UUID.TryParse(AgentIDStr, out AgentID) || AgentID.IsZero())
return UUID.Zero.ToString();
if (m_UserManagement.IsLocalGridUser(AgentID))
return AgentID.ToString();
@@ -626,7 +619,7 @@ namespace OpenSim.Groups
}
if (agent != null)
return Util.ProduceUserUniversalIdentifier(agent);
// we don't know anything about this foreign user
// try asking the user management module, which may know more
return m_UserManagement.GetUserUUI(AgentID);
@@ -636,14 +629,8 @@ namespace OpenSim.Groups
private string AgentUUIForOutside(string AgentIDStr)
{
UUID AgentID = UUID.Zero;
try
{
AgentID = new UUID(AgentIDStr);
}
catch (FormatException)
{
return AgentID.ToString();
}
if (!UUID.TryParse(AgentIDStr, out AgentID) || AgentID.IsZero())
return UUID.ZeroString;
AgentCircuitData agent = null;
foreach (Scene scene in m_Scenes)
@@ -664,7 +651,7 @@ namespace OpenSim.Groups
string url = string.Empty, first = string.Empty, last = string.Empty, tmp = string.Empty;
if (Util.ParseUniversalUserIdentifier(uID, out userID, out url, out first, out last, out tmp))
m_UserManagement.AddUser(userID, first, last, url);
return userID;
}
@@ -684,7 +671,7 @@ namespace OpenSim.Groups
serviceLocation = group.ServiceLocation;
name = group.GroupName;
bool isLocal = (group.ServiceLocation == string.Empty);
bool isLocal = (group.ServiceLocation.Length == 0);
//m_log.DebugFormat("[XXX]: IsLocal? {0}", isLocal);
return isLocal;
}

View File

@@ -64,9 +64,9 @@ namespace OpenSim.Groups
m_log.DebugFormat("[Groups.RobustHGConnector]: Starting with config name {0}", m_ConfigName);
string homeURI = Util.GetConfigVarFromSections<string>(config, "HomeURI",
new string[] { "Startup", "Hypergrid", m_ConfigName}, string.Empty);
if (homeURI == string.Empty)
string homeURI = Util.GetConfigVarFromSections<string>(config, "HomeURI",
new string[] { "Startup", "Hypergrid", m_ConfigName}, string.Empty);
if (homeURI.Length == 0)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide the HomeURI [Startup] or in section {0}", m_ConfigName));
IConfig cnf = config.Configs[m_ConfigName];
@@ -76,7 +76,7 @@ namespace OpenSim.Groups
if (im == null)
{
string imDll = cnf.GetString("OfflineIMService", string.Empty);
if (imDll == string.Empty)
if (imDll.Length == 0)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide OfflineIMService in section {0}", m_ConfigName));
Object[] args = new Object[] { config };
@@ -86,7 +86,7 @@ namespace OpenSim.Groups
if (users == null)
{
string usersDll = cnf.GetString("UserAccountService", string.Empty);
if (usersDll == string.Empty)
if (usersDll.Length == 0)
throw new Exception(String.Format("[Groups.RobustHGConnector]: please provide UserAccountService in section {0}", m_ConfigName));
Object[] args = new Object[] { config };
@@ -115,9 +115,10 @@ namespace OpenSim.Groups
protected override byte[] ProcessRequest(string path, Stream requestData,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
StreamReader sr = new StreamReader(requestData);
string body = sr.ReadToEnd();
sr.Close();
string body;
using(StreamReader sr = new StreamReader(requestData))
body = sr.ReadToEnd();
body = body.Trim();
//m_log.DebugFormat("[XXX]: query String: {0}", body);

View File

@@ -34,12 +34,12 @@ namespace OpenSim.Groups
{
public interface IGroupsServicesConnector
{
UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee,
UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID, out string reason);
bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason);
ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName);
List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search);
List<DirGroupsReplyData> FindGroups(string RequestingAgentIDstr, string search);
List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID);
bool AddGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, out string reason);
@@ -75,7 +75,7 @@ namespace OpenSim.Groups
/// If the user is a member of the group then the data structure is returned. If not, then null is returned.
/// </returns>
ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID);
/// <summary>
/// Get information about the groups to which a user belongs.
/// </summary>
@@ -87,7 +87,7 @@ namespace OpenSim.Groups
/// </returns>
List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID);
bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID);
GroupNoticeInfo GetGroupNotice(string RequestingAgentID, UUID noticeID);
List<ExtendedGroupNoticeData> GetGroupNotices(string RequestingAgentID, UUID GroupID);

View File

@@ -108,7 +108,7 @@ namespace OpenSim.Groups
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
m_log.DebugFormat("[Groups]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
}
@@ -146,16 +146,16 @@ namespace OpenSim.Groups
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
m_log.DebugFormat("[Groups]: Creating group {0}", name);
reason = string.Empty;
return m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID,
return m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID,
membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason);
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
reason = string.Empty;
@@ -165,7 +165,7 @@ namespace OpenSim.Groups
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID != UUID.Zero)
if (!GroupID.IsZero())
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID);
else if (GroupName != null)
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupName);
@@ -173,9 +173,9 @@ namespace OpenSim.Groups
return null;
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
public List<DirGroupsReplyData> FindGroups(string RequestingAgentIDstr, string search)
{
return m_GroupsService.FindGroups(RequestingAgentID, search);
return m_GroupsService.FindGroups(RequestingAgentIDstr, search);
}
public List<GroupMembersData> GetGroupMembers(string RequestingAgentID, UUID GroupID)
@@ -240,7 +240,7 @@ namespace OpenSim.Groups
public GroupInviteInfo GetAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
{
return m_GroupsService.GetAgentToGroupInvite(RequestingAgentID, inviteID); ;
return m_GroupsService.GetAgentToGroupInvite(RequestingAgentID, inviteID);
}
public void RemoveAgentToGroupInvite(string RequestingAgentID, UUID inviteID)
@@ -285,7 +285,7 @@ namespace OpenSim.Groups
public ExtendedGroupMembershipData GetAgentGroupMembership(string RequestingAgentID, string AgentID, UUID GroupID)
{
return m_GroupsService.GetAgentGroupMembership(RequestingAgentID, AgentID, GroupID); ;
return m_GroupsService.GetAgentGroupMembership(RequestingAgentID, AgentID, GroupID);
}
public List<GroupMembershipData> GetAgentGroupMemberships(string RequestingAgentID, string AgentID)
@@ -296,7 +296,7 @@ namespace OpenSim.Groups
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
return m_GroupsService.AddGroupNotice(RequestingAgentID, groupID, noticeID, fromName, subject, message,
return m_GroupsService.AddGroupNotice(RequestingAgentID, groupID, noticeID, fromName, subject, message,
hasAttachment, attType, attName, attItemID, attOwnerID);
}

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Addons.Groups")]
@@ -15,8 +15,8 @@ using Mono.Addins;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -26,11 +26,11 @@ using Mono.Addins;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.2.*")]
[assembly: AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]
[assembly: Addin("OpenSim.Groups", OpenSim.VersionInfo.VersionNumber)]
[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]

View File

@@ -41,7 +41,7 @@ using Nini.Config;
namespace OpenSim.Groups
{
public class GroupsServiceRemoteConnector
public class GroupsServiceRemoteConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -71,7 +71,7 @@ namespace OpenSim.Groups
}
///
m_log.DebugFormat("[Groups.RemoteConnector]: Groups server at {0}, authentication {1}",
m_log.DebugFormat("[Groups.RemoteConnector]: Groups server at {0}, authentication {1}",
m_ServerURI, (m_Auth == null ? "None" : m_Auth.GetType().ToString()));
}
@@ -134,11 +134,11 @@ namespace OpenSim.Groups
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID == UUID.Zero && (GroupName == null || (GroupName != null && GroupName == string.Empty)))
if (GroupID.IsZero() && string.IsNullOrEmpty(GroupName))
return null;
Dictionary<string, object> sendData = new Dictionary<string, object>();
if (GroupID != UUID.Zero)
if (!GroupID.IsZero())
sendData["GroupID"] = GroupID.ToString();
if (!string.IsNullOrEmpty(GroupName))
sendData["Name"] = GroupsDataUtils.Sanitize(GroupName);
@@ -153,7 +153,7 @@ namespace OpenSim.Groups
return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]);
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string query)
public List<DirGroupsReplyData> FindGroups(string RequestingAgentIDstr, string query)
{
List<DirGroupsReplyData> hits = new List<DirGroupsReplyData>();
if (string.IsNullOrEmpty(query))
@@ -161,7 +161,7 @@ namespace OpenSim.Groups
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["Query"] = query;
sendData["RequestingAgentID"] = RequestingAgentID;
sendData["RequestingAgentID"] = RequestingAgentIDstr;
Dictionary<string, object> ret = MakeRequest("FINDGROUPS", sendData);
@@ -224,7 +224,7 @@ namespace OpenSim.Groups
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["AgentID"] = AgentID;
if (GroupID != UUID.Zero)
if (!GroupID.IsZero())
sendData["GroupID"] = GroupID.ToString();
sendData["RequestingAgentID"] = RequestingAgentID;
Dictionary<string, object> ret = MakeRequest("GETMEMBERSHIP", sendData);
@@ -682,7 +682,7 @@ namespace OpenSim.Groups
ServerUtils.BuildQueryString(sendData),
m_Auth);
if (reply == string.Empty)
if (reply.Length == 0)
return null;
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(

View File

@@ -113,7 +113,7 @@ namespace OpenSim.Groups
if (!m_Enabled)
return;
m_log.DebugFormat("[Groups.RemoteConnector]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
m_log.DebugFormat("[Groups.RemoteConnector]: Registering {0} with {1}", this.Name, scene.RegionInfo.RegionName);
scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
m_Scenes.Add(scene);
}
@@ -151,7 +151,7 @@ namespace OpenSim.Groups
#region IGroupsServicesConnector
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
m_log.DebugFormat("[Groups.RemoteConnector]: Creating group {0}", name);
@@ -167,7 +167,7 @@ namespace OpenSim.Groups
return groupID;
}
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
public bool UpdateGroup(string RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee,
bool openEnrollment, bool allowPublish, bool maturePublish, out string reason)
{
string r = string.Empty;
@@ -183,19 +183,19 @@ namespace OpenSim.Groups
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName)
{
if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty))
if (GroupID.IsZero() && string.IsNullOrEmpty(GroupName))
return null;
return m_CacheWrapper.GetGroupRecord(RequestingAgentID,GroupID,GroupName, delegate
{
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName);
return m_CacheWrapper.GetGroupRecord(RequestingAgentID,GroupID,GroupName, delegate
{
return m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName);
});
}
public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search)
public List<DirGroupsReplyData> FindGroups(string RequestingAgentIDstr, string search)
{
// TODO!
return m_GroupsService.FindGroups(RequestingAgentID, search);
return m_GroupsService.FindGroups(RequestingAgentIDstr, search);
}
public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason)
@@ -362,7 +362,7 @@ namespace OpenSim.Groups
m_GroupsService.RemoveAgentToGroupInvite(RequestingAgentID, inviteID);
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
GroupNoticeInfo notice = new GroupNoticeInfo();

View File

@@ -91,9 +91,10 @@ namespace OpenSim.Groups
protected override byte[] ProcessRequest(string path, Stream requestData,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
StreamReader sr = new StreamReader(requestData);
string body = sr.ReadToEnd();
sr.Close();
string body;
using(StreamReader sr = new StreamReader(requestData))
body = sr.ReadToEnd();
body = body.Trim();
//m_log.DebugFormat("[XXX]: query String: {0}", body);
@@ -185,7 +186,7 @@ namespace OpenSim.Groups
}
if (grec.GroupID != UUID.Zero)
if (!grec.GroupID.IsZero())
{
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, grec.GroupID);
if (grec == null)
@@ -286,7 +287,7 @@ namespace OpenSim.Groups
string requestingAgentID = request["RequestingAgentID"].ToString();
if (!m_GroupsService.RemoveAgentFromGroup(requestingAgentID, agentID, groupID))
NullResult(result, string.Format("Insufficient permissions.", agentID));
NullResult(result, string.Format("Insufficient permissions. {0}", agentID));
else
result["RESULT"] = "true";
}
@@ -313,7 +314,7 @@ namespace OpenSim.Groups
if (!all)
{
ExtendedGroupMembershipData membership = null;
if (groupID == UUID.Zero)
if (groupID.IsZero())
{
membership = m_GroupsService.GetAgentActiveMembership(requestingAgentID, agentID);
}
@@ -393,7 +394,7 @@ namespace OpenSim.Groups
if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("GroupID") || !request.ContainsKey("RoleID") ||
!request.ContainsKey("Name") || !request.ContainsKey("Description") || !request.ContainsKey("Title") ||
!request.ContainsKey("Powers") || !request.ContainsKey("OP"))
!request.ContainsKey("Powers") || !request.ContainsKey("OP"))
NullResult(result, "Bad network data");
else
@@ -519,11 +520,11 @@ namespace OpenSim.Groups
bool success = false;
if (op == "ADD")
success = m_GroupsService.AddAgentToGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
success = m_GroupsService.AddAgentToGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
new UUID(request["GroupID"].ToString()), new UUID(request["RoleID"].ToString()));
else if (op == "DELETE")
success = m_GroupsService.RemoveAgentFromGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
success = m_GroupsService.RemoveAgentFromGroupRole(request["RequestingAgentID"].ToString(), request["AgentID"].ToString(),
new UUID(request["GroupID"].ToString()), new UUID(request["RoleID"].ToString()));
result["RESULT"] = success.ToString();
@@ -647,8 +648,8 @@ namespace OpenSim.Groups
string op = request["OP"].ToString();
if (op == "ADD" && request.ContainsKey("GroupID") && request.ContainsKey("RoleID") && request.ContainsKey("AgentID"))
{
bool success = m_GroupsService.AddAgentToGroupInvite(request["RequestingAgentID"].ToString(),
{
bool success = m_GroupsService.AddAgentToGroupInvite(request["RequestingAgentID"].ToString(),
new UUID(request["InviteID"].ToString()), new UUID(request["GroupID"].ToString()),
new UUID(request["RoleID"].ToString()), request["AgentID"].ToString());
@@ -664,7 +665,7 @@ namespace OpenSim.Groups
}
else if (op == "GET")
{
GroupInviteInfo invite = m_GroupsService.GetAgentToGroupInvite(request["RequestingAgentID"].ToString(),
GroupInviteInfo invite = m_GroupsService.GetAgentToGroupInvite(request["RequestingAgentID"].ToString(),
new UUID(request["InviteID"].ToString()));
if (invite != null)

View File

@@ -51,12 +51,12 @@ namespace OpenSim.Groups
public class RemoteConnectorCacheWrapper
{
private ForeignImporter m_ForeignImporter;
private Dictionary<string, bool> m_ActiveRequests = new Dictionary<string, bool>();
private const int GROUPS_CACHE_TIMEOUT = 1 * 60; // 1 minutes
// This all important cache cahces objects of different types:
private ForeignImporter m_ForeignImporter;
private HashSet<string> m_ActiveRequests = new HashSet<string>();
// This all important cache caches objects of different types:
// group-<GroupID> or group-<Name> => ExtendedGroupRecord
// active-<AgentID> => GroupMembershipData
// membership-<AgentID>-<GroupID> => GroupMembershipData
@@ -68,7 +68,7 @@ namespace OpenSim.Groups
// rolemembers-<RequestingAgentID>-<GroupID> => List<ExtendedGroupRoleMembersData>
// notice-<noticeID> => GroupNoticeInfo
// notices-<GroupID> => List<ExtendedGroupNoticeData>
private ExpiringCache<string, object> m_Cache = new ExpiringCache<string, object>();
private ExpiringCacheOS<string, object> m_Cache = new ExpiringCacheOS<string, object>(30000);
public RemoteConnectorCacheWrapper(IUserManagement uman)
{
@@ -87,14 +87,11 @@ namespace OpenSim.Groups
if (group == null)
return UUID.Zero;
if (group.GroupID != UUID.Zero)
lock (m_Cache)
{
m_Cache.Add("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
if (m_Cache.Contains("memberships-" + RequestingAgentID.ToString()))
m_Cache.Remove("memberships-" + RequestingAgentID.ToString());
}
if (!group.GroupID.IsZero())
{
m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
m_Cache.Remove("memberships-" + RequestingAgentID.ToString());
}
return group.GroupID;
}
@@ -104,24 +101,24 @@ namespace OpenSim.Groups
//ExtendedGroupRecord group = m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
ExtendedGroupRecord group = d();
if (group != null && group.GroupID != UUID.Zero)
lock (m_Cache)
m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
if (!group.GroupID.IsZero())
m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT);
return true;
}
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, GroupRecordDelegate d)
{
//if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty))
//if (GroupID.IsZero() && string.IsNullOrEmpty(GroupName))
// return null;
object group = null;
bool firstCall = false;
string cacheKey = "group-";
if (GroupID != UUID.Zero)
cacheKey += GroupID.ToString();
else
if (GroupID.IsZero())
cacheKey += GroupName;
else
cacheKey += GroupID.ToString();
//m_log.DebugFormat("[XXX]: GetGroupRecord {0}", cacheKey);
@@ -136,9 +133,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -180,8 +177,6 @@ namespace OpenSim.Groups
m_Cache.AddOrUpdate("active-" + AgentID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate("membership-" + AgentID.ToString() + "-" + GroupID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
}
return true;
}
@@ -189,37 +184,29 @@ namespace OpenSim.Groups
{
d();
lock (m_Cache)
{
string cacheKey = "active-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
string AgentIDToString = AgentID.ToString();
string cacheKey = "active-" + AgentIDToString;
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentIDToString;
m_Cache.Remove(cacheKey);
cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
string GroupIDToString = GroupID.ToString();
cacheKey = "membership-" + AgentIDToString + "-" + GroupIDToString;
m_Cache.Remove(cacheKey);
cacheKey = "members-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
cacheKey = "members-" + RequestingAgentID.ToString() + "-" + GroupIDToString;
m_Cache.Remove(cacheKey);
cacheKey = "roles-" + "-" + GroupID.ToString() + "-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
cacheKey = "roles-" + "-" + GroupIDToString + "-" + AgentIDToString;
m_Cache.Remove(cacheKey);
}
public void SetAgentActiveGroup(string AgentID, GroupMembershipDelegate d)
{
GroupMembershipData activeGroup = d();
string cacheKey = "active-" + AgentID.ToString();
lock (m_Cache)
if (m_Cache.Contains(cacheKey))
m_Cache.AddOrUpdate(cacheKey, activeGroup, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate(cacheKey, activeGroup, GROUPS_CACHE_TIMEOUT);
}
public ExtendedGroupMembershipData GetAgentActiveMembership(string AgentID, GroupMembershipDelegate d)
@@ -241,9 +228,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -253,12 +240,8 @@ namespace OpenSim.Groups
try
{
membership = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
return (ExtendedGroupMembershipData)membership;
}
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
return (ExtendedGroupMembershipData)membership;
}
finally
{
@@ -290,9 +273,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -302,11 +285,8 @@ namespace OpenSim.Groups
try
{
membership = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
return (ExtendedGroupMembershipData)membership;
}
m_Cache.AddOrUpdate(cacheKey, membership, GROUPS_CACHE_TIMEOUT);
return (ExtendedGroupMembershipData)membership;
}
finally
{
@@ -337,9 +317,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -349,11 +329,8 @@ namespace OpenSim.Groups
try
{
memberships = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, memberships, GROUPS_CACHE_TIMEOUT);
return (List<GroupMembershipData>)memberships;
}
m_Cache.AddOrUpdate(cacheKey, memberships, GROUPS_CACHE_TIMEOUT);
return (List<GroupMembershipData>)memberships;
}
finally
{
@@ -385,9 +362,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -403,13 +380,8 @@ namespace OpenSim.Groups
else
members = new List<GroupMembersData>();
lock (m_Cache)
{
//m_Cache.AddOrUpdate(cacheKey, members, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate(cacheKey, _members, GROUPS_CACHE_TIMEOUT);
return (List<GroupMembersData>)members;
}
m_Cache.AddOrUpdate(cacheKey, _members, GROUPS_CACHE_TIMEOUT);
return (List<GroupMembersData>)members;
}
finally
{
@@ -433,16 +405,10 @@ namespace OpenSim.Groups
role.RoleID = roleID;
role.Title = title;
lock (m_Cache)
{
m_Cache.AddOrUpdate("role-" + roleID.ToString(), role, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate("role-" + roleID.ToString(), role, GROUPS_CACHE_TIMEOUT);
// also remove this list
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
}
m_Cache.Remove("roles-" + groupID.ToString());
return true;
}
@@ -463,22 +429,15 @@ namespace OpenSim.Groups
r.Powers = powers;
r.Title = title;
m_Cache.Update("role-" + roleID.ToString(), r, GROUPS_CACHE_TIMEOUT);
m_Cache.AddOrUpdate("role-" + roleID.ToString(), r, GROUPS_CACHE_TIMEOUT);
}
return true;
}
else
{
lock (m_Cache)
{
if (m_Cache.Contains("role-" + roleID.ToString()))
m_Cache.Remove("role-" + roleID.ToString());
// also remove these lists, because they will have an outdated role
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
}
m_Cache.Remove("role-" + roleID.ToString());
// also remove these lists, because they will have an outdated role
m_Cache.Remove("roles-" + groupID.ToString());
return false;
}
@@ -490,18 +449,11 @@ namespace OpenSim.Groups
lock (m_Cache)
{
if (m_Cache.Contains("role-" + roleID.ToString()))
m_Cache.Remove("role-" + roleID.ToString());
m_Cache.Remove("role-" + roleID.ToString());
// also remove the list, because it will have an removed role
if (m_Cache.Contains("roles-" + groupID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString());
if (m_Cache.Contains("roles-" + groupID.ToString() + "-" + RequestingAgentID.ToString()))
m_Cache.Remove("roles-" + groupID.ToString() + "-" + RequestingAgentID.ToString());
if (m_Cache.Contains("rolemembers-" + RequestingAgentID.ToString() + "-" + groupID.ToString()))
m_Cache.Remove("rolemembers-" + RequestingAgentID.ToString() + "-" + groupID.ToString());
m_Cache.Remove("roles-" + groupID.ToString());
m_Cache.Remove("roles-" + groupID.ToString() + "-" + RequestingAgentID.ToString());
m_Cache.Remove("rolemembers-" + RequestingAgentID.ToString() + "-" + groupID.ToString());
}
}
@@ -519,9 +471,9 @@ namespace OpenSim.Groups
return (List<GroupRolesData>)roles;
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -533,11 +485,8 @@ namespace OpenSim.Groups
roles = d();
if (roles != null)
{
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
return (List<GroupRolesData>)roles;
}
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
return (List<GroupRolesData>)roles;
}
}
finally
@@ -569,9 +518,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -587,16 +536,13 @@ namespace OpenSim.Groups
else
rmembers = new List<GroupRoleMembersData>();
lock (m_Cache)
{
// For some strange reason, when I cache the list of GroupRoleMembersData,
// it gets emptied out. The TryGet gets an empty list...
//m_Cache.AddOrUpdate(cacheKey, rmembers, GROUPS_CACHE_TIMEOUT);
// Caching the list of ExtendedGroupRoleMembersData doesn't show that issue
// I don't get it.
m_Cache.AddOrUpdate(cacheKey, _rmembers, GROUPS_CACHE_TIMEOUT);
return (List<GroupRoleMembersData>)rmembers;
}
// For some strange reason, when I cache the list of GroupRoleMembersData,
// it gets emptied out. The TryGet gets an empty list...
//m_Cache.AddOrUpdate(cacheKey, rmembers, GROUPS_CACHE_TIMEOUT);
// Caching the list of ExtendedGroupRoleMembersData doesn't show that issue
// I don't get it.
m_Cache.AddOrUpdate(cacheKey, _rmembers, GROUPS_CACHE_TIMEOUT);
return (List<GroupRoleMembersData>)rmembers;
}
finally
{
@@ -671,12 +617,10 @@ namespace OpenSim.Groups
}
cacheKey = "roles-" + GroupID.ToString() + "-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
m_Cache.Remove(cacheKey);
cacheKey = "rolemembers-" + RequestingAgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
m_Cache.Remove(cacheKey);
}
}
}
@@ -700,9 +644,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -712,12 +656,8 @@ namespace OpenSim.Groups
try
{
roles = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
m_ActiveRequests.Remove(cacheKey);
return (List<GroupRolesData>)roles;
}
m_Cache.AddOrUpdate(cacheKey, roles, GROUPS_CACHE_TIMEOUT);
return (List<GroupRolesData>)roles;
}
finally
{
@@ -737,12 +677,10 @@ namespace OpenSim.Groups
{
// Invalidate cached info, because it has ActiveRoleID and Powers
string cacheKey = "membership-" + AgentID.ToString() + "-" + GroupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
m_Cache.Remove(cacheKey);
}
}
@@ -757,8 +695,7 @@ namespace OpenSim.Groups
m_Cache.Remove(cacheKey);
cacheKey = "memberships-" + AgentID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
m_Cache.Remove(cacheKey);
cacheKey = "active-" + AgentID.ToString();
object m = null;
@@ -775,14 +712,9 @@ namespace OpenSim.Groups
{
if (d())
{
lock (m_Cache)
{
m_Cache.AddOrUpdate("notice-" + noticeID.ToString(), notice, GROUPS_CACHE_TIMEOUT);
string cacheKey = "notices-" + groupID.ToString();
if (m_Cache.Contains(cacheKey))
m_Cache.Remove(cacheKey);
}
m_Cache.AddOrUpdate("notice-" + noticeID.ToString(), notice, GROUPS_CACHE_TIMEOUT);
string cacheKey = "notices-" + groupID.ToString();
m_Cache.Remove(cacheKey);
return true;
}
@@ -808,9 +740,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -821,11 +753,8 @@ namespace OpenSim.Groups
{
GroupNoticeInfo _notice = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, _notice, GROUPS_CACHE_TIMEOUT);
return _notice;
}
m_Cache.AddOrUpdate(cacheKey, _notice, GROUPS_CACHE_TIMEOUT);
return _notice;
}
finally
{
@@ -856,9 +785,9 @@ namespace OpenSim.Groups
}
// not cached
if (!m_ActiveRequests.ContainsKey(cacheKey))
if (!m_ActiveRequests.Contains(cacheKey))
{
m_ActiveRequests.Add(cacheKey, true);
m_ActiveRequests.Add(cacheKey);
firstCall = true;
}
}
@@ -869,11 +798,8 @@ namespace OpenSim.Groups
{
notices = d();
lock (m_Cache)
{
m_Cache.AddOrUpdate(cacheKey, notices, GROUPS_CACHE_TIMEOUT);
return (List<ExtendedGroupNoticeData>)notices;
}
m_Cache.AddOrUpdate(cacheKey, notices, GROUPS_CACHE_TIMEOUT);
return (List<ExtendedGroupNoticeData>)notices;
}
finally
{

View File

@@ -43,60 +43,63 @@ namespace OpenSim.Groups
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public const GroupPowers DefaultEveryonePowers = GroupPowers.AllowSetHome |
GroupPowers.Accountable |
GroupPowers.JoinChat |
GroupPowers.AllowVoiceChat |
GroupPowers.ReceiveNotices |
GroupPowers.StartProposal |
GroupPowers.VoteOnProposal;
public const GroupPowers DefaultEveryonePowers =
GroupPowers.AllowSetHome |
GroupPowers.Accountable |
GroupPowers.JoinChat |
GroupPowers.AllowVoiceChat |
GroupPowers.ReceiveNotices |
GroupPowers.StartProposal |
GroupPowers.VoteOnProposal;
public const GroupPowers OwnerPowers = GroupPowers.Accountable |
GroupPowers.AllowEditLand |
GroupPowers.AllowFly |
GroupPowers.AllowLandmark |
GroupPowers.AllowRez |
GroupPowers.AllowSetHome |
GroupPowers.AllowVoiceChat |
GroupPowers.AssignMember |
GroupPowers.AssignMemberLimited |
GroupPowers.ChangeActions |
GroupPowers.ChangeIdentity |
GroupPowers.ChangeMedia |
GroupPowers.ChangeOptions |
GroupPowers.CreateRole |
GroupPowers.DeedObject |
GroupPowers.DeleteRole |
GroupPowers.Eject |
GroupPowers.FindPlaces |
GroupPowers.HostEvent |
GroupPowers.Invite |
GroupPowers.JoinChat |
GroupPowers.LandChangeIdentity |
GroupPowers.LandDeed |
GroupPowers.LandDivideJoin |
GroupPowers.LandEdit |
GroupPowers.LandEjectAndFreeze |
GroupPowers.LandGardening |
GroupPowers.LandManageAllowed |
GroupPowers.LandManageBanned |
GroupPowers.LandManagePasses |
GroupPowers.LandOptions |
GroupPowers.LandRelease |
GroupPowers.LandSetSale |
GroupPowers.ModerateChat |
GroupPowers.ObjectManipulate |
GroupPowers.ObjectSetForSale |
GroupPowers.ReceiveNotices |
GroupPowers.RemoveMember |
GroupPowers.ReturnGroupOwned |
GroupPowers.ReturnGroupSet |
GroupPowers.ReturnNonGroup |
GroupPowers.RoleProperties |
GroupPowers.SendNotices |
GroupPowers.SetLandingPoint |
GroupPowers.StartProposal |
GroupPowers.VoteOnProposal;
public const GroupPowers OfficersPowers = DefaultEveryonePowers |
GroupPowers.AllowFly |
GroupPowers.AllowLandmark |
GroupPowers.AllowRez |
GroupPowers.AssignMemberLimited |
GroupPowers.ChangeIdentity |
GroupPowers.ChangeMedia |
GroupPowers.ChangeOptions |
GroupPowers.DeedObject |
GroupPowers.Eject |
GroupPowers.FindPlaces |
GroupPowers.Invite |
GroupPowers.LandChangeIdentity |
GroupPowers.LandDeed |
GroupPowers.LandDivideJoin |
GroupPowers.LandEdit |
GroupPowers.AllowEnvironment |
GroupPowers.LandEjectAndFreeze |
GroupPowers.LandGardening |
GroupPowers.LandManageAllowed |
GroupPowers.LandManageBanned |
GroupPowers.LandManagePasses |
GroupPowers.LandOptions |
GroupPowers.LandRelease |
GroupPowers.LandSetSale |
GroupPowers.MemberVisible |
GroupPowers.ModerateChat |
GroupPowers.ObjectManipulate |
GroupPowers.ObjectSetForSale |
GroupPowers.ReturnGroupOwned |
GroupPowers.ReturnGroupSet |
GroupPowers.ReturnNonGroup |
GroupPowers.RoleProperties |
GroupPowers.SendNotices |
GroupPowers.SetLandingPoint;
public const GroupPowers OwnerPowers = OfficersPowers |
GroupPowers.Accountable |
GroupPowers.AllowEditLand |
GroupPowers.AssignMember |
GroupPowers.ChangeActions |
GroupPowers.CreateRole |
GroupPowers.DeleteRole |
GroupPowers.ExperienceAdmin |
GroupPowers.ExperienceCreator |
GroupPowers.GroupBanAccess |
GroupPowers.HostEvent |
GroupPowers.RemoveMember;
#region Daily Cleanup
@@ -126,7 +129,7 @@ namespace OpenSim.Groups
#endregion
public UUID CreateGroup(string RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
public UUID CreateGroup(string RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
{
reason = string.Empty;
@@ -151,20 +154,25 @@ namespace OpenSim.Groups
data.Data["ShowInList"] = showInList ? "1" : "0";
data.Data["AllowPublish"] = allowPublish ? "1" : "0";
data.Data["MaturePublish"] = maturePublish ? "1" : "0";
UUID roleID = UUID.Random();
data.Data["OwnerRoleID"] = roleID.ToString();
UUID ownerRoleID = UUID.Random();
data.Data["OwnerRoleID"] = ownerRoleID.ToString();
if (!m_Database.StoreGroup(data))
return UUID.Zero;
// Create Everyone role
_AddOrUpdateGroupRole(RequestingAgentID, data.GroupID, UUID.Zero, "Everyone", "Everyone in the group", "Member of " + name, (ulong)DefaultEveryonePowers, true);
_AddOrUpdateGroupRole(RequestingAgentID, data.GroupID, UUID.Zero, "Everyone", "Everyone in the group is in the everyone role.", "Member of " + name, (ulong)DefaultEveryonePowers, true);
// Create Officers role
UUID officersRoleID = UUID.Random();
_AddOrUpdateGroupRole(RequestingAgentID, data.GroupID, officersRoleID, "Officers", "The officers of the group, with more powers than regular members.", "Officer of " + name, (ulong)OfficersPowers, true);
// Create Owner role
_AddOrUpdateGroupRole(RequestingAgentID, data.GroupID, roleID, "Owners", "Owners of the group", "Owner of " + name, (ulong)OwnerPowers, true);
_AddOrUpdateGroupRole(RequestingAgentID, data.GroupID, ownerRoleID, "Owners", "Owners of the group", "Owner of " + name, (ulong)OwnerPowers, true);
// Add founder to group
_AddAgentToGroup(RequestingAgentID, founderID.ToString(), data.GroupID, roleID);
_AddAgentToGroup(RequestingAgentID, founderID.ToString(), data.GroupID, ownerRoleID);
_AddAgentToGroup(RequestingAgentID, founderID.ToString(), data.GroupID, officersRoleID);
return data.GroupID;
}
@@ -223,15 +231,22 @@ namespace OpenSim.Groups
if (d.Data.ContainsKey("Location") && d.Data["Location"] != string.Empty)
continue;
int nmembers = m_Database.MemberCount(d.GroupID);
if(nmembers == 0)
continue;
DirGroupsReplyData g = new DirGroupsReplyData();
g.groupID = d.GroupID;
if (d.Data.ContainsKey("Name"))
g.groupName = d.Data["Name"];
else
{
m_log.DebugFormat("[Groups]: Key Name not found");
continue;
}
g.members = m_Database.MemberCount(d.GroupID);
g.groupID = d.GroupID;
g.members = nmembers;
groups.Add(g);
}
@@ -264,7 +279,7 @@ namespace OpenSim.Groups
if (ownerRole != null)
ownerRoleID = ownerRole.RoleID;
// Check visibility?
// Check visibility?
// When we don't want to check visibility, we pass it "all" as the requestingAgentID
bool checkVisibility = !RequestingAgentID.Equals(UUID.Zero.ToString());
@@ -307,20 +322,20 @@ namespace OpenSim.Groups
m.Contribution = Int32.Parse(d.Data["Contribution"]);
m.ListInProfile = d.Data["ListInProfile"] == "1" ? true : false;
GridUserData gud = m_GridUserService.Get(d.PrincipalID);
if (gud != null)
{
if (bool.Parse(gud.Data["Online"]))
{
m.OnlineStatus = @"Online";
}
else
{
int unixtime = int.Parse(gud.Data["Login"]);
// The viewer is very picky about how these strings are formed. Eg. it will crash on malformed dates!
m.OnlineStatus = (unixtime == 0) ? @"unknown" : Util.ToDateTime(unixtime).ToString("MM/dd/yyyy");
}
}
GridUserData gud = m_GridUserService.Get(d.PrincipalID);
if (gud != null)
{
if (bool.Parse(gud.Data["Online"]))
{
m.OnlineStatus = @"Online";
}
else
{
int unixtime = int.Parse(gud.Data["Login"]);
// The viewer is very picky about how these strings are formed. Eg. it will crash on malformed dates!
m.OnlineStatus = (unixtime == 0) ? @"unknown" : Util.ToDateTime(unixtime).ToString("MM/dd/yyyy");
}
}
// Is this person an owner of the group?
m.IsOwner = (rolemembershipsList.Find(r => r.RoleID == ownerRoleID) != null) ? true : false;
@@ -368,7 +383,7 @@ namespace OpenSim.Groups
}
// Can't delete Everyone and Owners roles
if (roleID == UUID.Zero)
if (roleID.IsZero())
{
m_log.DebugFormat("[Groups]: Attempt at deleting Everyone role from group {0} denied", groupID);
return;
@@ -485,8 +500,8 @@ namespace OpenSim.Groups
// check permissions
bool limited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMemberLimited);
bool unlimited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMember) | IsOwner(RequestingAgentID, GroupID);
if (!limited || !unlimited)
bool unlimited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMember) || IsOwner(RequestingAgentID, GroupID);
if (!limited && !unlimited)
{
m_log.DebugFormat("[Groups]: ({0}) Attempt at assigning {1} to role {2} denied because of lack of permission", RequestingAgentID, AgentID, RoleID);
return false;
@@ -496,7 +511,7 @@ namespace OpenSim.Groups
if (!unlimited && limited)
{
// check whether person's has this role
RoleMembershipData rolemembership = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID);
RoleMembershipData rolemembership = m_Database.RetrieveRoleMember(GroupID, RoleID, RequestingAgentID);
if (rolemembership == null)
{
m_log.DebugFormat("[Groups]: ({0}) Attempt at assigning {1} to role {2} denied because of limited permission", RequestingAgentID, AgentID, RoleID);
@@ -512,17 +527,30 @@ namespace OpenSim.Groups
public bool RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
{
// Don't remove from Everyone role!
if (RoleID == UUID.Zero)
if (RoleID.IsZero())
return false;
// check permissions
bool limited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMemberLimited);
bool unlimited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMember) || IsOwner(RequestingAgentID, GroupID);
if (!unlimited)
if (!limited && !unlimited)
{
m_log.DebugFormat("[Groups]: ({0}) Attempt at removing {1} from role {2} denied because of lack of permission", RequestingAgentID, AgentID, RoleID);
return false;
}
// AssignMemberLimited means that the person can assign another person to the same roles that she has in the group
if (!unlimited && limited)
{
// check whether person's has this role
RoleMembershipData rolemembership = m_Database.RetrieveRoleMember(GroupID, RoleID, RequestingAgentID);
if (rolemembership == null)
{
m_log.DebugFormat("[Groups]: ({0}) Attempt at removing {1} from role {2} denied because of limited permission", RequestingAgentID, AgentID, RoleID);
return false;
}
}
RoleMembershipData rolemember = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID);
if (rolemember == null)
@@ -536,12 +564,12 @@ namespace OpenSim.Groups
if (rdata != null)
foreach (RoleMembershipData r in rdata)
{
if (r.RoleID != UUID.Zero)
if (!r.RoleID.IsZero())
{
newRoleID = r.RoleID;
break;
}
}
}
}
MembershipData member = m_Database.RetrieveMember(GroupID, AgentID);
if (member != null)
@@ -699,7 +727,7 @@ namespace OpenSim.Groups
m_Database.StoreMember(membership);
}
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
public bool AddGroupNotice(string RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message,
bool hasAttachment, byte attType, string attName, UUID attItemID, string attOwnerID)
{
// Check perms
@@ -809,10 +837,10 @@ namespace OpenSim.Groups
_AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, UUID.Zero);
// Add principal to role, if different from everyone role
if (RoleID != UUID.Zero)
if (!RoleID.IsZero())
_AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, RoleID);
// Make thit this active group
// Make this the active group
PrincipalData pdata = new PrincipalData();
pdata.PrincipalID = AgentID;
pdata.ActiveGroupID = GroupID;
@@ -830,7 +858,7 @@ namespace OpenSim.Groups
return false;
}
if (!add && data == null) // it deosn't exist, can't update
if (!add && data == null) // it doesn't exist, can't update
{
m_log.DebugFormat("[Groups]: Group {0} doesn't exist. Can't update it", groupID);
return false;
@@ -1030,13 +1058,24 @@ namespace OpenSim.Groups
private bool HasPower(string agentID, UUID groupID, GroupPowers power)
{
RoleMembershipData[] rmembership = m_Database.RetrieveMemberRoles(groupID, agentID);
if (rmembership == null || (rmembership != null && rmembership.Length == 0))
if (rmembership is null || rmembership.Length == 0)
return false;
foreach (RoleMembershipData rdata in rmembership)
{
if(rdata is null)
{
m_log.Warn($"[GROUPSERVICE] null membership data entry in group {groupID} for agent {agentID}");
continue;
}
RoleData role = m_Database.RetrieveRole(groupID, rdata.RoleID);
if ( (UInt64.Parse(role.Data["Powers"]) & (ulong)power) != 0 )
if (role is null)
{
m_log.Warn($"[GROUPSERVICE] role with id {rdata.RoleID} is null");
continue;
}
if ((UInt64.Parse(role.Data["Powers"]) & (ulong)power) != 0)
return true;
}
return false;
@@ -1045,14 +1084,14 @@ namespace OpenSim.Groups
private bool IsOwner(string agentID, UUID groupID)
{
GroupData group = m_Database.RetrieveGroup(groupID);
if (group == null)
if (group is null)
return false;
RoleMembershipData rmembership = m_Database.RetrieveRoleMember(groupID, new UUID(group.Data["OwnerRoleID"]), agentID);
if (rmembership == null)
if(!UUID.TryParse(group.Data["OwnerRoleID"], out UUID ownerRoleID))
return false;
return true;
RoleMembershipData rmembership = m_Database.RetrieveRoleMember(groupID, ownerRoleID, agentID);
return rmembership is not null;
}
#endregion

View File

@@ -35,67 +35,67 @@ using OpenSim.Services.Base;
namespace OpenSim.Groups
{
public class GroupsServiceBase : ServiceBase
{
protected IGroupsData m_Database = null;
protected IGridUserData m_GridUserService = null;
public class GroupsServiceBase : ServiceBase
{
protected IGroupsData m_Database = null;
protected IGridUserData m_GridUserService = null;
public GroupsServiceBase(IConfigSource config, string cName)
: base(config)
{
string dllName = String.Empty;
string connString = String.Empty;
string realm = "os_groups";
string usersRealm = "GridUser";
string configName = (cName == string.Empty) ? "Groups" : cName;
public GroupsServiceBase(IConfigSource config, string cName)
: base(config)
{
string dllName = String.Empty;
string connString = String.Empty;
string realm = "os_groups";
string usersRealm = "GridUser";
string configName = (cName.Length == 0) ? "Groups" : cName;
//
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig != null)
{
if (dllName == String.Empty)
dllName = dbConfig.GetString("StorageProvider", String.Empty);
if (connString == String.Empty)
connString = dbConfig.GetString("ConnectionString", String.Empty);
}
//
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig != null)
{
if (dllName.Length == 0)
dllName = dbConfig.GetString("StorageProvider", String.Empty);
if (connString.Length == 0)
connString = dbConfig.GetString("ConnectionString", String.Empty);
}
//
// [Groups] section overrides [DatabaseService], if it exists
//
IConfig groupsConfig = config.Configs[configName];
if (groupsConfig != null)
{
dllName = groupsConfig.GetString("StorageProvider", dllName);
connString = groupsConfig.GetString("ConnectionString", connString);
realm = groupsConfig.GetString("Realm", realm);
}
//
// [Groups] section overrides [DatabaseService], if it exists
//
IConfig groupsConfig = config.Configs[configName];
if (groupsConfig != null)
{
dllName = groupsConfig.GetString("StorageProvider", dllName);
connString = groupsConfig.GetString("ConnectionString", connString);
realm = groupsConfig.GetString("Realm", realm);
}
//
// We tried, but this doesn't exist. We can't proceed.
//
if (dllName.Equals(String.Empty))
throw new Exception("No StorageProvider configured");
//
// We tried, but this doesn't exist. We can't proceed.
//
if (dllName.Equals(String.Empty))
throw new Exception("No StorageProvider configured");
m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
if (m_Database == null)
throw new Exception("Could not find a storage interface in the given module " + dllName);
m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
if (m_Database == null)
throw new Exception("Could not find a storage interface in the given module " + dllName);
//
// [GridUserService] section overrides [DatabaseService], if it exists
//
IConfig usersConfig = config.Configs["GridUserService"];
if (usersConfig != null)
{
dllName = usersConfig.GetString("StorageProvider", dllName);
connString = usersConfig.GetString("ConnectionString", connString);
//
// [GridUserService] section overrides [DatabaseService], if it exists
//
IConfig usersConfig = config.Configs["GridUserService"];
if (usersConfig != null)
{
dllName = usersConfig.GetString("StorageProvider", dllName);
connString = usersConfig.GetString("ConnectionString", connString);
usersRealm = usersConfig.GetString("Realm", usersRealm);
}
}
m_GridUserService = LoadPlugin<IGridUserData>(dllName, new Object[] { connString, usersRealm });
if (m_GridUserService == null)
throw new Exception("Could not find a storage inferface for the given users module " + dllName);
}
}
m_GridUserService = LoadPlugin<IGridUserData>(dllName, new Object[] { connString, usersRealm });
if (m_GridUserService == null)
throw new Exception("Could not find a storage inferface for the given users module " + dllName);
}
}
}

View File

@@ -76,7 +76,7 @@ namespace OpenSim.Groups
// Check if it already exists
GroupData grec = m_Database.RetrieveGroup(groupID);
if (grec == null ||
if (grec == null ||
(grec != null && grec.Data["Location"] != string.Empty && grec.Data["Location"].ToLower() != serviceLocation.ToLower()))
{
// Create the group
@@ -100,7 +100,7 @@ namespace OpenSim.Groups
return false;
}
if (grec.Data["Location"] == string.Empty)
if (grec.Data["Location"].Length == 0)
{
reason = "Cannot add proxy membership to non-proxy group";
return false;
@@ -161,7 +161,7 @@ namespace OpenSim.Groups
return null;
ExtendedGroupRecord grec;
if (GroupID == UUID.Zero)
if (GroupID.IsZero())
grec = GetGroupRecord(RequestingAgentID, groupName);
else
grec = GetGroupRecord(RequestingAgentID, GroupID);
@@ -234,7 +234,7 @@ namespace OpenSim.Groups
}
// check that the group is remote
if (grec.ServiceLocation == string.Empty)
if (grec.ServiceLocation.Length == 0)
{
m_log.DebugFormat("[Groups.HGGroupsService]: attempt at adding notice to local (non-proxy) group");
return false;

View File

@@ -63,7 +63,7 @@ namespace OpenSim.OfflineIM
m_Enabled = true;
string serviceLocation = cnf.GetString("OfflineMessageURL", string.Empty);
if (serviceLocation == string.Empty)
if (serviceLocation.Length == 0)
m_OfflineIMService = new OfflineIMService(config);
else
m_OfflineIMService = new OfflineIMServiceRemoteConnector(config);
@@ -114,7 +114,6 @@ namespace OpenSim.OfflineIM
scene.ForEachClient(delegate(IClientAPI client)
{
client.OnRetrieveInstantMessages -= RetrieveInstantMessages;
client.OnMuteListRequest -= OnMuteListRequest;
});
}
@@ -162,7 +161,6 @@ namespace OpenSim.OfflineIM
private void OnNewClient(IClientAPI client)
{
client.OnRetrieveInstantMessages += RetrieveInstantMessages;
client.OnMuteListRequest += OnMuteListRequest;
}
private void RetrieveInstantMessages(IClientAPI client)
@@ -187,27 +185,16 @@ namespace OpenSim.OfflineIM
// Needed for proper state management for stored group
// invitations
//
Scene s = FindScene(client.AgentId);
Scene s = client.Scene as Scene;
if (s != null)
{
im.offline = 1;
s.EventManager.TriggerIncomingInstantMessage(im);
}
}
}
}
// Apparently this is needed in order for the viewer to request the IMs.
private void OnMuteListRequest(IClientAPI client, uint crc)
{
m_log.DebugFormat("[OfflineIM.V2] Got mute list request for crc {0}", crc);
string filename = "mutes" + client.AgentId.ToString();
IXfer xfer = client.Scene.RequestModuleInterface<IXfer>();
if (xfer != null)
{
xfer.AddNewFile(filename, new Byte[0]);
client.SendMuteListUpdate(filename);
}
}
private void UndeliveredMessage(GridInstantMessage im)
{
if (im.dialog != (byte)InstantMessageDialog.MessageFromObject &&

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Addons.OfflineIM")]
@@ -15,8 +15,8 @@ using Mono.Addins;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -26,11 +26,11 @@ using Mono.Addins;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.2.*")]
[assembly: AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]
[assembly: Addin("OpenSim.OfflineIM", OpenSim.VersionInfo.VersionNumber)]
[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]

View File

@@ -77,7 +77,7 @@ namespace OpenSim.OfflineIM
break;
}
///
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: Offline IM server at {0} with auth {1}",
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: Offline IM server at {0} with auth {1}",
m_ServerURI, (m_Auth == null ? "None" : m_Auth.GetType().ToString()));
}
@@ -88,36 +88,42 @@ namespace OpenSim.OfflineIM
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["PrincipalID"] = principalID;
Dictionary<string, object> ret = MakeRequest("GET", sendData);
Dictionary<string, object> ret = MakeRequest("GET", sendData);
if (ret == null)
return ims;
if (!ret.ContainsKey("RESULT"))
if (!ret.TryGetValue("RESULT", out object resultobj))
return ims;
string result = ret["RESULT"].ToString();
if (result == "NULL" || result.ToLower() == "false")
if(resultobj is string result)
{
string reason = ret.ContainsKey("REASON") ? ret["REASON"].ToString() : "Unknown error";
m_log.DebugFormat("[OfflineIM.V2.RemoteConnector]: GetMessages for {0} failed: {1}", principalID, reason);
return ims;
if (result == "NULL" || result.Equals("false", StringComparison.InvariantCultureIgnoreCase))
{
if (ret.TryGetValue("REASON", out object rso))
m_log.Debug($"[OfflineIM.V2.RemoteConnector]: GetMessages for {principalID} failed: {rso}");
else
m_log.Debug($"[OfflineIM.V2.RemoteConnector]: GetMessages for {principalID} failed: Unknown error");
return ims;
}
}
foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values)
else if(resultobj is Dictionary<string, object> resultdic)
{
GridInstantMessage m = OfflineIMDataUtils.GridInstantMessage((Dictionary<string, object>)v);
ims.Add(m);
foreach (object v in resultdic.Values)
{
if (v is Dictionary<string, object> vdic)
{
GridInstantMessage m = OfflineIMDataUtils.GridInstantMessage(vdic);
ims.Add(m);
}
}
}
return ims;
}
public bool StoreMessage(GridInstantMessage im, out string reason)
{
reason = string.Empty;
Dictionary<string, object> sendData = OfflineIMDataUtils.GridInstantMessage(im);
Dictionary<string, object> ret = MakeRequest("STORE", sendData);
if (ret == null)
@@ -126,13 +132,20 @@ namespace OpenSim.OfflineIM
return false;
}
string result = ret["RESULT"].ToString();
if (result == "NULL" || result.ToLower() == "false")
if(ret.TryGetValue("RESULT", out object o))
{
reason = ret.ContainsKey("REASON") ? ret["REASON"].ToString() : "Unknown error";
return false;
string result = o.ToString();
if (result == "NULL" || result.Equals("false", StringComparison.InvariantCultureIgnoreCase))
{
if(ret.TryGetValue("REASON", out object ro))
reason = ro.ToString();
else
reason = "Unknown error";
return false;
}
}
reason = string.Empty;
return true;
}
@@ -140,7 +153,7 @@ namespace OpenSim.OfflineIM
{
Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["UserID"] = userID;
MakeRequest("DELETE", sendData);
}
@@ -160,8 +173,7 @@ namespace OpenSim.OfflineIM
ServerUtils.BuildQueryString(sendData),
m_Auth);
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(
reply);
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
return replyData;
}

View File

@@ -28,10 +28,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Timers;
using System.Xml;
using System.Xml.Serialization;
using log4net;
@@ -40,21 +37,59 @@ using Nini.Config;
using OpenMetaverse;
using OpenSim.Data;
using OpenSim.Framework;
using OpenSim.Services.Base;
using OpenSim.Services.Interfaces;
namespace OpenSim.OfflineIM
{
public class OfflineIMService : OfflineIMServiceBase, IOfflineIMService
public class OfflineIMService : ServiceBase, IOfflineIMService
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private const int MAX_IM = 25;
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IOfflineIMData m_Database = null;
private int m_MaxOfflineIMs = 25;
private XmlSerializer m_serializer;
private static bool m_Initialized = false;
public OfflineIMService(IConfigSource config)
: base(config)
public OfflineIMService(IConfigSource config) : base(config)
{
string dllName = string.Empty;
string connString = string.Empty;
string realm = "im_offline";
//
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig is not null)
{
if (dllName.Length == 0)
dllName = dbConfig.GetString("StorageProvider", string.Empty);
if (connString.Length == 0)
connString = dbConfig.GetString("ConnectionString", string.Empty);
}
//
// [Messaging] section overrides [DatabaseService], if it exists
//
IConfig imConfig = config.Configs["Messaging"];
if (imConfig is not null)
{
dllName = imConfig.GetString("StorageProvider", dllName);
connString = imConfig.GetString("ConnectionString", connString);
realm = imConfig.GetString("Realm", realm);
m_MaxOfflineIMs = imConfig.GetInt("MaxOfflineIMs", m_MaxOfflineIMs);
}
//
// We tried, but this doesn't exist. We can't proceed.
//
if (string.IsNullOrEmpty(dllName))
throw new Exception("No StorageProvider configured");
m_Database = LoadPlugin<IOfflineIMData>(dllName, new Object[] { connString, realm });
if (m_Database is null)
throw new Exception("Could not find a storage interface in the given module " + dllName);
m_serializer = new XmlSerializer(typeof(GridInstantMessage));
if (!m_Initialized)
{
@@ -68,8 +103,7 @@ namespace OpenSim.OfflineIM
List<GridInstantMessage> ims = new List<GridInstantMessage>();
OfflineIMData[] messages = m_Database.Get("PrincipalID", principalID.ToString());
if (messages == null || (messages != null && messages.Length == 0))
if (messages is null || messages.Length == 0)
return ims;
foreach (OfflineIMData m in messages)
@@ -90,11 +124,11 @@ namespace OpenSim.OfflineIM
public bool StoreMessage(GridInstantMessage im, out string reason)
{
reason = string.Empty;
// Check limits
UUID principalID = new UUID(im.toAgentID);
long count = m_Database.GetCount("PrincipalID", principalID.ToString());
if (count >= MAX_IM)
if (count >= m_MaxOfflineIMs)
{
reason = "Number of offline IMs has maxed out";
return false;
@@ -110,9 +144,8 @@ namespace OpenSim.OfflineIM
{
m_serializer.Serialize(writer, im);
writer.Flush();
imXml = Util.UTF8NoBomEncoding.GetString(mstream.ToArray());
}
imXml = Util.UTF8NoBomEncoding.GetString(mstream.ToArray());
}
OfflineIMData data = new OfflineIMData();
@@ -130,6 +163,5 @@ namespace OpenSim.OfflineIM
m_Database.Delete("PrincipalID", userID.ToString());
m_Database.Delete("FromID", userID.ToString());
}
}
}

View File

@@ -1,83 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Data;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Base;
namespace OpenSim.OfflineIM
{
public class OfflineIMServiceBase : ServiceBase
{
protected IOfflineIMData m_Database = null;
public OfflineIMServiceBase(IConfigSource config)
: base(config)
{
string dllName = String.Empty;
string connString = String.Empty;
string realm = "im_offline";
//
// Try reading the [DatabaseService] section, if it exists
//
IConfig dbConfig = config.Configs["DatabaseService"];
if (dbConfig != null)
{
if (dllName == String.Empty)
dllName = dbConfig.GetString("StorageProvider", String.Empty);
if (connString == String.Empty)
connString = dbConfig.GetString("ConnectionString", String.Empty);
}
//
// [Messaging] section overrides [DatabaseService], if it exists
//
IConfig imConfig = config.Configs["Messaging"];
if (imConfig != null)
{
dllName = imConfig.GetString("StorageProvider", dllName);
connString = imConfig.GetString("ConnectionString", connString);
realm = imConfig.GetString("Realm", realm);
}
//
// We tried, but this doesn't exist. We can't proceed.
//
if (dllName.Equals(String.Empty))
throw new Exception("No StorageProvider configured");
m_Database = LoadPlugin<IOfflineIMData>(dllName, new Object[] { connString, realm });
if (m_Database == null)
throw new Exception("Could not find a storage interface in the given module " + dllName);
}
}
}

View File

@@ -0,0 +1,428 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace osWebRtcVoice
{
// There are several different hashing systems ranging from int's to SHA versions.
// The model here is to create a hasher of the desired type, do Add's of things to
// hash, and complete with a Finish() to return a BHash that contains the hash value.
// Since some hash functions are incremental (doing Add's) while some are buffer
// oriented (create a hash of a byte buffer), the interface is built to cover both.
// Some optimizations are implemented internally (like not copying the buffer
// for buffer based hashers if Finish(bytes) is used).
//
// var hasher = new BHashSHA256();
// BHash bHash = hasher.Finish(buffer);
// byte[] theHash = bHash.ToByte();
//
// Note that BHash has IEquatable and IComparible so it can be used in Dictionaries
// and sorted Lists.
//
// The C# GetHashCode() method returns an int that is usually based on location.
// Signatures should really be at least 64 bits so these routines generate
// ulong's for hashes and fold them to make the int for GetHashCode().
// Create a BHasher, do a bunch of 'Add's, then Finish().
public interface IBHasher {
// Create a new object implementing BHasher, then Add values to be hashed
void Add(byte c);
void Add(ushort c);
void Add(uint c);
void Add(ulong c);
void Add(float c);
void Add(byte[] c, int offset, int len);
void Add(string c);
void Add(BHash c);
BHash Finish();
// Finish and add byte array.
// If no Add's before, can do the hashing without copying the byte array
BHash Finish(byte[] c);
BHash Finish(byte[] c, int offset, int len);
// Get the hash code after doing a Finish()
BHash Hash();
}
// ======================================================================
// BHasher computes a BHash which holds the hash value after Finish() is called.
public abstract class BHash : IEquatable<BHash>, IComparable<BHash> {
public abstract override string ToString();
public abstract byte[] ToBytes();
public abstract ulong ToULong(); // returns the hash of the hash if not int based hash
public abstract bool Equals(BHash other);
public abstract int CompareTo(BHash obj);
// public abstract int Compare(BHash x, BHash y); // TODO: do we need this function?
public abstract override int GetHashCode(); // to match the C# standard hash function
}
// A hash that is an UInt64
public class BHashULong : BHash {
protected ulong _hash;
public BHashULong() {
_hash = 5131;
}
public BHashULong(ulong initialHash) {
_hash = initialHash;
}
// the .NET GetHashCode uses an int. Make conversion easy.
public BHashULong(int initialHash) {
_hash = (ulong)initialHash;
}
public override string ToString() {
return _hash.ToString();
}
public override byte[] ToBytes() {
return BitConverter.GetBytes(_hash);
}
public override ulong ToULong() {
return _hash;
}
public override bool Equals(BHash other) {
bool ret = false;
if (other != null) {
BHash bh = other as BHashULong;
if (bh != null) {
ret = _hash.Equals(bh.ToULong());
}
}
return ret;
}
public override int CompareTo(BHash other) {
int ret = 1;
if (other != null) {
if (other is BHashULong bh) {
ret = _hash.CompareTo(bh.ToULong());
}
}
return ret;
}
public override int GetHashCode() {
ulong upper = (_hash >> 32) & 0xffffffff;
ulong lower = _hash & 0xffffffff;
return (int)(upper ^ lower);
}
}
// A hash that is an array of bytes
public class BHashBytes : BHash {
private readonly byte[] _hash;
public BHashBytes() {
_hash = new byte[0];
}
public BHashBytes(byte[] initialHash) {
_hash = initialHash;
}
public override string ToString() {
// BitConverter puts a hyphen between each byte. Remove them
return BitConverter.ToString(_hash).Replace("-", String.Empty);
}
public override byte[] ToBytes() {
return _hash;
}
public override ulong ToULong() {
return this.MakeHashCode();
}
public override bool Equals(BHash other) {
bool ret = false;
if (other != null) {
BHash bh = other as BHashBytes;
if (bh != null) {
ret = _hash.Equals(bh.ToBytes());
}
}
return ret;
}
public override int CompareTo(BHash other) {
int ret = 1;
if (other != null) {
BHash bh = other as BHashBytes;
if (bh != null) {
byte[] otherb = bh.ToBytes();
if (_hash.Length != otherb.Length) {
ret = _hash.Length.CompareTo(otherb.Length);
}
else {
ret = 0; // start off assuming they are equal
for (int ii = 0; ii < _hash.Length; ii++) {
ret = _hash[ii].CompareTo(otherb[ii]);
if (ret != 0) break;
}
}
}
}
return ret;
}
public override int GetHashCode()
{
ulong hashhash = this.MakeHashCode();
ulong upper = (hashhash >> 32 )& 0xffffffff;
ulong lower = hashhash & 0xffffffff;
return (int)(upper ^ lower);
}
public ulong MakeHashCode() {
ulong h = 5381;
for (int ii = 0; ii < _hash.Length; ii++) {
h = ((h << 5) + h) + (ulong)(_hash[ii]);
}
return h;
}
}
// ======================================================================
// ======================================================================
public abstract class BHasher : IBHasher
{
public BHasher() {
}
public abstract void Add(byte c);
public abstract void Add(ushort c);
public abstract void Add(uint c);
public abstract void Add(ulong c);
public abstract void Add(float c);
public abstract void Add(byte[] c, int offset, int len);
public abstract void Add(string c);
public abstract void Add(BHash c);
public abstract BHash Finish();
public abstract BHash Finish(byte[] c);
public abstract BHash Finish(byte[] c, int offset, int len);
public abstract BHash Hash();
}
// A hasher that builds up a buffer of bytes ('building') and then hashes over same
public abstract class BHasherBytes : BHasher {
protected byte[] building;
protected int buildingLoc;
protected int allocStep = 1024;
public BHasherBytes() : base() {
building = new byte[allocStep];
buildingLoc = 0;
}
private byte[] oneByte = new byte[1];
public override void Add(byte c) {
oneByte[0] = c;
AddBytes(oneByte, 0, 1);
}
public override void Add(ushort c) {
byte[] bytes = BitConverter.GetBytes(c);
AddBytes(bytes, 0, bytes.Length);
}
public override void Add(uint c) {
byte[] bytes = BitConverter.GetBytes(c);
AddBytes(bytes, 0, bytes.Length);
}
public override void Add(ulong c) {
byte[] bytes = BitConverter.GetBytes(c);
AddBytes(bytes, 0, bytes.Length);
}
public override void Add(float c) {
byte[] bytes = BitConverter.GetBytes(c);
AddBytes(bytes, 0, bytes.Length);
}
public override void Add(byte[] c, int offset, int len) {
AddBytes(c, offset, len);
}
public override void Add(string c)
{
byte[] bytes = Encoding.UTF8.GetBytes(c);
AddBytes(bytes, 0, bytes.Length);
}
public override void Add(BHash c) {
byte[] bytes = c.ToBytes();
AddBytes(bytes, 0, bytes.Length);
}
// Implemented by derived class
// public abstract BHash Finish();
// Helper function for simple byte array
public override BHash Finish(byte[] c) {
return this.Finish(c, 0, c.Length);
}
// Implemented by derived class
// public abstract BHash Finish(byte[] c, int offset, int len);
// Implemented by derived class
// public abstract BHash Hash();
// Add the given number of bytes to the byte array being built
protected void AddBytes(byte[] addition, int offset, int len) {
// byte[] tempBytes = new byte[len]; // DEBUG DEBUG
// Array.Copy(addition, offset, tempBytes, 0, len); // DEBUG DEBUG
// System.Console.WriteLine(String.Format("AddBytes: offset={0}, len={1}, bytes={2}", // DEBUG DEBUG
// offset, len, BitConverter.ToString(tempBytes).Replace("-", String.Empty))); // DEBUG DEBUG
if (len < 0 || offset < 0 || addition == null) {
throw new ArgumentException(String.Format("BHasherBytes.AddBytes: Bad parameters. offset={0}, len={1}",
offset, len));
}
if (offset + len > addition.Length) {
throw new ArgumentException(String.Format("BHasherBytes.AddBytes: addition parameters off end of array. addition.len={0}, offset={1}, len={2}",
addition.Length, offset, len));
}
if (len > 0) {
if (buildingLoc + len > building.Length) {
// New data requires expanding the data buffer
byte[] newBuilding = new byte[buildingLoc + len + allocStep];
Buffer.BlockCopy(building, 0, newBuilding, 0, buildingLoc);
building = newBuilding;
}
Buffer.BlockCopy(addition, offset, building, buildingLoc, len);
buildingLoc += len;
}
}
}
// ======================================================================
// ULong hash code taken from Meshmerizer
public class BHasherMdjb2 : BHasherBytes, IBHasher {
BHashULong hash = new BHashULong();
public BHasherMdjb2() : base() {
}
public override BHash Finish() {
hash = new BHashULong(ComputeMdjb2Hash(building, 0, buildingLoc));
return hash;
}
public override BHash Finish(byte[] c, int offset, int len) {
if (building.Length > 0) {
AddBytes(c, offset, len);
hash = new BHashULong(ComputeMdjb2Hash(building, 0, buildingLoc));
}
else {
// if no 'Add's were done, don't copy the input data
hash = new BHashULong(ComputeMdjb2Hash(c, offset, len));
}
return hash;
}
private ulong ComputeMdjb2Hash(byte[] c, int offset, int len) {
ulong h = 5381;
for (int ii = offset; ii < offset+len; ii++) {
h = ((h << 5) + h) + (ulong)(c[ii]);
}
return h;
}
public override BHash Hash() {
return hash;
}
}
// ======================================================================
public class BHasherMD5 : BHasherBytes, IBHasher {
BHashBytes hash = new BHashBytes();
public BHasherMD5() : base() {
}
public override BHash Finish() {
MD5 md5 = MD5.Create();
hash = new BHashBytes(md5.ComputeHash(building, 0, buildingLoc));
return hash;
}
public override BHash Finish(byte[] c) {
return this.Finish(c, 0, c.Length);
}
public override BHash Finish(byte[] c, int offset, int len) {
MD5 md5 = MD5.Create();
if (building.Length > 0) {
AddBytes(c, offset, len);
hash = new BHashBytes(md5.ComputeHash(building, 0, buildingLoc));
}
else {
// if no 'Add's were done, don't copy the input data
hash = new BHashBytes(md5.ComputeHash(c, offset, len));
}
return hash;
}
public override BHash Hash() {
return hash;
}
}
// ======================================================================
public class BHasherSHA256 : BHasherBytes, IBHasher {
BHashBytes hash = new BHashBytes();
public BHasherSHA256() : base() {
}
public override BHash Finish() {
using (SHA256 SHA256 = SHA256.Create()) {
hash = new BHashBytes(SHA256.ComputeHash(building, 0, buildingLoc));
}
return hash;
}
public override BHash Finish(byte[] c) {
return this.Finish(c, 0, c.Length);
}
public override BHash Finish(byte[] c, int offset, int len) {
using (SHA256 SHA256 = SHA256.Create()) {
if (buildingLoc > 0) {
AddBytes(c, offset, len);
hash = new BHashBytes(SHA256.ComputeHash(building, 0, buildingLoc));
}
else {
// if no 'Add's were done, don't copy the input data
hash = new BHashBytes(SHA256.ComputeHash(c, offset, len));
}
}
return hash;
}
public override BHash Hash() {
return hash;
}
}
}

View File

@@ -0,0 +1,251 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
using log4net;
namespace osWebRtcVoice
{
// Encapsulization of a Session to the Janus server
public class JanusAudioBridge : JanusPlugin
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[JANUS AUDIO BRIDGE]";
// Wrapper around the session connection to Janus-gateway
public JanusAudioBridge(JanusSession pSession) : base(pSession, "janus.plugin.audiobridge")
{
// m_log.DebugFormat("{0} JanusAudioBridge constructor", LogHeader);
}
public override void Dispose()
{
if (IsConnected)
{
// Close the handle
}
base.Dispose();
}
public async Task<AudioBridgeResp> SendAudioBridgeMsg(PluginMsgReq pMsg)
{
AudioBridgeResp ret = null;
try
{
ret = new AudioBridgeResp(await SendPluginMsg(pMsg));
}
catch (Exception e)
{
m_log.ErrorFormat("{0} SendPluginMsg. Exception {1}", LogHeader, e);
}
return ret;
}
/// <summary>
/// Create a room with the given criteria. This talks to Janus to create the room.
/// If the room with this RoomId already exists, just return it.
/// Janus could create and return the RoomId but this presumes that the Janus server
/// is only being used for our voice service.
/// </summary>
/// <param name="pRoomId">integer room ID to create</param>
/// <param name="pSpatial">boolean on whether room will be spatial or non-spatial</param>
/// <param name="pRoomDesc">added as "description" to the created room</param>
/// <returns></returns>
public async Task<JanusRoom> CreateRoom(int pRoomId, bool pSpatial, string pRoomDesc)
{
JanusRoom ret = null;
try
{
JanusMessageResp resp = await SendPluginMsg(new AudioBridgeCreateRoomReq(pRoomId, pSpatial, pRoomDesc));
AudioBridgeResp abResp = new AudioBridgeResp(resp);
m_log.DebugFormat("{0} CreateRoom. ReturnCode: {1}", LogHeader, abResp.AudioBridgeReturnCode);
switch (abResp.AudioBridgeReturnCode)
{
case "created":
ret = new JanusRoom(this, pRoomId);
break;
case "event":
if (abResp.AudioBridgeErrorCode == 486)
{
m_log.WarnFormat("{0} CreateRoom. Room {1} already exists. Reusing! {2}", LogHeader, pRoomId, abResp.ToString());
// if room already exists, just use it
ret = new JanusRoom(this, pRoomId);
}
else
{
m_log.ErrorFormat("{0} CreateRoom. XX Room creation failed: {1}", LogHeader, abResp.ToString());
}
break;
default:
m_log.ErrorFormat("{0} CreateRoom. YY Room creation failed: {1}", LogHeader, abResp.ToString());
break;
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} CreateRoom. Exception {1}", LogHeader, e);
}
return ret;
}
public async Task<bool> DestroyRoom(JanusRoom janusRoom)
{
bool ret = false;
try
{
JanusMessageResp resp = await SendPluginMsg(new AudioBridgeDestroyRoomReq(janusRoom.RoomId));
ret = true;
}
catch (Exception e)
{
m_log.ErrorFormat("{0} DestroyRoom. Exception {1}", LogHeader, e);
}
return ret;
}
// Constant used to denote that this is a spatial audio room for the region (as opposed to parcels)
public const int REGION_ROOM_ID = -999;
private Dictionary<int, JanusRoom> _rooms = new Dictionary<int, JanusRoom>();
// Calculate a room number for the given parameters. The room number is a hash of the parameters.
// The attempt is to deterministicly create a room number so all regions will generate the
// same room number across sessions and across the grid.
// getHashCode() is not deterministic across sessions.
public static int CalcRoomNumber(string pRegionId, string pChannelType, int pParcelLocalID, string pChannelID)
{
var hasher = new BHasherMdjb2();
// If there is a channel specified it must be group
switch (pChannelType)
{
case "local":
// A "local" channel is unique to the region and parcel
hasher.Add(pRegionId);
hasher.Add(pChannelType);
hasher.Add(pParcelLocalID);
break;
case "multiagent":
// A "multiagent" channel is unique to the grid
// should add a GridId here
hasher.Add(pChannelID);
hasher.Add(pChannelType);
break;
default:
throw new Exception("Unknown channel type: " + pChannelType);
}
var hashed = hasher.Finish();
// The "Abs()" is because Janus room number must be a positive integer
// And note that this is the BHash.GetHashCode() and not Object.getHashCode().
int roomNumber = Math.Abs(hashed.GetHashCode());
return roomNumber;
}
public async Task<JanusRoom> SelectRoom(string pRegionId, string pChannelType, bool pSpatial, int pParcelLocalID, string pChannelID)
{
int roomNumber = CalcRoomNumber(pRegionId, pChannelType, pParcelLocalID, pChannelID);
// Should be unique for the given use and channel type
m_log.DebugFormat("{0} SelectRoom: roomNumber={1}", LogHeader, roomNumber);
// Check to see if the room has already been created
lock (_rooms)
{
if (_rooms.ContainsKey(roomNumber))
{
return _rooms[roomNumber];
}
}
// The room doesn't exist. Create it.
string roomDesc = pRegionId + "/" + pChannelType + "/" + pParcelLocalID + "/" + pChannelID;
JanusRoom ret = await CreateRoom(roomNumber, pSpatial, roomDesc);
JanusRoom existingRoom = null;
if (ret is not null)
{
lock (_rooms)
{
if (_rooms.ContainsKey(roomNumber))
{
// If the room was created while we were waiting,
existingRoom = _rooms[roomNumber];
}
else
{
// Our room is the first one created. Save it.
_rooms[roomNumber] = ret;
}
}
}
if (existingRoom is not null)
{
// The room we created was already created by someone else. Delete ours and use the existing one
await DestroyRoom(ret);
ret = existingRoom;
}
return ret;
}
// Return the room with the given room ID or 'null' if no such room
public JanusRoom GetRoom(int pRoomId)
{
JanusRoom ret = null;
lock (_rooms)
{
_rooms.TryGetValue(pRoomId, out ret);
}
return ret;
}
public override void Handle_Event(JanusMessageResp pResp)
{
base.Handle_Event(pResp);
AudioBridgeResp abResp = new AudioBridgeResp(pResp);
if (abResp is not null && abResp.AudioBridgeReturnCode == "event")
{
// An audio bridge event!
m_log.DebugFormat("{0} Handle_Event. {1}", LogHeader, abResp.ToString());
}
}
public override void Handle_Message(JanusMessageResp pResp)
{
base.Handle_Message(pResp);
AudioBridgeResp abResp = new AudioBridgeResp(pResp);
if (abResp is not null && abResp.AudioBridgeReturnCode == "event")
{
// An audio bridge event!
m_log.DebugFormat("{0} Handle_Event. {1}", LogHeader, abResp.ToString());
}
}
}
}

View File

@@ -0,0 +1,665 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using OpenMetaverse.StructuredData;
using OpenMetaverse;
using log4net;
namespace osWebRtcVoice
{
/// <summary>
/// Wrappers around the Janus requests and responses.
/// Since the messages are JSON and, because of the libraries we are using,
/// the internal structure is an OSDMap, these routines hold all the logic
/// to getting and setting the values in the JSON.
/// </summary>
public class JanusMessage
{
protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected static readonly string LogHeader = "[JANUS MESSAGE]";
protected OSDMap m_message = new();
public JanusMessage()
{
}
// A basic Janus message is:
// {
// "janus": "operation",
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea",
// "session_id": 5645225333294848, // optional, gives the session ID
// "handle_id": 6969906757968657 // optional, gives the plugin handle ID
// "sender": 6969906757968657 // optional, gives the ID of the sending subsystem
// "jsep": { "type": "offer", "sdp": "..." } // optional, gives the SDP
// }
public JanusMessage(string pType) : this()
{
m_message["janus"] = pType;
m_message["transaction"] = UUID.Random().ToString();
}
public OSDMap RawBody => m_message;
public string TransactionId
{
get { return m_message.TryGetString("transaction", out string tid) ? tid : null; }
set { m_message["transaction"] = value; }
}
public string Sender
{
get { return m_message.TryGetString("sender", out string tid) ? tid : null; }
set { m_message["sender"] = value; }
}
public OSDMap Jsep
{
get { return m_message.TryGetOSDMap("jsep", out OSDMap jsep) ? jsep : null; }
set { m_message["jsep"] = value; }
}
public void SetJsep(string pOffer, string pSdp)
{
m_message["jsep"] = new OSDMap()
{
{ "type", pOffer },
{ "sdp", pSdp }
};
}
public void AddAPIToken(string pToken)
{
m_message["apisecret"] = pToken;
}
// Note that the session_id is a long number in the JSON so we convert the string.
public string sessionId
{
get
{
return m_message.TryGetValue("session_id", out OSD tmposd) ?
tmposd.AsLong().ToString() : string.Empty;
}
set
{
m_message["session_id"] = long.Parse(value);
}
}
public bool hasSessionId
{
get { return m_message.ContainsKey("session_id"); }
}
public void AddSessionId(string pToken)
{
AddSessionId(long.Parse(pToken));
}
public void AddSessionId(long pToken)
{
m_message["session_id"] = pToken;
}
public bool hasHandleId
{
get { return m_message.ContainsKey("handle_id"); }
}
public void AddHandleId(string pToken)
{
m_message["handle_id"] = long.Parse(pToken);
}
public string sender
{
get { return m_message.TryGetString("sender", out string str) ? str : string.Empty; }
}
public virtual string ToJson()
{
return m_message.ToString();
}
public override string ToString()
{
return m_message.ToString();
}
}
// ==============================================================
// A Janus request message is a basic Janus message with an API token
public class JanusMessageReq : JanusMessage
{
public JanusMessageReq(string pType) : base(pType)
{
}
}
// ==============================================================
// Janus message response is a basic Janus message with the response data
// {
// "janus": "success",
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea", // ID of the requesting message
// "data": { ... } // the response data
// "error": { "code": 123, "reason": "..." } // if there was an error
// }
// The "janus" return code changes depending on the request. The above is for
// a successful response. Could be
// "event": for an event message (See JanusEventResp)
// "keepalive": for a keepalive event
public class JanusMessageResp : JanusMessage
{
public JanusMessageResp() : base()
{
}
public JanusMessageResp(string pType) : base(pType)
{
}
public JanusMessageResp(OSDMap pMap) : base()
{
m_message = pMap;
}
public static JanusMessageResp FromJson(string pJson)
{
var newBody = OSDParser.DeserializeJson(pJson) as OSDMap;
return new JanusMessageResp(newBody);
}
// Return the "data" portion of the response as an OSDMap or null if there is none
public OSDMap dataSection { get { return m_message.TryGetOSDMap("data", out OSDMap osdm) ? osdm : null; } }
// Check if a successful response code is in the response
public virtual bool isSuccess { get { return CheckReturnCode("success"); } }
public virtual bool isEvent { get { return CheckReturnCode("event"); } }
public virtual bool isError { get { return CheckReturnCode("error"); } }
public virtual bool CheckReturnCode(string pCode)
{
return ReturnCode == pCode;
}
public virtual string ReturnCode
{
get
{
return m_message is not null && m_message.ContainsKey("janus") ?
m_message["janus"].AsString() : string.Empty;
}
}
}
// ==============================================================
// An error response is a Janus response with an error code and reason.
// {
// "janus": "error",
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea", // ID of the requesting message
// "error": { "code": 123, "reason": "..." } // if there was an error
// }
public class ErrorResp : JanusMessageResp
{
public ErrorResp() : base("error")
{
}
public ErrorResp(string pType) : base(pType)
{
}
public ErrorResp(JanusMessageResp pResp) : base(pResp.RawBody)
{
}
public void SetError(int pCode, string pReason)
{
m_message["error"] = new OSDMap()
{
{ "code", pCode },
{ "reason", pReason }
};
}
// Dig through the response to get the error code or 0 if there is none
public int errorCode
{
get
{
return m_message.TryGetOSDMap("error", out OSDMap errMap) ?
(int)errMap["code"].AsLong() : 0;
}
}
// Dig through the response to get the error reason or empty string if there is none
public string errorReason
{
get
{
return m_message.TryGetOSDMap("error", out OSDMap errMap) ?
errMap["reason"] : string.Empty;
}
}
}
// ==============================================================
// Create session request and response
public class CreateSessionReq : JanusMessageReq
{
public CreateSessionReq() : base("create")
{
}
}
public class CreateSessionResp : JanusMessageResp
{
public CreateSessionResp(JanusMessageResp pResp) : base(pResp.RawBody)
{ }
public string returnedId
{
get
{
// The JSON response gives a long number (not a string)
// and the ODMap conversion interprets it as a long (OSDLong).
// If one just does a "ToString()" on the OSD object, you
// get an interpretation of the binary value.
return dataSection.TryGetValue("id", out OSD oid) ? oid.AsLong().ToString() : string.Empty;
}
}
}
// ==============================================================
public class DestroySessionReq : JanusMessageReq
{
public DestroySessionReq() : base("destroy")
{
// Doesn't include the session ID because it is the URI
}
}
// ==============================================================
public class TrickleReq : JanusMessageReq
{
// An empty trickle request is used to signal the end of the trickle
public TrickleReq(JanusViewerSession pVSession) : base("trickle")
{
m_message["candidate"] = new OSDMap()
{
{ "completed", true },
};
}
public TrickleReq(JanusViewerSession pVSession, OSD pCandidates) : base("trickle")
{
m_message["viewer_session"] = pVSession.ViewerSessionID;
if (pCandidates is OSDArray)
m_message["candidates"] = pCandidates;
else
m_message["candidate"] = pCandidates;
}
}
// ==============================================================
public class AttachPluginReq : JanusMessageReq
{
public AttachPluginReq(string pPlugin) : base("attach")
{
m_message["plugin"] = pPlugin;
}
}
public class AttachPluginResp : JanusMessageResp
{
public AttachPluginResp(JanusMessageResp pResp) : base(pResp.RawBody)
{ }
public string pluginId
{
get
{
return dataSection.TryGetValue("id", out OSD oid) ? oid.AsLong().ToString() : string.Empty;
}
}
}
// ==============================================================
public class DetachPluginReq : JanusMessageReq
{
public DetachPluginReq() : base("detach")
{
// Doesn't include the session ID or plugin ID because it is the URI
}
}
// ==============================================================
public class HangupReq : JanusMessageReq
{
public HangupReq() : base("hangup")
{
// Doesn't include the session ID or plugin ID because it is the URI
}
}
// ==============================================================
// Plugin messages are defined here as wrappers around OSDMap.
// The ToJson() method is overridden to put the OSDMap into the
// message body.
// A plugin request is formatted like:
// {
// "janus": "message",
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea",
// "body": {
// "request": "create",
// "room": 10,
// "is_private": false,
// }
public class PluginMsgReq : JanusMessageReq
{
private OSDMap m_body = new OSDMap();
// Note that the passed OSDMap is placed in the "body" section of the message
public PluginMsgReq(OSDMap pBody) : base("message")
{
m_body = pBody;
}
public void AddStringToBody(string pKey, string pValue)
{
m_body[pKey] = pValue;
}
public void AddIntToBody(string pKey, int pValue)
{
m_body[pKey] = pValue;
}
public void AddBoolToBody(string pKey, bool pValue)
{
m_body[pKey] = pValue;
}
public void AddOSDToBody(string pKey, OSD pValue)
{
m_body[pKey] = pValue;
}
public override string ToJson()
{
m_message["body"] = m_body;
return base.ToJson();
}
}
// A plugin response is formatted like:
// {
// "janus": "success",
// "session_id": 5645225333294848,
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea",
// "sender": 6969906757968657,
// "plugindata": {
// "plugin": "janus.plugin.audiobridge",
// "data": {
// "audiobridge": "created",
// "room": 10,
// "permanent": false
// }
// }
public class PluginMsgResp : JanusMessageResp
{
public OSDMap m_pluginData;
public OSDMap m_data;
public PluginMsgResp(JanusMessageResp pResp) : base(pResp.RawBody)
{
if (m_message is not null && m_message.TryGetOSDMap("plugindata", out OSDMap m_pluginData))
{
// Move the plugin data up into the m_data var so it is easier to get to
if (m_pluginData is not null)
{
m_pluginData.TryGetOSDMap("data", out OSDMap m_data);
// m_log.DebugFormat("{0} AudioBridgeResp. Found both plugindata and data: data={1}", LogHeader, m_data.ToString());
}
}
}
public OSDMap PluginRespData
{
get { return m_data; }
}
// Get an integer value for a key in the response data or zero if not there
public int PluginRespDataInt(string pKey)
{
if (m_data is null)
return 0;
return m_data.TryGetValue(pKey, out OSD okey) ? (int)okey.AsLong(): 0;
}
// Get a string value for a key in the response data or empty string if not there
public string PluginRespDataString(string pKey)
{
if (m_data is null)
return string.Empty;
return m_data.TryGetValue(pKey, out OSD okey) ? okey.AsString() : string.Empty;
}
}
// ==============================================================
// Plugin messages for the audio bridge.
// Audiobridge responses are formatted like:
// {
// "janus": "success",
// "session_id": 5645225333294848,
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea",
// "sender": 6969906757968657,
// "plugindata": {
// "plugin": "janus.plugin.audiobridge",
// "data": {
// "audiobridge": "created",
// "room": 10,
// "permanent": false
// }
// }
public class AudioBridgeResp: PluginMsgResp
{
public AudioBridgeResp(JanusMessageResp pResp) : base(pResp)
{
}
public override bool isSuccess { get { return PluginRespDataString("audiobridge") == "success"; } }
// Return the return code if it is in the response or empty string if not
public string AudioBridgeReturnCode { get { return PluginRespDataString("audiobridge"); } }
// Return the error code if it is in the response or zero if not
public int AudioBridgeErrorCode { get { return PluginRespDataInt("error_code"); } }
// Return the room ID if it is in the response or zero if not
public int RoomId { get { return PluginRespDataInt("room"); } }
}
// ==============================================================
public class AudioBridgeCreateRoomReq : PluginMsgReq
{
public AudioBridgeCreateRoomReq(int pRoomId) : this(pRoomId, false, null)
{
}
public AudioBridgeCreateRoomReq(int pRoomId, bool pSpatial, string pDesc) : base(new OSDMap() {
{ "room", pRoomId },
{ "request", "create" },
{ "is_private", false },
{ "permanent", false },
{ "sampling_rate", 48000 },
{ "spatial_audio", pSpatial },
{ "denoise", false },
{ "record", false }
})
{
if (!String.IsNullOrEmpty(pDesc))
AddStringToBody("description", pDesc);
}
}
// ==============================================================
public class AudioBridgeDestroyRoomReq : PluginMsgReq
{
public AudioBridgeDestroyRoomReq(int pRoomId) : base(new OSDMap() {
{ "request", "destroy" },
{ "room", pRoomId },
{ "permanent", true }
})
{
}
}
// ==============================================================
public class AudioBridgeJoinRoomReq : PluginMsgReq
{
public AudioBridgeJoinRoomReq(int pRoomId, string pAgentName) : base(new OSDMap() {
{ "request", "join" },
{ "room", pRoomId },
{ "display", pAgentName }
})
{
}
}
// A successful response contains the participant ID and the SDP
public class AudioBridgeJoinRoomResp : AudioBridgeResp
{
public AudioBridgeJoinRoomResp(JanusMessageResp pResp) : base(pResp)
{
}
public int ParticipantId { get { return PluginRespDataInt("id"); } }
}
// ==============================================================
public class AudioBridgeConfigRoomReq : PluginMsgReq
{
// TODO:
public AudioBridgeConfigRoomReq(int pRoomId, string pSdp) : base(new OSDMap() {
{ "request", "configure" },
})
{
}
}
public class AudioBridgeConfigRoomResp : AudioBridgeResp
{
// TODO:
public AudioBridgeConfigRoomResp(JanusMessageResp pResp) : base(pResp)
{
}
}
// ==============================================================
public class AudioBridgeLeaveRoomReq : PluginMsgReq
{
public AudioBridgeLeaveRoomReq(int pRoomId, int pAttendeeId) : base(new OSDMap() {
{ "request", "leave" },
{ "room", pRoomId },
{ "id", pAttendeeId }
})
{
}
}
// ==============================================================
public class AudioBridgeListRoomsReq : PluginMsgReq
{
public AudioBridgeListRoomsReq() : base(new OSDMap() {
{ "request", "list" }
})
{
}
}
// ==============================================================
public class AudioBridgeListParticipantsReq : PluginMsgReq
{
public AudioBridgeListParticipantsReq(int pRoom) : base(new OSDMap() {
{ "request", "listparticipants" },
{ "room", pRoom }
})
{
}
}
// ==============================================================
public class AudioBridgeEvent : AudioBridgeResp
{
public AudioBridgeEvent(JanusMessageResp pResp) : base(pResp)
{
}
}
// ==============================================================
// The LongPoll request returns events from the plugins. These are formatted
// like the other responses but are not responses to requests.
// They are formatted like:
// {
// "janus": "event",
// "sender": 6969906757968657,
// "transaction": "baefcec8-70c5-4e79-b2c1-d653b9617dea",
// "plugindata": {
// "plugin": "janus.plugin.audiobridge",
// "data": {
// "audiobridge": "event",
// "room": 10,
// "participants": 1,
// "participants": [
// {
// "id": 1234,
// "display": "John Doe",
// "audio_level": 0.0,
// "video_room": false,
// "video_muted": false,
// "audio_muted": false,
// "feed": 1234
// }
// ]
// }
// }
public class EventResp : JanusMessageResp
{
public EventResp() : base()
{
}
public EventResp(string pType) : base(pType)
{
}
public EventResp(JanusMessageResp pResp) : base(pResp.RawBody)
{
}
}
// ==============================================================
}

View File

@@ -0,0 +1,161 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using System.Threading.Tasks;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Base;
using OpenMetaverse.StructuredData;
using OpenMetaverse;
using Nini.Config;
using log4net;
namespace osWebRtcVoice
{
// Encapsulization of a Session to the Janus server
public class JanusPlugin : IDisposable
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[JANUS PLUGIN]";
protected IConfigSource _Config;
protected JanusSession _JanusSession;
public string PluginName { get; private set; }
public string PluginId { get; private set; }
public string PluginUri { get ; private set ; }
public bool IsConnected => !String.IsNullOrEmpty(PluginId);
// Wrapper around the session connection to Janus-gateway
public JanusPlugin(JanusSession pSession, string pPluginName)
{
_JanusSession = pSession;
PluginName = pPluginName;
}
public virtual void Dispose()
{
if (IsConnected)
{
// Close the handle
}
}
public Task<JanusMessageResp> SendPluginMsg(OSDMap pParams)
{
return _JanusSession.SendToJanus(new PluginMsgReq(pParams), PluginUri);
}
public Task<JanusMessageResp> SendPluginMsg(PluginMsgReq pJMsg)
{
return _JanusSession.SendToJanus(pJMsg, PluginUri);
}
/// <summary>
/// Make the create a handle to a plugin within the session.
/// </summary>
/// <returns>TRUE if handle was created successfully</returns>
public async Task<bool> Activate(IConfigSource pConfig)
{
_Config = pConfig;
bool ret = false;
try
{
var resp = await _JanusSession.SendToSession(new AttachPluginReq(PluginName));
if (resp is not null && resp.isSuccess)
{
var handleResp = new AttachPluginResp(resp);
PluginId = handleResp.pluginId;
PluginUri = _JanusSession.SessionUri + "/" + PluginId;
m_log.DebugFormat("{0} Activate. Plugin attached. ID={1}, URL={2}", LogHeader, PluginId, PluginUri);
_JanusSession.PluginId = PluginId;
_JanusSession.OnEvent += Handle_Event;
_JanusSession.OnMessage += Handle_Message;
ret = true;
}
else
{
m_log.ErrorFormat("{0} Activate: failed to attach to plugin {1}", LogHeader, PluginName);
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} Activate: exception attaching to plugin {1}: {2}", LogHeader, PluginName, e);
}
return ret;
}
public virtual async Task<bool> Detach()
{
bool ret = false;
if (!IsConnected || _JanusSession is null)
{
m_log.WarnFormat("{0} Detach. Not connected", LogHeader);
return ret;
}
try
{
_JanusSession.OnEvent -= Handle_Event;
_JanusSession.OnMessage -= Handle_Message;
// We send the 'detach' message to the plugin URI
var resp = await _JanusSession.SendToJanus(new DetachPluginReq(), PluginUri);
if (resp is not null && resp.isSuccess)
{
m_log.DebugFormat("{0} Detach. Detached", LogHeader);
ret = true;
}
else
{
m_log.ErrorFormat("{0} Detach: failed", LogHeader);
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} Detach: exception {1}", LogHeader, e);
}
return ret;
}
public virtual void Handle_Event(JanusMessageResp pResp)
{
m_log.DebugFormat("{0} Handle_Event: {1}", LogHeader, pResp.ToString());
}
public virtual void Handle_Message(JanusMessageResp pResp)
{
m_log.DebugFormat("{0} Handle_Message: {1}", LogHeader, pResp.ToString());
}
}
}

View File

@@ -0,0 +1,138 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Base;
using OpenMetaverse.StructuredData;
using OpenMetaverse;
using Nini.Config;
using log4net;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Collections.Generic;
namespace osWebRtcVoice
{
// Encapsulization of a Session to the Janus server
public class JanusRoom : IDisposable
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[JANUS ROOM]";
public int RoomId { get; private set; }
private JanusPlugin _AudioBridge;
// Wrapper around the session connection to Janus-gateway
public JanusRoom(JanusPlugin pAudioBridge, int pRoomId)
{
_AudioBridge = pAudioBridge;
RoomId = pRoomId;
}
public void Dispose()
{
// Close the room
}
public async Task<bool> JoinRoom(JanusViewerSession pVSession)
{
bool ret = false;
try
{
// m_log.DebugFormat("{0} JoinRoom. New joinReq for room {1}", LogHeader, RoomId);
// Discovered that AudioBridge doesn't care if the data portion is present
// and, if removed, the viewer complains that the "m=" sections are
// out of order. Not "cleaning" (removing the data section) seems to work.
// string cleanSdp = CleanupSdp(pSdp);
var joinReq = new AudioBridgeJoinRoomReq(RoomId, pVSession.AgentId.ToString());
// joinReq.SetJsep("offer", cleanSdp);
joinReq.SetJsep("offer", pVSession.Offer);
JanusMessageResp resp = await _AudioBridge.SendPluginMsg(joinReq);
AudioBridgeJoinRoomResp joinResp = new AudioBridgeJoinRoomResp(resp);
if (joinResp is not null && joinResp.AudioBridgeReturnCode == "joined")
{
pVSession.ParticipantId = joinResp.ParticipantId;
pVSession.Answer = joinResp.Jsep;
ret = true;
m_log.DebugFormat("{0} JoinRoom. Joined room {1}. Participant={2}", LogHeader, RoomId, pVSession.ParticipantId);
}
else
{
m_log.ErrorFormat("{0} JoinRoom. Failed to join room {1}. Resp={2}", LogHeader, RoomId, joinResp.ToString());
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} JoinRoom. Exception {1}", LogHeader, e);
}
return ret;
}
// TODO: this doesn't work.
// Not sure if it is needed. Janus generates Hangup events when the viewer leaves.
/*
public async Task<bool> Hangup(JanusViewerSession pAttendeeSession)
{
bool ret = false;
try
{
}
catch (Exception e)
{
m_log.ErrorFormat("{0} LeaveRoom. Exception {1}", LogHeader, e);
}
return ret;
}
*/
public async Task<bool> LeaveRoom(JanusViewerSession pAttendeeSession)
{
bool ret = false;
try
{
JanusMessageResp resp = await _AudioBridge.SendPluginMsg(
new AudioBridgeLeaveRoomReq(RoomId, pAttendeeSession.ParticipantId));
}
catch (Exception e)
{
m_log.ErrorFormat("{0} LeaveRoom. Exception {1}", LogHeader, e);
}
return ret;
}
}
}

View File

@@ -0,0 +1,658 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Mime;
using System.Reflection;
using System.Threading.Tasks;
using OpenMetaverse.StructuredData;
using log4net;
using log4net.Core;
using System.Reflection.Metadata;
using System.Threading;
namespace osWebRtcVoice
{
// Encapsulization of a Session to the Janus server
public class JanusSession : IDisposable
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[JANUS SESSION]";
// Set to 'true' to get the messages send and received from Janus
private bool _MessageDetails = false;
private string _JanusServerURI = String.Empty;
private string _JanusAPIToken = String.Empty;
private string _JanusAdminURI = String.Empty;
private string _JanusAdminToken = String.Empty;
public string JanusServerURI => _JanusServerURI;
public string JanusAdminURI => _JanusAdminURI;
public string SessionId { get; private set; }
public string SessionUri { get ; private set ; }
public string PluginId { get; set; }
private CancellationTokenSource _CancelTokenSource = new CancellationTokenSource();
private HttpClient _HttpClient = new HttpClient();
public bool IsConnected { get; set; }
// Wrapper around the session connection to Janus-gateway
public JanusSession(string pServerURI, string pAPIToken, string pAdminURI, string pAdminToken, bool pDebugMessages = false)
{
m_log.DebugFormat("{0} JanusSession constructor", LogHeader);
_JanusServerURI = pServerURI;
_JanusAPIToken = pAPIToken;
_JanusAdminURI = pAdminURI;
_JanusAdminToken = pAdminToken;
_MessageDetails = pDebugMessages;
}
public void Dispose()
{
ClearEventSubscriptions();
if (IsConnected)
{
_ = DestroySession();
}
if (_HttpClient is not null)
{
_HttpClient.Dispose();
_HttpClient = null;
}
}
/// <summary>
/// Make the create session request to the Janus server, get the
/// sessionID and return TRUE if successful.
/// </summary>
/// <returns>TRUE if session was created successfully</returns>
public async Task<bool> CreateSession()
{
bool ret = false;
try
{
var resp = await SendToJanus(new CreateSessionReq());
if (resp is not null && resp.isSuccess)
{
var sessionResp = new CreateSessionResp(resp);
SessionId = sessionResp.returnedId;
IsConnected = true;
SessionUri = _JanusServerURI + "/" + SessionId;
m_log.DebugFormat("{0} CreateSession. Created. ID={1}, URL={2}", LogHeader, SessionId, SessionUri);
ret = true;
StartLongPoll();
}
else
{
m_log.ErrorFormat("{0} CreateSession: failed", LogHeader);
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} CreateSession: exception {1}", LogHeader, e);
}
return ret;
}
public async Task<bool> DestroySession()
{
bool ret = false;
try
{
JanusMessageResp resp = await SendToSession(new DestroySessionReq());
if (resp is not null && resp.isSuccess)
{
// Note that setting IsConnected to false will cause the long poll to exit
m_log.DebugFormat("{0} DestroySession. Destroyed", LogHeader);
}
else
{
if (resp.isError)
{
ErrorResp eResp = new ErrorResp(resp);
switch (eResp.errorCode)
{
case 458:
// This is the error code for a session that is already destroyed
m_log.DebugFormat("{0} DestroySession: session already destroyed", LogHeader);
break;
case 459:
// This is the error code for handle already destroyed
m_log.DebugFormat("{0} DestroySession: Handle not found", LogHeader);
break;
default:
m_log.ErrorFormat("{0} DestroySession: failed {1}", LogHeader, eResp.errorReason);
break;
}
}
else
{
m_log.ErrorFormat("{0} DestroySession: failed. Resp: {1}", LogHeader, resp.ToString());
}
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} DestroySession: exception {1}", LogHeader, e);
}
IsConnected = false;
_CancelTokenSource.Cancel();
return ret;
}
// ====================================================================
public async Task<JanusMessageResp> TrickleCandidates(JanusViewerSession pVSession, OSDArray pCandidates)
{
JanusMessageResp ret = null;
// if the audiobridge is active, the trickle message is sent to it
if (pVSession.AudioBridge is null)
{
ret = await SendToJanusNoWait(new TrickleReq(pVSession));
}
else
{
ret = await SendToJanusNoWait(new TrickleReq(pVSession), pVSession.AudioBridge.PluginUri);
}
return ret;
}
// ====================================================================
public async Task<JanusMessageResp> TrickleCompleted(JanusViewerSession pVSession)
{
JanusMessageResp ret = null;
// if the audiobridge is active, the trickle message is sent to it
if (pVSession.AudioBridge is null)
{
ret = await SendToJanusNoWait(new TrickleReq(pVSession));
}
else
{
ret = await SendToJanusNoWait(new TrickleReq(pVSession), pVSession.AudioBridge.PluginUri);
}
return ret;
}
// ====================================================================
public Dictionary<string, JanusPlugin> _Plugins = new Dictionary<string, JanusPlugin>();
public void AddPlugin(JanusPlugin pPlugin)
{
_Plugins.Add(pPlugin.PluginName, pPlugin);
}
// ====================================================================
// Post to the session
public async Task<JanusMessageResp> SendToSession(JanusMessageReq pReq)
{
return await SendToJanus(pReq, SessionUri);
}
private class OutstandingRequest
{
public string TransactionId;
public DateTime RequestTime;
public TaskCompletionSource<JanusMessageResp> TaskCompletionSource;
}
private Dictionary<string, OutstandingRequest> _OutstandingRequests = new Dictionary<string, OutstandingRequest>();
// Send a request directly to the Janus server.
// NOTE: this is probably NOT what you want to do. This is a direct call that is outside the session.
private async Task<JanusMessageResp> SendToJanus(JanusMessageReq pReq)
{
return await SendToJanus(pReq, _JanusServerURI);
}
/// <summary>
/// Send a request to the Janus server. This is the basic call that sends a request to the server.
/// The transaction ID is used to match the response to the request.
/// If the request returns an 'ack' response, the code waits for the matching event
/// before returning the response.
/// </summary>
/// <param name="pReq"></param>
/// <param name="pURI"></param>
/// <returns></returns>
public async Task<JanusMessageResp> SendToJanus(JanusMessageReq pReq, string pURI)
{
AddJanusHeaders(pReq);
// m_log.DebugFormat("{0} SendToJanus", LogHeader);
if (_MessageDetails) m_log.DebugFormat("{0} SendToJanus. URI={1}, req={2}", LogHeader, pURI, pReq.ToJson());
JanusMessageResp ret = null;
try
{
OutstandingRequest outReq = new OutstandingRequest
{
TransactionId = pReq.TransactionId,
RequestTime = DateTime.Now,
TaskCompletionSource = new TaskCompletionSource<JanusMessageResp>()
};
_OutstandingRequests.Add(pReq.TransactionId, outReq);
string reqStr = pReq.ToJson();
HttpRequestMessage reqMsg = new HttpRequestMessage(HttpMethod.Post, pURI);
reqMsg.Content = new StringContent(reqStr, System.Text.Encoding.UTF8, MediaTypeNames.Application.Json);
reqMsg.Headers.Add("Accept", "application/json");
HttpResponseMessage response = await _HttpClient.SendAsync(reqMsg, _CancelTokenSource.Token);
if (response.IsSuccessStatusCode)
{
string respStr = await response.Content.ReadAsStringAsync();
ret = JanusMessageResp.FromJson(respStr);
if (ret.CheckReturnCode("ack"))
{
// Some messages are asynchronous and completed with an event
if (_MessageDetails) m_log.DebugFormat("{0} SendToJanus: ack response {1}", LogHeader, respStr);
if (_OutstandingRequests.TryGetValue(pReq.TransactionId, out OutstandingRequest outstandingRequest))
{
ret = await outstandingRequest.TaskCompletionSource.Task;
_OutstandingRequests.Remove(pReq.TransactionId);
}
// If there is no OutstandingRequest, the request was not waiting for an event or already processed
}
else
{
// If the response is not an ack, that means a synchronous request/response so return the response
_OutstandingRequests.Remove(pReq.TransactionId);
if (_MessageDetails) m_log.DebugFormat("{0} SendToJanus: response {1}", LogHeader, respStr);
}
}
else
{
m_log.ErrorFormat("{0} SendToJanus: response not successful {1}", LogHeader, response);
_OutstandingRequests.Remove(pReq.TransactionId);
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} SendToJanus: exception {1}", LogHeader, e.Message);
}
return ret;
}
/// <summary>
/// Send a request to the Janus server but we just return the response and don't wait for any
/// event or anything.
/// There are some requests that are just fire-and-forget.
/// </summary>
/// <param name="pReq"></param>
/// <returns></returns>
private async Task<JanusMessageResp> SendToJanusNoWait(JanusMessageReq pReq, string pURI)
{
JanusMessageResp ret = new JanusMessageResp();
AddJanusHeaders(pReq);
try {
HttpRequestMessage reqMsg = new HttpRequestMessage(HttpMethod.Post, pURI);
string reqStr = pReq.ToJson();
reqMsg.Content = new StringContent(reqStr, System.Text.Encoding.UTF8, MediaTypeNames.Application.Json);
reqMsg.Headers.Add("Accept", "application/json");
HttpResponseMessage response = await _HttpClient.SendAsync(reqMsg);
string respStr = await response.Content.ReadAsStringAsync();
ret = JanusMessageResp.FromJson(respStr);
}
catch (Exception e)
{
m_log.ErrorFormat("{0} SendToJanusNoWait: exception {1}", LogHeader, e.Message);
}
return ret;
}
private async Task<JanusMessageResp> SendToJanusNoWait(JanusMessageReq pReq)
{
return await SendToJanusNoWait(pReq, SessionUri);
}
// There are various headers that are in most Janus requests. Add them here.
private void AddJanusHeaders(JanusMessageReq pReq)
{
// Authentication token
if (!String.IsNullOrEmpty(_JanusAPIToken))
{
pReq.AddAPIToken(_JanusAPIToken);
}
// Transaction ID that matches responses to requests
if (String.IsNullOrEmpty(pReq.TransactionId))
{
pReq.TransactionId = Guid.NewGuid().ToString();
}
// The following two are required for the WebSocket interface. They are optional for the
// HTTP interface since the session and plugin handle are in the URL.
// SessionId is added to the message if not already there
if (!pReq.hasSessionId && !String.IsNullOrEmpty(SessionId))
{
pReq.AddSessionId(SessionId);
}
// HandleId connects to the plugin
if (!pReq.hasHandleId && !String.IsNullOrEmpty(PluginId))
{
pReq.AddHandleId(PluginId);
}
}
bool TryGetOutstandingRequest(string pTransactionId, out OutstandingRequest pOutstandingRequest)
{
if (String.IsNullOrEmpty(pTransactionId))
{
pOutstandingRequest = null;
return false;
}
bool ret = false;
lock (_OutstandingRequests)
{
if (_OutstandingRequests.TryGetValue(pTransactionId, out pOutstandingRequest))
{
_OutstandingRequests.Remove(pTransactionId);
ret = true;
}
}
return ret;
}
public Task<JanusMessageResp> SendToJanusAdmin(JanusMessageReq pReq)
{
return SendToJanus(pReq, _JanusAdminURI);
}
public Task<JanusMessageResp> GetFromJanus()
{
return GetFromJanus(_JanusServerURI);
}
/// <summary>
/// Do a GET to the Janus server and return the response.
/// If the response is an HTTP error, we return fake JanusMessageResp with the error.
/// </summary>
/// <param name="pURI"></param>
/// <returns></returns>
public async Task<JanusMessageResp> GetFromJanus(string pURI)
{
if (!String.IsNullOrEmpty(_JanusAPIToken))
{
pURI += "?apisecret=" + _JanusAPIToken;
}
JanusMessageResp ret = null;
try
{
// m_log.DebugFormat("{0} GetFromJanus: URI = \"{1}\"", LogHeader, pURI);
HttpRequestMessage reqMsg = new HttpRequestMessage(HttpMethod.Get, pURI);
reqMsg.Headers.Add("Accept", "application/json");
HttpResponseMessage response = null;
try
{
response = await _HttpClient.SendAsync(reqMsg, _CancelTokenSource.Token);
if (response is not null && response.IsSuccessStatusCode)
{
string respStr = await response.Content.ReadAsStringAsync();
ret = JanusMessageResp.FromJson(respStr);
// m_log.DebugFormat("{0} GetFromJanus: response {1}", LogHeader, respStr);
}
else
{
m_log.ErrorFormat("{0} GetFromJanus: response not successful {1}", LogHeader, response);
var eResp = new ErrorResp("GETERROR");
// Add the sessionId so the proper session can be shut down
eResp.AddSessionId(SessionId);
if (response is not null)
{
eResp.SetError((int)response.StatusCode, response.ReasonPhrase);
}
else
{
eResp.SetError(0, "Connection refused");
}
ret = eResp;
}
}
catch (TaskCanceledException e)
{
m_log.DebugFormat("{0} GetFromJanus: task canceled: {1}", LogHeader, e.Message);
var eResp = new ErrorResp("GETERROR");
eResp.SetError(499, "Task canceled");
ret = eResp;
}
catch (Exception e)
{
m_log.ErrorFormat("{0} GetFromJanus: exception {1}", LogHeader, e.Message);
var eResp = new ErrorResp("GETERROR");
eResp.SetError(400, "Exception: " + e.Message);
ret = eResp;
}
}
catch (Exception e)
{
m_log.ErrorFormat("{0} GetFromJanus: exception {1}", LogHeader, e);
var eResp = new ErrorResp("GETERROR");
eResp.SetError(400, "Exception: " + e.Message);
ret = eResp;
}
return ret;
}
// ====================================================================
public delegate void JanusEventHandler(EventResp pResp);
// Not all the events are used. CS0067 is to suppress the warning that the event is not used.
#pragma warning disable CS0067,CS0414
public event JanusEventHandler OnKeepAlive;
public event JanusEventHandler OnServerInfo;
public event JanusEventHandler OnTrickle;
public event JanusEventHandler OnHangup;
public event JanusEventHandler OnDetached;
public event JanusEventHandler OnError;
public event JanusEventHandler OnEvent;
public event JanusEventHandler OnMessage;
public event JanusEventHandler OnJoined;
public event JanusEventHandler OnLeaving;
public event JanusEventHandler OnDisconnect;
#pragma warning restore CS0067,CS0414
public void ClearEventSubscriptions()
{
OnKeepAlive = null;
OnServerInfo = null;
OnTrickle = null;
OnHangup = null;
OnDetached = null;
OnError = null;
OnEvent = null;
OnMessage = null;
OnJoined = null;
OnLeaving = null;
OnDisconnect = null;
}
// ====================================================================
/// <summary>
/// In the REST API, events are returned by a long poll. This
/// starts the poll and calls the registed event handler when
/// an event is received.
/// </summary>
private void StartLongPoll()
{
bool running = true;
m_log.DebugFormat("{0} EventLongPoll", LogHeader);
Task.Run(async () => {
while (running && IsConnected)
{
try
{
var resp = await GetFromJanus(SessionUri);
if (resp is not null)
{
_ = Task.Run(() =>
{
EventResp eventResp = new EventResp(resp);
switch (resp.ReturnCode)
{
case "keepalive":
// These should happen every 30 seconds
// m_log.DebugFormat("{0} EventLongPoll: keepalive {1}", LogHeader, resp.ToString());
break;
case "server_info":
// Just info on the Janus instance
m_log.DebugFormat("{0} EventLongPoll: server_info {1}", LogHeader, resp.ToString());
break;
case "ack":
// 'ack' says the request was received and an event will follow
if (_MessageDetails) m_log.DebugFormat("{0} EventLongPoll: ack {1}", LogHeader, resp.ToString());
break;
case "success":
// success is a sync response that says the request was completed
if (_MessageDetails) m_log.DebugFormat("{0} EventLongPoll: success {1}", LogHeader, resp.ToString());
break;
case "trickle":
// got a trickle ICE candidate from Janus
// this is for reverse communication from Janus to the client and we don't do that
if (_MessageDetails) m_log.DebugFormat("{0} EventLongPoll: trickle {1}", LogHeader, resp.ToString());
OnTrickle?.Invoke(eventResp);
break;
case "webrtcup":
// ICE and DTLS succeeded, and so Janus correctly established a PeerConnection with the user/application;
m_log.DebugFormat("{0} EventLongPoll: webrtcup {1}", LogHeader, resp.ToString());
break;
case "hangup":
// The PeerConnection was closed, either by the user/application or by Janus itself;
// If one is in the room, when a "hangup" event happens, it means that the user left the room.
m_log.DebugFormat("{0} EventLongPoll: hangup {1}", LogHeader, resp.ToString());
OnHangup?.Invoke(eventResp);
break;
case "detached":
// a plugin asked the core to detach one of our handles
m_log.DebugFormat("{0} EventLongPoll: event {1}", LogHeader, resp.ToString());
OnDetached?.Invoke(eventResp);
break;
case "media":
// Janus is receiving (receiving: true/false) audio/video (type: "audio/video") on this PeerConnection;
m_log.DebugFormat("{0} EventLongPoll: media {1}", LogHeader, resp.ToString());
break;
case "slowlink":
// Janus detected a slowlink (uplink: true/false) on this PeerConnection;
m_log.DebugFormat("{0} EventLongPoll: slowlink {1}", LogHeader, resp.ToString());
break;
case "error":
m_log.DebugFormat("{0} EventLongPoll: error {1}", LogHeader, resp.ToString());
if (TryGetOutstandingRequest(resp.TransactionId, out OutstandingRequest outstandingRequest))
{
outstandingRequest.TaskCompletionSource.SetResult(resp);
}
else
{
OnError?.Invoke(eventResp);
m_log.ErrorFormat("{0} EventLongPoll: error with no transaction. {1}", LogHeader, resp.ToString());
}
break;
case "event":
if (_MessageDetails) m_log.DebugFormat("{0} EventLongPoll: event {1}", LogHeader, resp.ToString());
if (TryGetOutstandingRequest(resp.TransactionId, out OutstandingRequest outstandingRequest2))
{
// Someone is waiting for this event
outstandingRequest2.TaskCompletionSource.SetResult(resp);
}
else
{
m_log.ErrorFormat("{0} EventLongPoll: event no outstanding request {1}", LogHeader, resp.ToString());
OnEvent?.Invoke(eventResp);
}
break;
case "message":
m_log.DebugFormat("{0} EventLongPoll: message {1}", LogHeader, resp.ToString());
OnMessage?.Invoke(eventResp);
break;
case "timeout":
// Events for the audio bridge
m_log.DebugFormat("{0} EventLongPoll: timeout {1}", LogHeader, resp.ToString());
break;
case "joined":
// Events for the audio bridge
OnJoined?.Invoke(eventResp);
m_log.DebugFormat("{0} EventLongPoll: joined {1}", LogHeader, resp.ToString());
break;
case "leaving":
// Events for the audio bridge
OnLeaving?.Invoke(eventResp);
m_log.DebugFormat("{0} EventLongPoll: leaving {1}", LogHeader, resp.ToString());
break;
case "GETERROR":
// Special error response from the GET
var errorResp = new ErrorResp(resp);
switch (errorResp.errorCode)
{
case 404:
// "Not found" means there is a Janus server but the session is gone
m_log.ErrorFormat("{0} EventLongPoll: GETERROR Not Found. URI={1}: {2}",
LogHeader, SessionUri, resp.ToString());
break;
case 400:
// "Bad request" means the session is gone
m_log.ErrorFormat("{0} EventLongPoll: Bad Request. URI={1}: {2}",
LogHeader, SessionUri, resp.ToString());
break;
case 499:
// "Task canceled" means the long poll was canceled
m_log.DebugFormat("{0} EventLongPoll: Task canceled. URI={1}", LogHeader, SessionUri);
break;
default:
m_log.DebugFormat("{0} EventLongPoll: unknown response. URI={1}: {2}",
LogHeader, SessionUri, resp.ToString());
break;
}
// This will cause the long poll to exit
running = false;
OnDisconnect?.Invoke(eventResp);
break;
default:
m_log.DebugFormat("{0} EventLongPoll: unknown response {1}", LogHeader, resp.ToString());
break;
}
});
}
else
{
m_log.ErrorFormat("{0} EventLongPoll: failed. Response is null", LogHeader);
}
}
catch (Exception e)
{
// This will cause the long poll to exit
running = false;
m_log.ErrorFormat("{0} EventLongPoll: exception {1}", LogHeader, e);
}
}
m_log.InfoFormat("{0} EventLongPoll: Exiting long poll loop", LogHeader);
});
}
}
}

View File

@@ -0,0 +1,109 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Reflection;
using System.Threading.Tasks;
using OMV = OpenMetaverse;
using OpenMetaverse.StructuredData;
using log4net;
namespace osWebRtcVoice
{
public class JanusViewerSession : IVoiceViewerSession
{
protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected static readonly string LogHeader = "[JANUS VIEWER SESSION]";
// 'viewer_session' that is passed to and from the viewer
// IVoiceViewerSession.ViewerSessionID
public string ViewerSessionID { get; set; }
// IVoiceViewerSession.VoiceService
public IWebRtcVoiceService VoiceService { get; set; }
// The Janus server keeps track of the user by this ID
// IVoiceViewerSession.VoiceServiceSessionId
public string VoiceServiceSessionId { get; set; }
// IVoiceViewerSession.RegionId
public OMV.UUID RegionId { get; set; }
// IVoiceViewerSession.AgentId
public OMV.UUID AgentId { get; set; }
// Janus keeps track of the user by this ID
public int ParticipantId { get; set; }
// Connections to the Janus server
public JanusSession Session { get; set; }
public JanusAudioBridge AudioBridge { get; set; }
public JanusRoom Room { get; set; }
// This keeps copies of the offer/answer incase we need to resend
public string OfferOrig { get; set; }
public string Offer { get; set; }
// Contains "type" and "sdp" fields
public OSDMap Answer { get; set; }
public JanusViewerSession(IWebRtcVoiceService pVoiceService)
{
ViewerSessionID = OMV.UUID.Random().ToString();
VoiceService = pVoiceService;
m_log.Debug($"{LogHeader} JanusViewerSession created {ViewerSessionID}");
}
public JanusViewerSession(string pViewerSessionID, IWebRtcVoiceService pVoiceService)
{
ViewerSessionID = pViewerSessionID;
VoiceService = pVoiceService;
m_log.Debug($"{LogHeader} JanusViewerSession created {ViewerSessionID}");
}
// Send the messages to the voice service to try and get rid of the session
// IVoiceViewerSession.Shutdown
public async Task Shutdown()
{
m_log.DebugFormat($"{LogHeader} JanusViewerSession shutdown {ViewerSessionID}");
if (Room is not null)
{
var rm = Room;
Room = null;
await rm.LeaveRoom(this);
}
if (AudioBridge is not null)
{
var ab = AudioBridge;
AudioBridge = null;
await ab.Detach();
}
if (Session is not null)
{
var s = Session;
Session = null;
_ = await s.DestroySession().ConfigureAwait(false);
s.Dispose();
}
}
}
}

View File

@@ -0,0 +1,478 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using System.Threading.Tasks;
using OpenSim.Framework;
using OpenSim.Services.Base;
using OpenMetaverse.StructuredData;
using OpenMetaverse;
using Nini.Config;
using log4net;
namespace osWebRtcVoice
{
public class WebRtcJanusService : ServiceBase, IWebRtcVoiceService
{
private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[JANUS WEBRTC SERVICE]";
private readonly IConfigSource _Config;
private bool _Enabled = false;
private string _JanusServerURI = string.Empty;
private string _JanusAPIToken = string.Empty;
private string _JanusAdminURI = string.Empty;
private string _JanusAdminToken = string.Empty;
private bool _MessageDetails = false;
// An extra "viewer session" that is created initially. Used to verify the service
// is working and for a handle for the console commands.
private JanusViewerSession _ViewerSession;
public WebRtcJanusService(IConfigSource pConfig) : base(pConfig)
{
Assembly assembly = Assembly.GetExecutingAssembly();
string version = assembly.GetName().Version?.ToString() ?? "unknown";
_log.Debug($"{LogHeader} WebRtcJanusService version {version}");
_Config = pConfig;
IConfig webRtcVoiceConfig = _Config.Configs["WebRtcVoice"];
if (webRtcVoiceConfig is not null)
{
_Enabled = webRtcVoiceConfig.GetBoolean("Enabled", false);
IConfig janusConfig = _Config.Configs["JanusWebRtcVoice"];
if (_Enabled && janusConfig is not null)
{
_JanusServerURI = janusConfig.GetString("JanusGatewayURI", string.Empty);
_JanusAPIToken = janusConfig.GetString("APIToken", string.Empty);
_JanusAdminURI = janusConfig.GetString("JanusGatewayAdminURI", string.Empty);
_JanusAdminToken = janusConfig.GetString("AdminAPIToken", string.Empty);
// Debugging options
_MessageDetails = janusConfig.GetBoolean("MessageDetails", false);
if (string.IsNullOrEmpty(_JanusServerURI) || string.IsNullOrEmpty(_JanusAPIToken) ||
string.IsNullOrEmpty(_JanusAdminURI) || string.IsNullOrEmpty(_JanusAdminToken))
{
_log.Error($"{LogHeader} JanusWebRtcVoice configuration section missing required fields");
_Enabled = false;
}
if (_Enabled)
{
if(!StartConnectionToJanus())
{
_log.Error($"{LogHeader} failed connection to Janus Gateway. Disabled");
_Enabled=false;
return;
}
RegisterConsoleCommands();
_log.Info($"{LogHeader} Enabled");
}
}
else
{
_log.Error($"{LogHeader} No JanusWebRtcVoice configuration section");
_Enabled = false;
}
}
else
{
_log.Error($"{LogHeader} No WebRtcVoice configuration section");
_Enabled = false;
}
}
// Here an initial session is created and then a handle to the audio bridge plugin
// is created for the console commands. Since webrtc PeerConnections that are created
// my Janus are per-session, the other sessions will be created by the viewer requests.
private bool StartConnectionToJanus()
{
_log.DebugFormat("{0} StartConnectionToJanus", LogHeader);
_ViewerSession = new JanusViewerSession(this);
//bad
return ConnectToSessionAndAudioBridge(_ViewerSession).Result;
}
private async Task<bool> ConnectToSessionAndAudioBridge(JanusViewerSession pViewerSession)
{
JanusSession janusSession = new JanusSession(_JanusServerURI, _JanusAPIToken, _JanusAdminURI, _JanusAdminToken, _MessageDetails);
if (await janusSession.CreateSession().ConfigureAwait(false))
{
_log.DebugFormat("{0} JanusSession created", LogHeader);
// Once the session is created, create a handle to the plugin for rooms
JanusAudioBridge audioBridge = new JanusAudioBridge(janusSession);
if (await audioBridge.Activate(_Config).ConfigureAwait(false))
{
_log.Debug($"{LogHeader} AudioBridgePluginHandle created");
// Requests through the capabilities will create rooms
janusSession.AddPlugin(audioBridge);
pViewerSession.VoiceServiceSessionId = janusSession.SessionId;
pViewerSession.Session = janusSession;
pViewerSession.AudioBridge = audioBridge;
janusSession.OnDisconnect += Handle_Hangup;
janusSession.OnHangup += Handle_Hangup;
return true;
}
_log.Error($"{LogHeader} JanusPluginHandle not created");
}
_log.Error($"{LogHeader} JanusSession not created");
return false;
}
private void Handle_Hangup(EventResp pResp)
{
if (pResp is not null)
{
var sessionId = pResp.sessionId;
_log.Debug($"{LogHeader} Handle_Hangup: {pResp.RawBody}, sessionId={sessionId}");
if (VoiceViewerSession.TryGetViewerSessionByVSSessionId(sessionId, out IVoiceViewerSession viewerSession))
{
// There is a viewer session associated with this session
DisconnectViewerSession(viewerSession as JanusViewerSession);
}
else
{
_log.Debug($"{LogHeader} Handle_Hangup: no session found. SessionId={sessionId}");
}
}
}
// Disconnect the viewer session. This is called when the viewer logs out or hangs up.
private void DisconnectViewerSession(JanusViewerSession pViewerSession)
{
if (pViewerSession is not null)
{
Task.Run(() =>
{
VoiceViewerSession.RemoveViewerSession(pViewerSession.ViewerSessionID);
// No need to wait for the session to be shutdown
_ = pViewerSession.Shutdown();
});
}
}
// The pRequest parameter is a straight conversion of the JSON request from the client.
// This is the logic that takes the client's request and converts it into
// operations on rooms in the audio bridge.
// IWebRtcVoiceService.ProvisionVoiceAccountRequest
public OSDMap ProvisionVoiceAccountRequest(IVoiceViewerSession pSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
return ProvisionVoiceAccountRequestBAD(pSession, pRequest, pUserID, pSceneID).Result;
}
public async Task<OSDMap> ProvisionVoiceAccountRequestBAD(IVoiceViewerSession pSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
OSDMap ret = null;
string errorMsg = null;
JanusViewerSession viewerSession = pSession as JanusViewerSession;
if (viewerSession is not null)
{
if (viewerSession.Session is null)
{
// This is a new session so we must create a new session and handle to the audio bridge
await ConnectToSessionAndAudioBridge(viewerSession).ConfigureAwait(false);
}
// TODO: need to keep count of users in a room to know when to close a room
bool isLogout = pRequest.TryGetBool("logout", out bool lgout) && lgout;
if (isLogout)
{
// The client is logging out. Exit the room.
if (viewerSession.Room is not null)
{
await viewerSession.Room.LeaveRoom(viewerSession);
viewerSession.Room = null;
}
return new OSDMap
{
{ "response", "closed" }
};
}
// Get the parameters that select the room
// To get here, voice_server_type has already been checked to be 'webrtc' and channel_type='local'
int parcel_local_id = pRequest.TryGetInt("parcel_local_id", out int pli) ? pli : JanusAudioBridge.REGION_ROOM_ID;
string channel_id = pRequest.TryGetString("channel_id", out string cli) ? cli : string.Empty;
string channel_credentials = pRequest.TryGetString("credentials", out string cred) ? cred : string.Empty;
string channel_type = pRequest["channel_type"].AsString();
bool isSpatial = channel_type == "local";
string voice_server_type = pRequest["voice_server_type"].AsString();
_log.DebugFormat("{0} ProvisionVoiceAccountRequest: parcel_id={1} channel_id={2} channel_type={3} voice_server_type={4}", LogHeader, parcel_local_id, channel_id, channel_type, voice_server_type);
if (pRequest.TryGetOSDMap("jsep", out OSDMap jsep))
{
// The jsep is the SDP from the client. This is the client's request to connect to the audio bridge.
string jsepType = jsep["type"].AsString();
string jsepSdp = jsep["sdp"].AsString();
if (jsepType == "offer")
{
// The client is sending an offer. Find the right room and join it.
// _log.DebugFormat("{0} ProvisionVoiceAccountRequest: jsep type={1} sdp={2}", LogHeader, jsepType, jsepSdp);
viewerSession.Room = await viewerSession.AudioBridge.SelectRoom(pSceneID.ToString(),
channel_type, isSpatial, parcel_local_id, channel_id).ConfigureAwait(false);
if (viewerSession.Room is null)
{
errorMsg = "room selection failed";
_log.Error($"{LogHeader} ProvisionVoiceAccountRequest: room selection failed");
}
else {
viewerSession.Offer = jsepSdp;
viewerSession.OfferOrig = jsepSdp;
viewerSession.AgentId = pUserID;
if (await viewerSession.Room.JoinRoom(viewerSession).ConfigureAwait(false))
{
ret = new OSDMap
{
{ "jsep", viewerSession.Answer },
{ "viewer_session", viewerSession.ViewerSessionID }
};
}
else
{
errorMsg = "JoinRoom failed";
_log.Error($"{LogHeader} ProvisionVoiceAccountRequest: JoinRoom failed");
}
}
}
else
{
errorMsg = "jsep type not offer";
_log.Error($"{LogHeader} ProvisionVoiceAccountRequest: jsep type={jsepType} not offer");
}
}
else
{
errorMsg = "no jsep";
_log.Debug($"{LogHeader} ProvisionVoiceAccountRequest: no jsep. req={pRequest}");
}
}
else
{
errorMsg = "viewersession not JanusViewerSession";
_log.Error("{LogHeader} ProvisionVoiceAccountRequest: viewersession not JanusViewerSession");
}
if (!string.IsNullOrEmpty(errorMsg) && ret is null)
{
// The provision failed so build an error messgage to return
ret = new OSDMap
{
{ "response", "failed" },
{ "error", errorMsg }
};
}
return ret;
}
// IWebRtcVoiceService.VoiceAccountBalanceRequest
public OSDMap VoiceSignalingRequest(IVoiceViewerSession pSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
return VoiceSignalingRequestBAD(pSession, pRequest, pUserID, pSceneID).Result;
}
public async Task<OSDMap> VoiceSignalingRequestBAD(IVoiceViewerSession pSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
OSDMap ret = null;
JanusViewerSession viewerSession = pSession as JanusViewerSession;
JanusMessageResp resp = null;
if (viewerSession is not null)
{
// The request should be an array of candidates
if (pRequest.TryGetOSDMap("candidate", out OSDMap candidate))
{
if (candidate.TryGetBool("completed", out bool iscompleted) && iscompleted)
{
// The client has finished sending candidates
resp = await viewerSession.Session.TrickleCompleted(viewerSession).ConfigureAwait(false);
_log.DebugFormat($"{LogHeader} VoiceSignalingRequest: candidate completed");
}
else
{
}
}
else if (pRequest.TryGetOSDArray("candidates", out OSDArray candidates))
{
OSDArray candidatesArray = new OSDArray();
foreach (OSDMap cand in candidates)
{
candidatesArray.Add(new OSDMap() {
{ "candidate", cand["candidate"].AsString() },
{ "sdpMid", cand["sdpMid"].AsString() },
{ "sdpMLineIndex", cand["sdpMLineIndex"].AsLong() }
});
}
resp = await viewerSession.Session.TrickleCandidates(viewerSession, candidatesArray).ConfigureAwait(false);
_log.Debug($"{LogHeader} VoiceSignalingRequest: {candidatesArray.Count} candidates");
}
else
{
_log.Error($"{LogHeader} VoiceSignalingRequest: no 'candidate' or 'candidates'");
}
}
if (resp is null)
{
_log.ErrorFormat($"{LogHeader} VoiceSignalingRequest: no response so returning error");
ret = new OSDMap
{
{ "response", "error" }
};
}
else
{
ret = resp.RawBody;
}
return ret;
}
// This module should not be invoked with this signature
// IWebRtcVoiceService.ProvisionVoiceAccountRequest
public OSDMap ProvisionVoiceAccountRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
throw new NotImplementedException();
}
// This module should not be invoked with this signature
// IWebRtcVoiceService.VoiceSignalingRequest
public OSDMap VoiceSignalingRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
throw new NotImplementedException();
}
// The viewer session object holds all the connection information to Janus.
// IWebRtcVoiceService.CreateViewerSession
public IVoiceViewerSession CreateViewerSession(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
return new JanusViewerSession(this)
{
AgentId = pUserID,
RegionId = pSceneID
};
}
// ======================================================================================================
private void RegisterConsoleCommands()
{
if (_Enabled) {
MainConsole.Instance.Commands.AddCommand("Webrtc", false, "janus info",
"janus info",
"Show Janus server information",
HandleJanusInfo);
MainConsole.Instance.Commands.AddCommand("Webrtc", false, "janus list rooms",
"janus list rooms",
"List the rooms on the Janus server",
HandleJanusListRooms);
// List rooms
// List participants in a room
}
}
private void HandleJanusInfo(string module, string[] cmdparms)
{
if (_ViewerSession is not null && _ViewerSession.Session is not null)
{
WriteOut("{0} Janus session: {1}", LogHeader, _ViewerSession.Session.SessionId);
string infoURI = _ViewerSession.Session.JanusServerURI + "/info";
var resp = _ViewerSession.Session.GetFromJanus(infoURI).Result;
if (resp is not null)
MainConsole.Instance.Output(resp.ToJson());
}
}
private void HandleJanusListRooms(string module, string[] cmdparms)
{
if (_ViewerSession is not null && _ViewerSession.Session is not null && _ViewerSession.AudioBridge is not null)
{
var ab = _ViewerSession.AudioBridge;
var resp = ab.SendAudioBridgeMsg(new AudioBridgeListRoomsReq()).Result;
if (resp is not null && resp.isSuccess)
{
if (resp.PluginRespData.TryGetValue("list", out OSD list))
{
MainConsole.Instance.Output("");
MainConsole.Instance.Output(
" {0,10} {1,15} {2,5} {3,10} {4,7} {5,7}",
"Room", "Description", "Num", "SampleRate", "Spatial", "Recording");
foreach (OSDMap room in list as OSDArray)
{
int roomid = room["room"].AsInteger();
MainConsole.Instance.Output(
" {0,10} {1,15} {2,5} {3,10} {4,7} {5,7}",
roomid, room["description"], room["num_participants"],
room["sampling_rate"], room["spatial_audio"], room["record"]);
var participantResp = ab.SendAudioBridgeMsg(new AudioBridgeListParticipantsReq(roomid)).Result;
if (participantResp is not null && participantResp.AudioBridgeReturnCode == "participants")
{
if (participantResp.PluginRespData.TryGetValue("participants", out OSD participants))
{
foreach (OSDMap participant in participants as OSDArray)
{
MainConsole.Instance.Output(" {0}/{1},muted={2},talking={3},pos={4}",
participant["id"].AsLong(), participant["display"], participant["muted"],
participant["talking"], participant["spatial_position"]);
}
}
}
}
}
else
{
MainConsole.Instance.Output("No rooms");
}
}
else
{
MainConsole.Instance.Output("Failed to get room list");
}
}
}
private void WriteOut(string msg, params object[] args)
{
// m_log.InfoFormat(msg, args);
MainConsole.Instance.Output(msg, args);
}
}
}

View File

@@ -0,0 +1,390 @@
os-webrtc-janus original work, by Robert Adams, license changed to same BSD of rest of OpenSimulator
By Robert Adams, for OpenSimulator
Original license:
// Copyright 2024 Robert Adams (misterblue@misterblue.com)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@@ -0,0 +1,234 @@
# os-webrtc-janus
Addon-module for [OpenSimulator] to provide webrtc voice support
using Janus-gateway.
For an explanation of background and architecture,
this project was presented at the
[OpenSimulator Community Conference] 2024
in the presentation
[WebRTC Voice for OpenSimulator](https://www.youtube.com/watch?v=nL78fieIFYg).
This addon works by taking viewer requests for voice service and
using a separate, external [Janus-Gateway WebRTC server].
This can be configured to allow local region spatial voice
and grid-wide group and spatial voice. See the sections below.
For running that separate Janus server, check out
[os-webrtc-janus-docker] which has instructions for running
Janus-Gateway on Linux and Windows WSL using Docker.
Instructions for:
- [Building into OpenSimulator](#Building): Build OpenSimulator with WebRTC voice service
- [Configuring Simulator for Voice Services](#Configure_Simulator)
- [Configuring Robust Grid Service](#Configure_Robust)
- [Configure Standalone Region](#Configure_Standalone)
- [Managing Voice Service](#Managing_Voice) (console commands, etc)
**Note**: as of January 2024, this solution does not provide true spatial
voice service using Janus. There are people working on additions to Janus
to provide this but the existing solution provides only non-spatial
voice services using the `AudioBridge` Janus plugin. Additionally,
features like muting and individual avatar volume are not yet implemented.
<a id="Known_Issues"></a>
## Known Issues
- No spatial audio
- One can see your own "white dot" but you don't see other avatar's white dots
- No muting
- No individual volume control
And probably more found at [os-webrtc-janus issues](https://github.com/Misterblue/os-webrtc-janus/issues).
<a id="Building"></a>
## Building Plugin into OpenSimulator
`os-webrtc-janus` is integrated as a source build into [OpenSimulator].
It uses the [OpenSimulator] addon-module feature which makes the
build as easy as cloning the `os-webrtc-janus` sources into the
[OpenSimulator] source tree, running the build configuration script,
and then building OpenSimulator.
The steps are:
```
# Get the OpenSimulator sources
git clone git://opensimulator.org/git/opensim
cd opensim # cd into the top level OpenSim directory
# Fetch the WebRtc addon
cd addon-modules
git clone https://github.com/Misterblue/os-webrtc-janus.git
cd ..
# Build the project files
./runprebuild.sh
# Compile OpenSimulator with the webrtc addon
./compile.sh
# Copy the INI file for webrtc into a config dir that is read at boot
mkdir bin/config
cp addon-modules/os-webrtc-janus/os-webrtc-janus.ini bin/config
```
These building steps create several `.dll` files for `os-webrtc-janus`
in `bin/WebRtc*.dll`. Some adventurous people have found that, rather
than building the [OpenSimulator] sources, you can just copy the `.dll`s
into an existing `/bin` directory. Just make sure the `WebRtc*.dll` files
were built on the same version of [OpenSimulator] you are running.
<a id="Configure_Simulator"></a>
## Configure a Region for Voice
The last step in [Building](#Building) copied `os-webrtc-janus.ini` into
the `bin/config` directory. [OpenSimulator] reads all the `.ini` files
in that directory so this copy operation adds the configuration for `os-webrtc-janus`
and this is what needs to be configured for the simulator and region.
The sample `.ini` file has two sections: `[WebRtcVoice]` and `[JanusWebRtcVoice]`.
The `WebRtcVoice` section configures the what services the simulator uses
for WebRtc voice. The `[JanusWebRtcVoice]` section configures any connection
the simulator makes to the Janus server. The latter section is only updated
if this simulator is using a local Janus server for spatial voice.
The values for `SpatialVoiceService` and `NonSpatialVoiceService` point
either directly to a Janus service or to a Robust grid server that is providing
the grid voice service. Both these options are in the sample `os-webrtc-janus.ini`
file and the proper one should be uncommented.
The viewer makes requests for either spatial voice (used in the region and parcels)
or non-spatial voice (used for group chats or person-to-person voice conversations).
`os-webrtc-janus` allows these two types of voice connections to be handled by
different voice services. Thus there are two different configurations:
- all voice service is provided by the grid (both spatial and non-spatial point to a robust service), and
- the region simulator provides a local Janus server for region spatial voice while the grid service is used for group chats
#### Grid Only Voice Services
The most common configuration will be for a simulator that uses the grid supplied
voice services. For this configuration, `os-webrtc-janus.ini` would look like:
```
[WebRtcVoice]
Enabled = true
SpatialVoiceService = WebRtcVoice.dll:WebRtcVoiceServiceConnector
NonSpatialVoiceService = WebRtcVoice.dll:WebRtcVoiceServiceConnector
WebRtcVoiceServerURI = ${Const|PrivURL}:${Const|PrivatePort}
```
This directs both spatial and non-spatial voice to the grid service connector
and `WebRtcVoiceServerURI` points to the configured Robust grid service.
There is no need for a `[JanusWebRtcVoice]` section because all that is handled by the grid services.
#### Local Simulator Janus Service
In a grid setup, there might be a need for a single simulator/region to use its own
Janus server for either privacy or to off-load the grid voice service.
In this configuration, spatial voice is directed to the local Janus service
while the non-spatial voice goes to the grid services to allow grid wide group
chat and region independent person-to-person chat.
This is done with a `os-webrtc-janus.ini` that looks like:
```
[WebRtcVoice]
Enabled = true
SpatialVoiceService = WebRtcJanusService.dll:WebRtcJanusService
NonSpatialVoiceService = WebRtcVoice.dll:WebRtcVoiceServiceConnector
WebRtcVoiceServerURI = ${Const|PrivURL}:${Const|PrivatePort}
[JanusWebRtcVoice]
JanusGatewayURI = http://janus.example.org:14223/voice
APIToken = APITokenToNeverCheckIn
JanusGatewayAdminURI = http://janus.example.org/admin
AdminAPIToken = AdminAPITokenToNeverCheckIn
```
Notice that, since the simulator has its own Janus service, it must configure the
connection parameters to access that Janus service. The details of running and
configuring a Janus service is provided at [os-webrtc-janus-docker] but, the configuration
here needs to specify the URI to address the Janus server and the API keys
to allow this simulator access to its interfaces. The example above
contains just sample entries.
<a id="Configure_Robust"></a>
## Configure Robust Server for WebRTC Voice
For the grid services side, `os-webrtc-janus` is configured as an additional service
in the Robust OpenSimulator server. The additions to `Robust.ini` are:
```
...
[ServiceList]
...
VoiceServiceConnector = "${Const|PrivatePort}/WebRtcVoice.dll:WebRtcVoiceServerConnector"
...
[WebRtcVoice]
Enabled = true
SpatialVoiceService = WebRtcJanusService.dll:WebRtcJanusService
NonSpatialVoiceService = WebRtcJanusService.dll:WebRtcJanusService
[JanusWebRtcVoice]
JanusGatewayURI = http://janus.example.org:14223/voice
APIToken = APITokenToNeverCheckIn
JanusGatewayAdminURI = http://janus.example.org/admin
AdminAPIToken = AdminAPITokenToNeverCheckIn
...
```
This adds `VoiceServiceConnector` to the list of services presented by this Robust server
and adds the WebRtcVoice configuration that says to do both spatial and non-spatial voice
using the Janus server, and the configuration for the Janus server itself.
One can configure multiple Robust services to distribute the load of services
and a Robust server with only `VoiceServiceConnector` in its ServiceList is possible.
<a id="Configure_Standalone"></a>
## Configure Standalone Region
[OpenSimulator] can be run "standalone" where all the grid services and regions are
run in one simulator instance. Adding voice to this configuration is sometimes useful
for very private meetings or testing. For this configuration, a Janus server is set up
and the standalone simulator is configured to point all voice to that Janus server:
```
[WebRtcVoice]
Enabled = true
SpatialVoiceService = WebRtcJanusService.dll:WebRtcJanusService
NonSpatialVoiceService = WebRtcJanusService.dll:WebRtcJanusService
WebRtcVoiceServerURI = ${Const|PrivURL}:${Const|PrivatePort}
[JanusWebRtcVoice]
JanusGatewayURI = http://janus.example.org:14223/voice
APIToken = APITokenToNeverCheckIn
JanusGatewayAdminURI = http://janus.example.org/admin
AdminAPIToken = AdminAPITokenToNeverCheckIn
```
This directs both spatial and non-spatial voice to the Janus server
and configures the URI address of the Janus server and the API access
keys for that server.
<a id="Managing_Voice"></a>
## Managing Voice (Console commands)
There are a few console commands for checking on and controlling the voice system.
The current list of commands for the simulator can be listed with the
console command `help webrtc`.
This is a growing section and will be added to over time.
**webrtc list sessions** -- not implemented
**janus info** -- list many details of the Janus-Gateway configuration. Very ugly, non-formated JSON.
**janus list rooms** -- list the rooms that have been allocated in the `AudioBridge` Janus plugin
[SecondLife WebRTC Voice]: https://wiki.secondlife.com/wiki/WebRTC_Voice
[OpenSimulator]: http://opensimulator.org
[OpenSimulator Community Conference]: https://conference.opensimulator.org
[os-webrtc-janus]: https://github.com/Misterblue/os-webrtc-janus
[Janus-Gateway WebRTC server]: https://janus.conf.meetecho.com/
[os-webrtc-janus-docker]: https://github.com/Misterblue/os-webrtc-janus-docker

View File

@@ -25,40 +25,30 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Region.Physics.Manager;
using System.Threading.Tasks;
namespace OpenSim.Region.Physics.BasicPhysicsPlugin
using OMV = OpenMetaverse;
namespace osWebRtcVoice
{
/// <summary>
/// Effectively a physics plugin that simulates no physics at all.
/// This is the interface for the viewer session. It is used to store the
/// state of the viewer session and to disconnect the session when needed.
/// </summary>
public class BasicPhysicsPlugin : IPhysicsPlugin
public interface IVoiceViewerSession
{
public BasicPhysicsPlugin()
{
}
// This ID is passed to and from the viewer to identify the session
public string ViewerSessionID { get; set; }
public IWebRtcVoiceService VoiceService { get; set; }
// THis ID is passed between us and the voice service to idetify the session
public string VoiceServiceSessionId { get; set; }
// The UUID of the region that is being connected to
public OMV.UUID RegionId { get; set; }
public bool Init()
{
return true;
}
// The simulator has a GUID to identify the user
public OMV.UUID AgentId { get; set; }
public PhysicsScene GetScene(string sceneIdentifier)
{
return new BasicScene(GetName(), sceneIdentifier);
}
public string GetName()
{
return ("basicphysics");
}
public void Dispose()
{
}
// Disconnect the connection to the voice service for this session
public Task Shutdown();
}
}

View File

@@ -25,42 +25,31 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Object
namespace osWebRtcVoice
{
/// <summary>
/// This implements an interface similar to that provided by physics engines to OpenSim internally.
/// Eg, PhysicsActor. It is capable of setting and getting properties related to the current
/// physics scene representation of this object.
/// This is the interface for the voice service. It is used to connect
/// the user to the voice server and to handle the capability messages
/// from the viewer.
/// </summary>
public interface IObjectPhysics
public interface IWebRtcVoiceService
{
bool Enabled { get; set; }
// The user is requesting a voice connection. The message contains the offer
// from the user and we must return the answer.
// If there are problems, the returned map will contain an error message.
bool Phantom { get; set; }
bool PhantomCollisions { get; set; }
// Initial calls to the voice server to get the user connected
public OSDMap ProvisionVoiceAccountRequest(OSDMap pRequest, UUID pUserID, UUID pScene);
public OSDMap VoiceSignalingRequest(OSDMap pRequest, UUID pUserID, UUID pScene);
double Density { get; set; }
double Mass { get; set; }
double Buoyancy { get; set; }
// Once connection state is looked up, the viewer session is passed in
public OSDMap ProvisionVoiceAccountRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pScene);
public OSDMap VoiceSignalingRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pScene);
Vector3 GeometricCenter { get; }
Vector3 CenterOfMass { get; }
Vector3 RotationalVelocity { get; set; }
Vector3 Velocity { get; set; }
Vector3 Torque { get; set; }
Vector3 Acceleration { get; }
Vector3 Force { get; set; }
bool FloatOnWater { set; }
void AddForce(Vector3 force, bool pushforce);
void AddAngularForce(Vector3 force, bool pushforce);
void SetMomentum(Vector3 momentum);
// Create a viewer session with all the variables needed for the underlying implementation
public IVoiceViewerSession CreateViewerSession(OSDMap pRequest, UUID pUserID, UUID pScene);
}
}

View File

@@ -0,0 +1,132 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Linq;
using System.Collections.Generic;
using OpenMetaverse;
using System.Threading.Tasks;
namespace osWebRtcVoice
{
public class VoiceViewerSession : IVoiceViewerSession
{
// A simple session structure that is used when the connection is actually in the
// remote service.
public VoiceViewerSession(IWebRtcVoiceService pVoiceService, UUID pRegionId, UUID pAgentId)
{
RegionId = pRegionId;
AgentId = pAgentId;
ViewerSessionID = UUID.Random().ToString();
VoiceService = pVoiceService;
}
public string ViewerSessionID { get; set; }
public IWebRtcVoiceService VoiceService { get; set; }
public string VoiceServiceSessionId
{
get => throw new System.NotImplementedException();
set => throw new System.NotImplementedException();
}
public UUID RegionId { get; set; }
public UUID AgentId { get; set; }
// =====================================================================
// ViewerSessions hold the connection information for the client connection through to the voice service.
// This collection is static and is simulator wide so there will be sessions for all regions and all clients.
public static Dictionary<string, IVoiceViewerSession> ViewerSessions = new Dictionary<string, IVoiceViewerSession>();
// Get a viewer session by the viewer session ID
public static bool TryGetViewerSession(string pViewerSessionId, out IVoiceViewerSession pViewerSession)
{
lock (ViewerSessions)
{
return ViewerSessions.TryGetValue(pViewerSessionId, out pViewerSession);
}
}
// public static bool TryGetViewerSessionByAgentId(UUID pAgentId, out IVoiceViewerSession pViewerSession)
public static bool TryGetViewerSessionByAgentId(UUID pAgentId, out IEnumerable<KeyValuePair<string, IVoiceViewerSession>> pViewerSessions)
{
lock (ViewerSessions)
{
pViewerSessions = ViewerSessions.Where(v => v.Value.AgentId == pAgentId);
return pViewerSessions.Count() > 0;
}
}
// Get a viewer session by the VoiceService session ID
public static bool TryGetViewerSessionByVSSessionId(string pVSSessionId, out IVoiceViewerSession pViewerSession)
{
lock (ViewerSessions)
{
var sessions = ViewerSessions.Where(v => v.Value.VoiceServiceSessionId == pVSSessionId);
if (sessions.Count() > 0)
{
pViewerSession = sessions.First().Value;
return true;
}
pViewerSession = null;
return false;
}
}
public static void AddViewerSession(IVoiceViewerSession pSession)
{
lock (ViewerSessions)
{
ViewerSessions[pSession.ViewerSessionID] = pSession;
}
}
public static void RemoveViewerSession(string pSessionId)
{
lock (ViewerSessions)
{
ViewerSessions.Remove(pSessionId);
}
}
// Update a ViewSession from one ID to another.
// Remove the old session ID from the ViewerSessions collection, update the
// sessionID value in the IVoiceViewerSession, and add the session back to the
// collection.
// This is used in the kludge to synchronize a region's ViewerSessionID with the
// remote VoiceService's session ID.
public static void UpdateViewerSessionId(IVoiceViewerSession pSession, string pNewSessionId)
{
lock (ViewerSessions)
{
ViewerSessions.Remove(pSession.ViewerSessionID);
pSession.ViewerSessionID = pNewSessionId;
ViewerSessions[pSession.ViewerSessionID] = pSession;
}
}
public Task Shutdown()
{
throw new System.NotImplementedException();
}
}
}

View File

@@ -0,0 +1,171 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using OpenSim.Server.Base;
using OpenSim.Server.Handlers.Base;
using System.Threading.Tasks;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using log4net;
using Nini.Config;
namespace osWebRtcVoice
{
// Class that provides the network interface to the WebRTC voice server.
// This is used by the Robust server to receive requests from the region servers
// and do the voice stuff on the WebRTC service (see WebRtcVoiceServiceConnector).
public class WebRtcVoiceServerConnector : IServiceConnector
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[WEBRTC VOICE SERVER CONNECTOR]";
private bool m_Enabled = false;
private bool m_MessageDetails = false;
private IWebRtcVoiceService m_WebRtcVoiceService;
public WebRtcVoiceServerConnector(IConfigSource pConfig, IHttpServer pServer, string pConfigName)
{
IConfig moduleConfig = pConfig.Configs["WebRtcVoice"];
if (moduleConfig is not null)
{
m_Enabled = moduleConfig.GetBoolean("Enabled", false);
if (m_Enabled)
{
m_log.InfoFormat("{0} WebRtcVoiceServerConnector enabled", LogHeader);
m_MessageDetails = moduleConfig.GetBoolean("MessageDetails", false);
// This creates the local service that handles the requests.
// The local service provides the IWebRtcVoiceService interface and directs the requests
// to the WebRTC service.
string localServiceModule = moduleConfig.GetString("LocalServiceModule", "WebRtcVoiceServiceModule.dll:WebRtcVoiceServiceModule");
m_log.DebugFormat("{0} loading {1}", LogHeader, localServiceModule);
object[] args = new object[0];
m_WebRtcVoiceService = ServerUtils.LoadPlugin<IWebRtcVoiceService>(localServiceModule, args);
// The WebRtcVoiceServiceModule is both an IWebRtcVoiceService and a ISharedRegionModule
// so we can initialize it as if it was the region module.
ISharedRegionModule sharedModule = m_WebRtcVoiceService as ISharedRegionModule;
if (sharedModule is null)
{
m_log.ErrorFormat("{0} local service module does not implement ISharedRegionModule", LogHeader);
m_Enabled = false;
return;
}
sharedModule.Initialise(pConfig);
// Now that we have someone to handle the requests, we can set up the handlers
pServer.AddJsonRPCHandler("provision_voice_account_request", Handle_ProvisionVoiceAccountRequest);
pServer.AddJsonRPCHandler("voice_signaling_request", Handle_VoiceSignalingRequest);
}
}
}
private bool Handle_ProvisionVoiceAccountRequest(OSDMap pJson, ref JsonRpcResponse pResponse)
{
bool ret = false;
m_log.DebugFormat("{0} Handle_ProvisionVoiceAccountRequest", LogHeader);
if (m_MessageDetails) m_log.DebugFormat("{0} PVAR: req={1}", LogHeader, pJson.ToString());
if (pJson.ContainsKey("params") && pJson["params"] is OSDMap paramsMap)
{
OSDMap request = paramsMap.ContainsKey("request") ? paramsMap["request"] as OSDMap : null;
UUID userID = paramsMap.ContainsKey("userID") ? paramsMap["userID"].AsUUID() : UUID.Zero;
UUID sceneID = paramsMap.ContainsKey("scene") ? paramsMap["scene"].AsUUID() : UUID.Zero;
try
{
if (m_WebRtcVoiceService is null)
{
m_log.ErrorFormat("{0} PVAR: no local service", LogHeader);
return false;
}
OSDMap resp = m_WebRtcVoiceService.ProvisionVoiceAccountRequest(request, userID, sceneID);
pResponse = new JsonRpcResponse();
pResponse.Result = resp;
if (m_MessageDetails) m_log.DebugFormat("{0} PVAR: resp={1}", LogHeader, resp.ToString());
ret = true;
}
catch (Exception e)
{
m_log.ErrorFormat("{0} PVAR: exception {1}", LogHeader, e);
}
}
else
{
m_log.ErrorFormat("{0} PVAR: missing parameters", LogHeader);
}
return ret;
}
private bool Handle_VoiceSignalingRequest(OSDMap pJson, ref JsonRpcResponse pResponse)
{
bool ret = false;
if (pJson.ContainsKey("params") && pJson["params"] is OSDMap paramsMap)
{
m_log.DebugFormat("{0} Handle_VoiceSignalingRequest", LogHeader);
if (m_MessageDetails) m_log.DebugFormat("{0} VSR: req={1}", LogHeader, paramsMap.ToString());
OSDMap request = paramsMap.ContainsKey("request") ? paramsMap["request"] as OSDMap : null;
UUID userID = paramsMap.ContainsKey("userID") ? paramsMap["userID"].AsUUID() : UUID.Zero;
UUID sceneID = paramsMap.ContainsKey("scene") ? paramsMap["scene"].AsUUID() : UUID.Zero;
try
{
OSDMap resp = m_WebRtcVoiceService.VoiceSignalingRequest(request, userID, sceneID);
pResponse = new JsonRpcResponse();
pResponse.Result = resp;
if (m_MessageDetails) m_log.DebugFormat("{0} VSR: resp={1}", LogHeader, resp.ToString());
ret = true;
}
catch (Exception e)
{
m_log.ErrorFormat("{0} VSR: exception {1}", LogHeader, e);
}
}
else
{
m_log.ErrorFormat("{0} VSR: missing parameters", LogHeader);
}
return ret;
}
}
}

View File

@@ -0,0 +1,204 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Reflection;
using OpenSim.Framework;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using log4net;
using Nini.Config;
namespace osWebRtcVoice
{
// Class that provides the local IWebRtcVoiceService interface to the JsonRPC Robust
// server. This is used by the region servers to talk to the Robust server.
public class WebRtcVoiceServiceConnector : IWebRtcVoiceService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[WEBRTC VOICE SERVICE CONNECTOR]";
private bool m_Enabled = false;
private bool m_MessageDetails = false;
private IConfigSource m_Config;
string m_serverURI = "http://localhost:8080";
public WebRtcVoiceServiceConnector(IConfigSource pConfig)
{
m_Config = pConfig;
IConfig moduleConfig = m_Config.Configs["WebRtcVoice"];
if (moduleConfig is not null)
{
m_Enabled = moduleConfig.GetBoolean("Enabled", false);
if (m_Enabled)
{
m_serverURI = moduleConfig.GetString("WebRtcVoiceServerURI", string.Empty);
if (string.IsNullOrWhiteSpace(m_serverURI))
{
m_log.Error($"{LogHeader} WebRtcVoiceServiceConnector enabled but no WebRtcVoiceServerURI specified");
m_Enabled = false;
}
else
{
m_log.Info($"{LogHeader} WebRtcVoiceServiceConnector enabled");
}
m_MessageDetails = moduleConfig.GetBoolean("MessageDetails", false);
}
}
}
// Create a local viewer session. This gets a local viewer session ID that is
// later changed when the ProvisionVoiceAccountRequest response is returned
// so that the viewer session ID is the same here as from the WebRTC service.
public IVoiceViewerSession CreateViewerSession(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
m_log.Debug($"{LogHeader} CreateViewerSession");
return new VoiceViewerSession(this, pUserID, pSceneID);
}
public OSDMap ProvisionVoiceAccountRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
m_log.Debug($"{LogHeader} ProvisionVoiceAccountRequest without ViewerSession. uID={pUserID}, sID={pSceneID}");
return null;
}
// Received a ProvisionVoiceAccountRequest from a viewer. Forward it to the WebRTC service.
public OSDMap ProvisionVoiceAccountRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
m_log.Debug($"{LogHeader} VoiceSignalingRequest. uID={pUserID}, sID={pSceneID}");
OSDMap req = new()
{
{ "request", pRequest },
{ "userID", pUserID.ToString() },
{ "scene", pSceneID.ToString() }
};
var resp = JsonRpcRequest("provision_voice_account_request", m_serverURI, req);
// Kludge to sync the viewer session number in our IVoiceViewerSession with the one from the WebRTC service.
if (resp.TryGetString("viewer_session", out string otherViewerSessionId))
{
m_log.Debug(
$"{LogHeader} ProvisionVoiceAccountRequest: syncing viewSessionID. old={pVSession.ViewerSessionID}, new={otherViewerSessionId}");
VoiceViewerSession.UpdateViewerSessionId(pVSession, otherViewerSessionId);
}
return resp;
}
public OSDMap VoiceSignalingRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
m_log.Debug($"{LogHeader} VoiceSignalingRequest without ViewerSession. uID={pUserID}, sID={pSceneID}");
return null;
}
public OSDMap VoiceSignalingRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
m_log.DebugFormat("{0} VoiceSignalingRequest. uID={1}, sID={2}", LogHeader, pUserID, pSceneID);
OSDMap req = new()
{
{ "request", pRequest },
{ "userID", pUserID.ToString() },
{ "scene", pSceneID.ToString() }
};
return JsonRpcRequest("voice_signaling_request", m_serverURI, req);
}
public OSDMap JsonRpcRequest(string method, string uri, OSDMap pParams)
{
string jsonId = UUID.Random().ToString();
if(string.IsNullOrWhiteSpace(uri))
return null;
OSDMap request = new()
{
{ "jsonrpc", OSD.FromString("2.0") },
{ "id", OSD.FromString(jsonId) },
{ "method", OSD.FromString(method) },
{ "params", pParams }
};
OSDMap outerResponse = null;
try
{
if (m_MessageDetails) m_log.Debug($"{LogHeader}: request: {request}");
outerResponse = WebUtil.PostToService(uri, request, 10000, true);
if (m_MessageDetails) m_log.Debug($"{LogHeader}: response: {outerResponse}");
}
catch (Exception e)
{
m_log.Error($"{LogHeader}: JsonRpc request '{method}' to {uri} failed: {e.Message}");
m_log.Debug($"{LogHeader}: request: {request}");
return new OSDMap()
{
{ "error", OSD.FromString(e.Message) }
};
}
if (!outerResponse.TryGetOSDMap("_Result", out OSDMap response))
{
string errm = $"JsonRpc request '{method}' to {1} returned an invalid response: {OSDParser.SerializeJsonString(outerResponse)}";
m_log.Error(errm);
return new OSDMap()
{
{ "error", errm }
};
}
OSD osdtmp;
if (response.TryGetValue("error", out osdtmp))
{
string errm = $"JsonRpc request '{method}' to {uri} returned an error: {OSDParser.SerializeJsonString(osdtmp)}";
m_log.Error(errm);
return new OSDMap()
{
{ "error", errm }
};
}
if (!response.TryGetOSDMap("result", out OSDMap resultmap ))
{
string errm = $"JsonRpc request '{method}' to {uri} returned result as non-OSDMap: {OSDParser.SerializeJsonString(outerResponse)}";
m_log.Error(errm);
return new OSDMap()
{
{ "error", errm }
};
}
return resultmap;
}
}
}

View File

@@ -0,0 +1,500 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.IO;
using System.Net;
using System.Reflection;
using Mono.Addins;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using Caps = OpenSim.Framework.Capabilities.Caps;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
using log4net;
using Nini.Config;
[assembly: Addin("WebRtcVoiceRegionModule", "1.0")]
[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]
namespace osWebRtcVoice
{
/// <summary>
/// This module provides the WebRTC voice interface for viewer clients..
///
/// In particular, it provides the following capabilities:
/// ProvisionVoiceAccountRequest, VoiceSignalingRequest and limited ChatSessionRequest
/// which are the user interface to the voice service.
///
/// Initially, when the user connects to the region, the region feature "VoiceServiceType" is
/// set to "webrtc" and the capabilities that support voice are enabled.
/// The capabilities then pass the user request information to the IWebRtcVoiceService interface
/// that has been registered for the reqion.
/// </summary>
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "RegionVoiceModule")]
public class WebRtcVoiceRegionModule : ISharedRegionModule
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string logHeader = "[REGION WEBRTC VOICE]";
private static byte[] llsdUndefAnswerBytes = Util.UTF8.GetBytes("<llsd><undef /></llsd>");
private bool _MessageDetails = false;
// Control info
private static bool m_Enabled = false;
private IConfig m_Config;
// ISharedRegionModule.Initialize
public void Initialise(IConfigSource config)
{
m_Config = config.Configs["WebRtcVoice"];
if (m_Config is not null)
{
m_Enabled = m_Config.GetBoolean("Enabled", false);
if (m_Enabled)
{
_MessageDetails = m_Config.GetBoolean("MessageDetails", false);
m_log.Info($"{logHeader}: enabled");
}
}
}
// ISharedRegionModule.PostInitialize
public void PostInitialise()
{
}
// ISharedRegionModule.AddRegion
public void AddRegion(Scene scene)
{
// todo register module to get parcels changes etc
}
// ISharedRegionModule.RemoveRegion
public void RemoveRegion(Scene scene)
{
}
// ISharedRegionModule.RegionLoaded
public void RegionLoaded(Scene scene)
{
if (m_Enabled)
{
scene.EventManager.OnRegisterCaps += delegate (UUID agentID, Caps caps)
{
OnRegisterCaps(scene, agentID, caps);
};
ISimulatorFeaturesModule simFeatures = scene.RequestModuleInterface<ISimulatorFeaturesModule>();
simFeatures?.AddFeature("VoiceServerType", OSD.FromString("webrtc"));
}
}
// ISharedRegionModule.Close
public void Close()
{
}
// ISharedRegionModule.Name
public string Name
{
get { return "RegionVoiceModule"; }
}
// ISharedRegionModule.ReplaceableInterface
public Type ReplaceableInterface
{
get { return null; }
}
// <summary>
// OnRegisterCaps is invoked via the scene.EventManager
// everytime OpenSim hands out capabilities to a client
// (login, region crossing). We contribute three capabilities to
// the set of capabilities handed back to the client:
// ProvisionVoiceAccountRequest, VoiceSignalingRequest and limited ChatSessionRequest
//
// ProvisionVoiceAccountRequest allows the client to obtain
// voice communication information the the avater.
//
// VoiceSignalingRequest: Used for trickling ICE candidates.
//
// ChatSessionRequest
//
// Note that OnRegisterCaps is called here via a closure
// delegate containing the scene of the respective region (see
// Initialise()).
// </summary>
public void OnRegisterCaps(Scene scene, UUID agentID, Caps caps)
{
m_log.Debug(
$"{logHeader}: OnRegisterCaps called with agentID {agentID} caps {caps} in scene {scene.Name}");
caps.RegisterSimpleHandler("ProvisionVoiceAccountRequest",
new SimpleStreamHandler("/" + UUID.Random(), (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) =>
{
ProvisionVoiceAccountRequest(httpRequest, httpResponse, agentID, scene);
}));
caps.RegisterSimpleHandler("VoiceSignalingRequest",
new SimpleStreamHandler("/" + UUID.Random(), (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) =>
{
VoiceSignalingRequest(httpRequest, httpResponse, agentID, scene);
}));
caps.RegisterSimpleHandler("ChatSessionRequest",
new SimpleStreamHandler("/" + UUID.Random(), (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) =>
{
ChatSessionRequest(httpRequest, httpResponse, agentID, scene);
}));
}
/// <summary>
/// Callback for a client request for Voice Account Details
/// </summary>
/// <param name="scene">current scene object of the client</param>
/// <param name="request"></param>
/// <param name="path"></param>
/// <param name="param"></param>
/// <param name="agentID"></param>
/// <param name="caps"></param>
/// <returns></returns>
public void ProvisionVoiceAccountRequest(IOSHttpRequest request, IOSHttpResponse response, UUID agentID, Scene scene)
{
// Get the voice service. If it doesn't exist, return an error.
IWebRtcVoiceService voiceService = scene.RequestModuleInterface<IWebRtcVoiceService>();
if (voiceService is null)
{
m_log.Error($"{logHeader}[ProvisionVoice]: voice service not loaded");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if(request.HttpMethod != "POST")
{
m_log.DebugFormat($"[{logHeader}][ProvisionVoice]: Not a POST request. Agent={agentID}");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
// Deserialize the request. Convert the LLSDXml to OSD for our use
OSDMap map = BodyToMap(request, "ProvisionVoiceAccountRequest");
if (map is null)
{
m_log.Error($"{logHeader}[ProvisionVoice]: No request data found. Agent={agentID}");
response.StatusCode = (int)HttpStatusCode.NoContent;
return;
}
// Make sure the request is for WebRtc voice
if (map.TryGetValue("voice_server_type", out OSD vstosd))
{
if (vstosd is OSDString vst && !((string)vst).Equals("webrtc", StringComparison.OrdinalIgnoreCase))
{
m_log.Warn($"{logHeader}[ProvisionVoice]: voice_server_type is not 'webrtc'. Request: {map}");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.OK;
return;
}
}
if (_MessageDetails) m_log.DebugFormat($"{logHeader}[ProvisionVoice]: request: {map}");
if (map.TryGetString("channel_type", out string channelType))
{
//do fully not trust viewers voice parcel requests
if (channelType == "local")
{
if (!scene.RegionInfo.EstateSettings.AllowVoice)
{
m_log.Debug($"{logHeader}[ProvisionVoice]:region \"{scene.Name}\": voice not enabled in estate settings");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.NotImplemented;
return;
}
if (scene.LandChannel == null)
{
m_log.Error($"{logHeader}[ProvisionVoice] region \"{scene.Name}\" land data not yet available");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.NotImplemented;
return;
}
if(!scene.TryGetScenePresence(agentID, out ScenePresence sp))
{
m_log.Debug($"{logHeader}[ProvisionVoice]:avatar not found");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if(map.TryGetInt("parcel_local_id", out int parcelID))
{
ILandObject parcel = scene.LandChannel.GetLandObject(parcelID);
if (parcel == null)
{
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
LandData land = parcel.LandData;
if (land == null)
{
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (!scene.RegionInfo.EstateSettings.TaxFree && (land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0)
{
m_log.Debug($"{logHeader}[ProvisionVoice]:parcel voice not allowed");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.Forbidden;
return;
}
if ((land.Flags & (uint)ParcelFlags.UseEstateVoiceChan) != 0)
{
map.Remove("parcel_local_id"); // estate channel
}
else if(parcel.IsRestrictedFromLand(agentID) || parcel.IsBannedFromLand(agentID))
{
// check Z distance?
m_log.Debug($"{logHeader}[ProvisionVoice]:agent not allowed on parcel");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.Forbidden;
return;
}
}
}
}
// The checks passed. Send the request to the voice service.
OSDMap resp = voiceService.ProvisionVoiceAccountRequest(map, agentID, scene.RegionInfo.RegionID);
if(resp is not null)
{
if (_MessageDetails) m_log.DebugFormat($"{logHeader}[ProvisionVoice]: response: {resp}");
// TODO: check for errors and package the response
// Convert the OSD to LLSDXml for the response
string xmlResp = OSDParser.SerializeLLSDXmlString(resp);
response.RawBuffer = Util.UTF8.GetBytes(xmlResp);
response.StatusCode = (int)HttpStatusCode.OK;
}
else
{
m_log.DebugFormat($"{logHeader}[ProvisionVoice]: got null response");
response.StatusCode = (int)HttpStatusCode.OK;
}
return;
}
public void VoiceSignalingRequest(IOSHttpRequest request, IOSHttpResponse response, UUID agentID, Scene scene)
{
IWebRtcVoiceService voiceService = scene.RequestModuleInterface<IWebRtcVoiceService>();
if (voiceService is null)
{
m_log.ErrorFormat($"{logHeader}[VoiceSignalingRequest]: avatar \"{agentID}\": no voice service");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if(request.HttpMethod != "POST")
{
m_log.Error($"[{logHeader}][VoiceSignaling]: Not a POST request. Agent={agentID}");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
// Deserialize the request. Convert the LLSDXml to OSD for our use
OSDMap map = BodyToMap(request, "VoiceSignalingRequest");
if (map is null)
{
m_log.ErrorFormat($"{logHeader}[VoiceSignalingRequest]: No request data found. Agent={agentID}");
response.StatusCode = (int)HttpStatusCode.NoContent;
return;
}
// Make sure the request is for WebRTC voice
if (map.TryGetValue("voice_server_type", out OSD vstosd))
{
if (vstosd is OSDString vst && !((string)vst).Equals("webrtc", StringComparison.OrdinalIgnoreCase))
{
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.OK;
return;
}
}
OSDMap resp = voiceService.VoiceSignalingRequest(map, agentID, scene.RegionInfo.RegionID);
if (_MessageDetails) m_log.Debug($"{logHeader}[VoiceSignalingRequest]: Response: {resp}");
// TODO: check for errors and package the response
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.OK;
return;
}
/// <summary>
/// Callback for a client request for ChatSessionRequest.
/// The viewer sends this request when the user tries to start a P2P text or voice session
/// with another user. We need to generate a new session ID and return it to the client.
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
/// <param name="agentID"></param>
/// <param name="scene"></param>
public void ChatSessionRequest(IOSHttpRequest request, IOSHttpResponse response, UUID agentID, Scene scene)
{
m_log.DebugFormat("{0}: ChatSessionRequest received for agent {1} in scene {2}", logHeader, agentID, scene.RegionInfo.RegionName);
if (request.HttpMethod != "POST")
{
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (!scene.TryGetScenePresence(agentID, out ScenePresence sp) || sp.IsDeleted)
{
m_log.Warn($"{logHeader} ChatSessionRequest: scene presence not found or deleted for agent {agentID}");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
OSDMap reqmap = BodyToMap(request, "[ChatSessionRequest]");
if (reqmap is null)
{
m_log.Warn($"{logHeader} ChatSessionRequest: message body not parsable in request for agent {agentID}");
response.StatusCode = (int)HttpStatusCode.NoContent;
return;
}
m_log.Debug($"{logHeader} ChatSessionRequest");
if (!reqmap.TryGetString("method", out string method))
{
m_log.Warn($"{logHeader} ChatSessionRequest: missing required 'method' field in request for agent {agentID}");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (!reqmap.TryGetUUID("session-id", out UUID sessionID))
{
m_log.Warn($"{logHeader} ChatSessionRequest: missing required 'session-id' field in request for agent {agentID}");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
switch (method.ToLower())
{
// Several different method requests that we don't know how to handle.
// Just return OK for now.
case "decline p2p voice":
case "decline invitation":
case "start conference":
case "fetch history":
response.StatusCode = (int)HttpStatusCode.OK;
break;
// Asking to start a P2P voice session. We need to generate a new session ID and return
// it to the client in a ChatterBoxSessionStartReply event.
case "start p2p voice":
UUID newSessionID;
if (reqmap.TryGetUUID("params", out UUID otherID))
newSessionID = new(otherID.ulonga ^ agentID.ulonga, otherID.ulongb ^ agentID.ulongb);
else
newSessionID = UUID.Random();
IEventQueue queue = scene.RequestModuleInterface<IEventQueue>();
if (queue is null)
{
m_log.ErrorFormat("{0}: no event queue for scene {1}", logHeader, scene.RegionInfo.RegionName);
response.StatusCode = (int)HttpStatusCode.InternalServerError;
}
else
{
queue.ChatterBoxSessionStartReply(
newSessionID,
sp.Name,
2,
false,
true,
sessionID,
true,
string.Empty,
agentID);
response.StatusCode = (int)HttpStatusCode.OK;
}
break;
default:
response.StatusCode = (int)HttpStatusCode.BadRequest;
break;
}
}
/// <summary>
/// Convert the LLSDXml body of the request to an OSDMap for easier handling.
/// Also logs the request if message details is enabled.
/// </summary>
/// <param name="request"></param>
/// <param name="pCaller"></param>
/// <returns>'null' if the request body is empty or cannot be deserialized</returns>
private OSDMap BodyToMap(IOSHttpRequest request, string pCaller)
{
try
{
using Stream inputStream = request.InputStream;
if (inputStream.Length > 0)
{
OSD tmp = OSDParser.DeserializeLLSDXml(inputStream);
if (_MessageDetails)
m_log.Debug($"{pCaller} BodyToMap: Request: {tmp}");
if(tmp is OSDMap map)
return map;
}
}
catch
{
m_log.Debug($"{pCaller} BodyToMap: Fail to decode LLSDXml request");
}
return null;
}
}
}

View File

@@ -0,0 +1,295 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Server.Base;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using Mono.Addins;
using log4net;
using Nini.Config;
[assembly: Addin("WebRtcVoiceServiceModule", "1.0")]
[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]
namespace osWebRtcVoice
{
/// <summary>
/// Interface for the WebRtcVoiceService.
/// An instance of this is registered as the IWebRtcVoiceService for this region.
/// The function here is to direct the capability requests to the appropriate voice service.
/// For the moment, there are separate voice services for spatial and non-spatial voice
/// with the idea that a region could have a pre-region spatial voice service while
/// the grid could have a non-spatial voice service for group chat, etc.
/// Fancier configurations are possible.
/// </summary>
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "WebRtcVoiceServiceModule")]
public class WebRtcVoiceServiceModule : ISharedRegionModule, IWebRtcVoiceService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static string LogHeader = "[WEBRTC VOICE SERVICE MODULE]";
private static bool m_Enabled = false;
private IConfigSource m_Config;
private IWebRtcVoiceService m_spatialVoiceService;
private IWebRtcVoiceService m_nonSpatialVoiceService;
// =====================================================================
// ISharedRegionModule.Initialize
// Get configuration and load the modules that will handle spatial and non-spatial voice.
public void Initialise(IConfigSource pConfig)
{
m_Config = pConfig;
IConfig moduleConfig = m_Config.Configs["WebRtcVoice"];
if (moduleConfig is not null)
{
m_Enabled = moduleConfig.GetBoolean("Enabled", false);
if (m_Enabled)
{
// Get the DLLs for the two voice services
string spatialDllName = moduleConfig.GetString("SpatialVoiceService", string.Empty);
string nonSpatialDllName = moduleConfig.GetString("NonSpatialVoiceService", string.Empty);
if (string.IsNullOrEmpty(spatialDllName) && string.IsNullOrEmpty(nonSpatialDllName))
{
m_log.Error($"{LogHeader} No VoiceService specified in configuration");
m_Enabled = false;
return;
}
// Default non-spatial to spatial if not specified
if (string.IsNullOrEmpty(nonSpatialDllName))
{
m_log.Debug($"{LogHeader} nonSpatialDllName not specified. Defaulting to spatialDllName");
nonSpatialDllName = spatialDllName;
}
// Load the two voice services
m_log.Debug($"{LogHeader} Loading SpatialVoiceService from {spatialDllName}");
m_spatialVoiceService = ServerUtils.LoadPlugin<IWebRtcVoiceService>(spatialDllName, [m_Config]);
if (m_spatialVoiceService is null)
{
m_log.Error($"{LogHeader} Could not load SpatialVoiceService from {spatialDllName}, module disabled");
m_Enabled = false;
return;
}
m_log.Debug($"{LogHeader} Loading NonSpatialVoiceService from {nonSpatialDllName}");
if (spatialDllName != nonSpatialDllName)
{
m_nonSpatialVoiceService = ServerUtils.LoadPlugin<IWebRtcVoiceService>(nonSpatialDllName, [ m_Config ]);
if (m_nonSpatialVoiceService is null)
{
m_log.Error("{LogHeader} Could not load NonSpatialVoiceService from {nonSpatialDllName}");
m_Enabled = false;
}
}
if (m_Enabled)
{
m_log.Info($"{LogHeader} WebRtcVoiceService enabled");
}
}
}
}
// ISharedRegionModule.PostInitialize
public void PostInitialise()
{
}
// ISharedRegionModule.Close
public void Close()
{
}
// ISharedRegionModule.ReplaceableInterface
public Type ReplaceableInterface
{
get { return null; }
}
// ISharedRegionModule.Name
public string Name
{
get { return "WebRtcVoiceServiceModule"; }
}
// ISharedRegionModule.AddRegion
public void AddRegion(Scene scene)
{
if (m_Enabled)
{
m_log.Debug($"{LogHeader} Adding WebRtcVoiceService to region {scene.Name}");
scene.RegisterModuleInterface<IWebRtcVoiceService>(this);
// TODO: figure out what events we care about
// When new client (child or root) is added to scene, before OnClientLogin
// scene.EventManager.OnNewClient += Event_OnNewClient;
// When client is added on login.
// scene.EventManager.OnClientLogin += Event_OnClientLogin;
// New presence is added to scene. Child, root, and NPC. See Scene.AddNewAgent()
// scene.EventManager.OnNewPresence += Event_OnNewPresence;
// scene.EventManager.OnRemovePresence += Event_OnRemovePresence;
// update to client position (either this or 'significant')
// scene.EventManager.OnClientMovement += Event_OnClientMovement;
// "significant" update to client position
// scene.EventManager.OnSignificantClientMovement += Event_OnSignificantClientMovement;
}
}
// ISharedRegionModule.RemoveRegion
public void RemoveRegion(Scene scene)
{
if (m_Enabled)
{
scene.UnregisterModuleInterface<IWebRtcVoiceService>(this);
}
}
// ISharedRegionModule.RegionLoaded
public void RegionLoaded(Scene scene)
{
}
// =====================================================================
// Thought about doing this but currently relying on the voice service
// event ("hangup") to remove the viewer session.
private void Event_OnRemovePresence(UUID pAgentID)
{
// When a presence is removed, remove the viewer sessions for that agent
IEnumerable<KeyValuePair<string, IVoiceViewerSession>> vSessions;
if (VoiceViewerSession.TryGetViewerSessionByAgentId(pAgentID, out vSessions))
{
foreach(KeyValuePair<string, IVoiceViewerSession> v in vSessions)
{
m_log.DebugFormat("{0} Event_OnRemovePresence: removing viewer session {1}", LogHeader, v.Key);
VoiceViewerSession.RemoveViewerSession(v.Key);
v.Value.Shutdown();
}
}
}
// =====================================================================
// IWebRtcVoiceService
// IWebRtcVoiceService.ProvisionVoiceAccountRequest
public OSDMap ProvisionVoiceAccountRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
OSDMap response = null;
IVoiceViewerSession vSession = null;
if (pRequest.TryGetString("viewer_session", out string viewerSessionId))
{
// request has a viewer session. Use that to find the voice service
if (!VoiceViewerSession.TryGetViewerSession(viewerSessionId, out vSession))
{
m_log.Error($"{0} ProvisionVoiceAccountRequest: viewer session {viewerSessionId} not found");
}
}
else
{
// the request does not have a viewer session. See if it's an initial request
if (pRequest.TryGetString("channel_type", out string channelType))
{
if (channelType == "local")
{
// TODO: check if this userId is making a new session (case that user is reconnecting)
vSession = m_spatialVoiceService.CreateViewerSession(pRequest, pUserID, pSceneID);
VoiceViewerSession.AddViewerSession(vSession);
}
else
{
// TODO: check if this userId is making a new session (case that user is reconnecting)
vSession = m_nonSpatialVoiceService.CreateViewerSession(pRequest, pUserID, pSceneID);
VoiceViewerSession.AddViewerSession(vSession);
}
}
else
{
m_log.Error($"{LogHeader} ProvisionVoiceAccountRequest: no channel_type in request");
}
}
if (vSession is not null)
{
response = vSession.VoiceService.ProvisionVoiceAccountRequest(vSession, pRequest, pUserID, pSceneID);
}
return response;
}
// IWebRtcVoiceService.VoiceSignalingRequest
public OSDMap VoiceSignalingRequest(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
OSDMap response = null;
IVoiceViewerSession vSession = null;
if (pRequest.TryGetString("viewer_session", out string viewerSessionId))
{
// request has a viewer session. Use that to find the voice service
if (VoiceViewerSession.TryGetViewerSession(viewerSessionId, out vSession))
{
response = vSession.VoiceService.VoiceSignalingRequest(vSession, pRequest, pUserID, pSceneID);
}
else
{
m_log.ErrorFormat("{0} VoiceSignalingRequest: viewer session {1} not found", LogHeader, viewerSessionId);
}
}
else
{
m_log.ErrorFormat("{0} VoiceSignalingRequest: no viewer_session in request", LogHeader);
}
return response;
}
// This module should never be called with this signature
public OSDMap ProvisionVoiceAccountRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
throw new NotImplementedException();
}
// This module should never be called with this signature
public OSDMap VoiceSignalingRequest(IVoiceViewerSession pVSession, OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
throw new NotImplementedException();
}
public IVoiceViewerSession CreateViewerSession(OSDMap pRequest, UUID pUserID, UUID pSceneID)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,171 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.ApplicationPlugins.LoadRegions
{
public class EstateLoaderFileSystem : IEstateLoader
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IConfigSource m_configSource;
private OpenSimBase m_application;
public EstateLoaderFileSystem(OpenSimBase openSim)
{
m_application = openSim;
}
public void SetIniConfigSource(IConfigSource configSource)
{
m_configSource = configSource;
}
public void LoadEstates()
{
string estateConfigPath = Path.Combine(Util.configDir(), "Estates");
IConfig startupConfig = m_configSource.Configs["Startup"];
if(startupConfig == null)
return;
estateConfigPath = startupConfig.GetString("regionload_estatesdir", estateConfigPath).Trim();
if(string.IsNullOrWhiteSpace(estateConfigPath))
return;
if (!Directory.Exists(estateConfigPath))
return; // if nothing there, don't bother
string[] iniFiles;
try
{
iniFiles = Directory.GetFiles(estateConfigPath, "*.ini");
}
catch
{
m_log.Error("[ESTATE LOADER FILE SYSTEM]: could not open " + estateConfigPath);
return;
}
// No Estate.ini Found
if (iniFiles == null || iniFiles.Length == 0)
return;
m_log.InfoFormat("[ESTATE LOADER FILE SYSTEM]: Loading estate config files from {0}", estateConfigPath);
List<int> existingEstates;
List<int> existingEstateIDs = m_application.EstateDataService.GetEstatesAll();
foreach (string file in iniFiles)
{
m_log.InfoFormat("[ESTATE LOADER FILE SYSTEM]: Loading config file {0}", file);
IConfigSource source = null;
try
{
source = new IniConfigSource(file);
}
catch
{
m_log.WarnFormat("[ESTATE LOADER FILE SYSTEM]: failed to parse file {0}", file);
}
if(source == null)
continue;
foreach (IConfig config in source.Configs)
{
// Read Estate Config From Source File
string estateName = config.Name;
if (string.IsNullOrWhiteSpace(estateName))
continue;
if (estateName.Length > 64) // need check this and if utf8 is valid
{
m_log.WarnFormat("[ESTATE LOADER FILE SYSTEM]: Estate name {0} is too large, ignoring", estateName);
continue;
}
string ownerString = config.GetString("Owner", string.Empty);
if (string.IsNullOrWhiteSpace(ownerString))
continue;
if (!UUID.TryParse(ownerString, out UUID estateOwner) || estateOwner.IsZero())
continue;
// Check If Estate Exists (Skip If So)
existingEstates = m_application.EstateDataService.GetEstates(estateName);
if (existingEstates.Count > 0)
continue;
//### Should check Estate Owner ID but no Scene object available at this point
// Does Config Specify EstateID (0 Defaults To AutoIncrement)
int EstateID = config.GetInt("EstateID", 0);
if (EstateID > 0)
{
if (EstateID < 100)
{
// EstateID Cannot be less than 100
m_log.WarnFormat("[ESTATE LOADER FILE SYSTEM]: Estate name {0} specified estateID that is less that 100, ignoring", estateName);
continue;
}
else if(existingEstateIDs.Contains(EstateID))
{
// Specified EstateID Exists
m_log.WarnFormat("[ESTATE LOADER FILE SYSTEM]: Estate name {0} specified estateID that is already in use, ignoring", estateName);
continue;
}
}
// Create a new estate with the name provided
EstateSettings estateSettings = m_application.EstateDataService.CreateNewEstate(EstateID);
estateSettings.EstateName = estateName;
estateSettings.EstateOwner = estateOwner;
// Persistence does not seem to effect the need to save a new estate
m_application.EstateDataService.StoreEstateSettings(estateSettings);
m_log.InfoFormat("[ESTATE LOADER FILE SYSTEM]: Loaded config for estate {0}", estateName);
}
}
}
}
}

View File

@@ -1,4 +1,4 @@
/*
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -25,17 +25,13 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using OpenMetaverse;
using Nini.Config;
namespace OpenSim.Framework.Capabilities
namespace OpenSim.ApplicationPlugins.LoadRegions
{
[OSDMap]
public class LLSDItemUpdate
public interface IEstateLoader
{
public UUID item_id;
public LLSDItemUpdate()
{
}
void SetIniConfigSource(IConfigSource configSource);
void LoadEstates();
}
}

View File

@@ -26,8 +26,9 @@
*/
using Nini.Config;
using OpenSim.Framework;
namespace OpenSim.Framework
namespace OpenSim.ApplicationPlugins.LoadRegions
{
public interface IRegionLoader
{

View File

@@ -32,8 +32,6 @@ using System.Threading;
using log4net;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.RegionLoader.Filesystem;
using OpenSim.Framework.RegionLoader.Web;
using OpenSim.Region.CoreModules.Agent.AssetTransaction;
using OpenSim.Region.CoreModules.Avatar.InstantMessage;
using OpenSim.Region.CoreModules.Scripting.DynamicTexture;
@@ -86,11 +84,14 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
{
//m_log.Info("[LOADREGIONS]: Load Regions addin being initialised");
IEstateLoader estateLoader = null;
IRegionLoader regionLoader;
if (m_openSim.ConfigSource.Source.Configs["Startup"].GetString("region_info_source", "filesystem") == "filesystem")
{
m_log.Info("[LOAD REGIONS PLUGIN]: Loading region configurations from filesystem");
regionLoader = new RegionLoaderFileSystem();
estateLoader = new EstateLoaderFileSystem(m_openSim);
}
else
{
@@ -98,6 +99,14 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
regionLoader = new RegionLoaderWebServer();
}
// Load Estates Before Regions!
if(estateLoader != null)
{
estateLoader.SetIniConfigSource(m_openSim.ConfigSource.Source);
estateLoader.LoadEstates();
}
regionLoader.SetIniConfigSource(m_openSim.ConfigSource.Source);
RegionInfo[] regionsToLoad = regionLoader.LoadRegions();
@@ -126,7 +135,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
m_log.Debug("[LOAD REGIONS PLUGIN]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
Thread.CurrentThread.ManagedThreadId.ToString() +
")");
bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]);
m_openSim.CreateRegion(regionsToLoad[i], true, out scene);
@@ -166,7 +175,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
foreach (RegionInfo region in regions)
{
if (region.RegionID == UUID.Zero)
if (region.RegionID.IsZero())
{
m_log.ErrorFormat(
"[LOAD REGIONS PLUGIN]: Region {0} has invalid UUID {1}",

View File

@@ -61,9 +61,8 @@ using Mono.Addins;
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("0.7.6.*")]
[assembly : AssemblyVersion("0.8.2.*")]
[assembly : AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]
[assembly: Addin("OpenSim.ApplicationPlugins.LoadRegions", OpenSim.VersionInfo.VersionNumber)]
[assembly: AddinDependency("OpenSim", OpenSim.VersionInfo.VersionNumber)]

View File

@@ -31,13 +31,14 @@ using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Nini.Config;
using OpenSim.Framework;
namespace OpenSim.Framework.RegionLoader.Filesystem
namespace OpenSim.ApplicationPlugins.LoadRegions
{
public class RegionLoaderFileSystem : IRegionLoader
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IConfigSource m_configSource;
public void SetIniConfigSource(IConfigSource configSource)
@@ -71,11 +72,11 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
// Create an empty Regions.ini if there are no existing config files.
if (!allowRegionless && configFiles.Length == 0 && iniFiles.Length == 0)
{
{
new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "Regions.ini"), false, m_configSource);
iniFiles = Directory.GetFiles(regionConfigPath, "*.ini");
}
m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config files from {0}", regionConfigPath);
List<RegionInfo> regionInfos = new List<RegionInfo>();
@@ -84,16 +85,16 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
foreach (string file in iniFiles)
{
m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config file {0}", file);
IConfigSource source = new IniConfigSource(file);
foreach (IConfig config in source.Configs)
{
{
RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource, config.Name);
regionInfos.Add(regionInfo);
m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded config for region {0}", regionInfo.RegionName);
i++;
}
}
@@ -101,12 +102,12 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
foreach (string file in configFiles)
{
m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config file {0}", file);
RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource);
regionInfos.Add(regionInfo);
m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded config for region {0}", regionInfo.RegionName);
i++;
}

View File

@@ -32,8 +32,9 @@ using System.Reflection;
using System.Xml;
using log4net;
using Nini.Config;
using OpenSim.Framework;
namespace OpenSim.Framework.RegionLoader.Web
namespace OpenSim.ApplicationPlugins.LoadRegions
{
public class RegionLoaderWebServer : IRegionLoader
{
@@ -62,7 +63,7 @@ namespace OpenSim.Framework.RegionLoader.Web
string url = startupConfig.GetString("regionload_webserver_url", String.Empty).Trim();
bool allowRegionless = startupConfig.GetBoolean("allow_regionless", false);
if (url == String.Empty)
if (url.Length == 0)
{
m_log.Error("[WEBLOADER]: Unable to load webserver URL - URL was empty.");
return null;
@@ -71,7 +72,7 @@ namespace OpenSim.Framework.RegionLoader.Web
{
while (tries > 0)
{
RegionInfo[] regionInfos = new RegionInfo[] { };
RegionInfo[] regionInfos = Array.Empty<RegionInfo>();
int regionCount = 0;
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Timeout = 30000; //30 Second Timeout
@@ -79,16 +80,18 @@ namespace OpenSim.Framework.RegionLoader.Web
try
{
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
m_log.Debug("[WEBLOADER]: Downloading region information...");
StreamReader reader = new StreamReader(webResponse.GetResponseStream());
string xmlSource = String.Empty;
string tempStr = reader.ReadLine();
while (tempStr != null)
m_log.Debug("[WEBLOADER]: Downloading region information...");
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
using (StreamReader reader = new StreamReader(webResponse.GetResponseStream()))
{
xmlSource = xmlSource + tempStr;
tempStr = reader.ReadLine();
string tempStr;
while ((tempStr = reader.ReadLine()) != null)
{
xmlSource += tempStr;
}
}
m_log.Debug("[WEBLOADER]: Done downloading region information from server. Total Bytes: " +
xmlSource.Length);
XmlDocument xmlDoc = new XmlDocument();
@@ -115,13 +118,13 @@ namespace OpenSim.Framework.RegionLoader.Web
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
if (!allowRegionless)
throw ex;
throw;
}
else
throw ex;
throw;
}
if (regionCount > 0 | allowRegionless)
if (regionCount > 0 || allowRegionless)
return regionInfos;
m_log.Debug("[WEBLOADER]: Request yielded no regions.");

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ApplicationPlugins.RegionModulesController")]
@@ -15,8 +15,8 @@ using Mono.Addins;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -26,11 +26,11 @@ using Mono.Addins;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.2.*")]
[assembly: AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]
[assembly: Addin("OpenSim.ApplicationPlugins.RegionModulesController", OpenSim.VersionInfo.VersionNumber)]
[assembly: AddinDependency("OpenSim", OpenSim.VersionInfo.VersionNumber)]

View File

@@ -43,9 +43,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
IApplicationPlugin
{
// Logger
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// Controls whether we load modules from Mono.Addins.
@@ -60,14 +58,11 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
private string m_name;
// Internal lists to collect information about modules present
private List<TypeExtensionNode> m_nonSharedModules =
new List<TypeExtensionNode>();
private List<TypeExtensionNode> m_sharedModules =
new List<TypeExtensionNode>();
private List<TypeExtensionNode> m_nonSharedModules = new List<TypeExtensionNode>();
private List<TypeExtensionNode> m_sharedModules = new List<TypeExtensionNode>();
// List of shared module instances, for adding to Scenes
private List<ISharedRegionModule> m_sharedInstances =
new List<ISharedRegionModule>();
private List<ISharedRegionModule> m_sharedInstances = new List<ISharedRegionModule>();
public RegionModulesControllerPlugin()
{
@@ -75,7 +70,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
}
#region IApplicationPlugin implementation
public void Initialise (OpenSimBase openSim)
{
m_openSim = openSim;
@@ -96,8 +91,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
m_name = id.Substring(pos + 1);
// The [Modules] section in the ini file
IConfig modulesConfig =
m_openSim.ConfigSource.Source.Configs["Modules"];
IConfig modulesConfig = m_openSim.ConfigSource.Source.Configs["Modules"];
if (modulesConfig == null)
modulesConfig = m_openSim.ConfigSource.Source.AddConfig("Modules");
@@ -111,7 +105,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
{
m_log.InfoFormat(
"[REGIONMODULES]: From plugin {0}, (version {1}), loaded {2} modules, {3} shared, {4} non-shared {5} unknown",
loadedModuleData.Key.Id,
loadedModuleData.Key.Id,
loadedModuleData.Key.Version,
loadedModuleData.Value[0] + loadedModuleData.Value[1] + loadedModuleData.Value[2],
loadedModuleData.Value[0], loadedModuleData.Value[1], loadedModuleData.Value[2]);
@@ -126,21 +120,19 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
//
foreach (TypeExtensionNode node in m_sharedModules)
{
Object[] ctorArgs = new Object[] { (uint)0 };
object[] ctorArgs = new object[] { (uint)0 };
// Read the config again
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
string moduleString = modulesConfig.GetString("Setup_" + node.Id, string.Empty);
// Test to see if we want this module
if (moduleString == "disabled")
continue;
// Get the port number, if there is one
if (moduleString != String.Empty)
if (moduleString != string.Empty)
{
// Get the port number from the string
string[] moduleParts = moduleString.Split(new char[] { '/' },
2);
string[] moduleParts = moduleString.Split(new char[] { '/' }, 2);
if (moduleParts.Length > 1)
ctorArgs[0] = Convert.ToUInt32(moduleParts[0]);
}
@@ -151,13 +143,11 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
try
{
module = (ISharedRegionModule)Activator.CreateInstance(
node.Type, ctorArgs);
module = (ISharedRegionModule)Activator.CreateInstance(node.Type, ctorArgs);
}
catch
{
module = (ISharedRegionModule)Activator.CreateInstance(
node.Type);
module = (ISharedRegionModule)Activator.CreateInstance(node.Type);
}
// OK, we're up and running
@@ -181,8 +171,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
#region IPlugin implementation
private void AddNode(
TypeExtensionNode node, IConfig modulesConfig, Dictionary<RuntimeAddin, IList<int>> loadedModules)
private void AddNode(TypeExtensionNode node, IConfig modulesConfig, Dictionary<RuntimeAddin, IList<int>> loadedModules)
{
IList<int> loadedModuleData;
@@ -261,7 +250,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
}
#region Region Module interfacesController implementation
/// <summary>
/// Check that the given module is no disabled in the [Modules] section of the config files.
/// </summary>
@@ -271,11 +260,10 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
protected bool CheckModuleEnabled(TypeExtensionNode node, IConfig modulesConfig)
{
// Get the config string
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
string moduleString = modulesConfig.GetString("Setup_" + node.Id, string.Empty);
// We have a selector
if (moduleString != String.Empty)
if (!string.IsNullOrEmpty(moduleString))
{
// Allow disabling modules even if they don't have
// support for it
@@ -293,10 +281,10 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
if (className != String.Empty &&
node.Type.ToString() != className)
return false;
}
}
return true;
}
}
// The root of all evil.
// This is where we handle adding the modules to scenes when they
@@ -305,10 +293,8 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
//
public void AddRegionToModules (Scene scene)
{
Dictionary<Type, ISharedRegionModule> deferredSharedModules =
new Dictionary<Type, ISharedRegionModule>();
Dictionary<Type, INonSharedRegionModule> deferredNonSharedModules =
new Dictionary<Type, INonSharedRegionModule>();
Dictionary<Type, ISharedRegionModule> deferredSharedModules = new Dictionary<Type, ISharedRegionModule>();
Dictionary<Type, INonSharedRegionModule> deferredNonSharedModules = new Dictionary<Type, INonSharedRegionModule>();
// We need this to see if a module has already been loaded and
// has defined a replaceable interface. It's a generic call,
@@ -317,8 +303,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
MethodInfo mi = s.GetMethod("RequestModuleInterface");
// This will hold the shared modules we actually load
List<ISharedRegionModule> sharedlist =
new List<ISharedRegionModule>();
List<ISharedRegionModule> sharedlist = new List<ISharedRegionModule>();
// Iterate over the shared modules that have been loaded
// Add them to the new Scene
@@ -355,29 +340,26 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
sharedlist.Add(module);
}
IConfig modulesConfig =
m_openSim.ConfigSource.Source.Configs["Modules"];
IConfig modulesConfig = m_openSim.ConfigSource.Source.Configs["Modules"];
// Scan for, and load, nonshared modules
List<INonSharedRegionModule> list = new List<INonSharedRegionModule>();
foreach (TypeExtensionNode node in m_nonSharedModules)
{
Object[] ctorArgs = new Object[] {0};
object[] ctorArgs = new object[] {0};
// Read the config
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
string moduleString = modulesConfig.GetString("Setup_" + node.Id, string.Empty);
// We may not want to load this at all
if (moduleString == "disabled")
continue;
// Get the port number, if there is one
if (moduleString != String.Empty)
if (!string.IsNullOrEmpty(moduleString))
{
// Get the port number from the string
string[] moduleParts = moduleString.Split(new char[] {'/'},
2);
string[] moduleParts = moduleString.Split(new char[] {'/'}, 2);
if (moduleParts.Length > 1)
ctorArgs[0] = Convert.ToUInt32(moduleParts[0]);
}
@@ -456,8 +438,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
}
// Same thing for nonshared modules, load them unless overridden
List<INonSharedRegionModule> deferredlist =
new List<INonSharedRegionModule>();
List<INonSharedRegionModule> deferredlist = new List<INonSharedRegionModule>();
foreach (INonSharedRegionModule module in deferredNonSharedModules.Values)
{
@@ -509,6 +490,8 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
{
module.RegionLoaded(scene);
}
scene.AllModulesLoaded();
}
public void RemoveRegionFromModules (Scene scene)

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Addins;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ApplicationPlugins.RemoteController")]
@@ -15,8 +15,8 @@ using Mono.Addins;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -26,11 +26,11 @@ using Mono.Addins;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.2.*")]
[assembly: AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]
[assembly: Addin("OpenSim.ApplicationPlugins.RemoteController", OpenSim.VersionInfo.VersionNumber)]
[assembly: AddinDependency("OpenSim", OpenSim.VersionInfo.VersionNumber)]

View File

@@ -25,24 +25,13 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Xml;
using System.Net;
using System.Reflection;
using System.Timers;
using System.Threading;
using log4net;
using Mono.Addins;
using Nini.Config;
using Nwc.XmlRpc;
using OpenMetaverse;
using Mono.Addins;
using OpenSim;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Console;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
@@ -50,9 +39,20 @@ using OpenSim.Region.CoreModules.World.Terrain;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Net;
using System.Reflection;
using System.Threading;
using System.Timers;
using System.Xml;
using static System.Net.Mime.MediaTypeNames;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using PermissionMask = OpenSim.Framework.PermissionMask;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using RegionInfo = OpenSim.Framework.RegionInfo;
namespace OpenSim.ApplicationPlugins.RemoteController
@@ -116,7 +116,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_accessIP = new HashSet<string>();
if (accessIP != String.Empty)
{
string[] ips = accessIP.Split(new char[] { ',' });
string[] ips = accessIP.Split(Util.SplitCommaArray);
foreach (string ip in ips)
{
string current = ip.Trim();
@@ -132,18 +132,21 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_httpServer = MainServer.GetHttpServer((uint)port,ipaddr);
Dictionary<string, XmlRpcMethod> availableMethods = new Dictionary<string, XmlRpcMethod>();
availableMethods["admin_alert_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAlertUserMethod);
availableMethods["admin_broadcast"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAlertMethod);
availableMethods["admin_create_region"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcCreateRegionMethod);
availableMethods["admin_delete_region"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcDeleteRegionMethod);
availableMethods["admin_close_region"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcCloseRegionMethod);
availableMethods["admin_modify_region"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcModifyRegionMethod);
availableMethods["admin_region_query"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRegionQueryMethod);
availableMethods["admin_shutdown"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcShutdownMethod);
availableMethods["admin_broadcast"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAlertMethod);
availableMethods["admin_dialog"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcDialogMethod);
availableMethods["admin_restart"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRestartMethod);
availableMethods["admin_load_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadHeightmapMethod);
availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod);
availableMethods["admin_reset_land"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcResetLand);
// Agent management
availableMethods["admin_get_agents"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetAgentsMethod);
availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod);
@@ -304,7 +307,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (requestData.ContainsKey("alerts"))
{
string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','});
string[] alertTimes = requestData["alerts"].ToString().Split(Util.SplitCommaArray);
if (alertTimes.Length == 1 && Convert.ToInt32(alertTimes[0]) == -1)
{
m_log.Info("[RADMIN]: Request to cancel restart.");
@@ -358,6 +361,42 @@ namespace OpenSim.ApplicationPlugins.RemoteController
notice = false;
}
if (startupConfig.GetBoolean("SkipDelayOnEmptyRegion", false))
{
m_log.Info("[RADMIN]: Counting affected avatars");
int agents = 0;
if (restartAll)
{
foreach (Scene s in m_application.SceneManager.Scenes)
{
foreach (ScenePresence sp in s.GetScenePresences())
{
if (!sp.IsChildAgent && !sp.IsNPC)
agents++;
}
}
}
else
{
foreach (ScenePresence sp in rebootedScene.GetScenePresences())
{
if (!sp.IsChildAgent && !sp.IsNPC)
agents++;
}
}
m_log.InfoFormat("[RADMIN]: Avatars in region: {0}", agents);
if (agents == 0)
{
m_log.Info("[RADMIN]: No avatars detected, shutting down without delay");
times.Clear();
times.Add(0);
}
}
List<Scene> restartList;
if (restartAll)
@@ -375,15 +414,48 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
catch (Exception e)
{
// m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace);
m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace);
responseData["rebooting"] = false;
throw e;
throw;
}
m_log.Info("[RADMIN]: Restart Region request complete");
}
private void XmlRpcAlertUserMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
//m_log.Info("[RADMIN]: AlertUser request started");
Hashtable responseData = (Hashtable)response.Value;
Hashtable requestData = (Hashtable)request.Params[0];
string agentIdStr = (string)requestData["agent_id"];
string message = (string)requestData["message"];
responseData["accepted"] = true;
if(!UUID.TryParse(agentIdStr, out UUID agentId))
{
responseData["success"] = false;
responseData["error"] = "Invalid agent_id";
m_log.Info($"[RADMIN]: alert to agent got invalid uuid: {agentIdStr}: {message}");
return;
}
if(m_application.SceneManager.TryGetRootScenePresence(agentId, out ScenePresence sp ))
{
sp.ControllingClient.SendAlertMessage(message);
m_log.Info($"[RADMIN]: Sent alert to agent {agentIdStr}: {message}");
responseData["success"] = true;
return;
}
responseData["success"] = false;
responseData["error"] = "User not found or not online";
m_log.Info($"[RADMIN]: Fail to send alert to not found agent {agentIdStr}: {message}");
}
private void XmlRpcAlertMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
m_log.Info("[RADMIN]: Alert request started");
@@ -418,7 +490,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
string message = (string)requestData["message"];
string fromuuid = (string)requestData["from"];
m_log.InfoFormat("[RADMIN]: Broadcasting: {0}", message);
m_log.Info($"[RADMIN]: Broadcasting: {message}");
responseData["accepted"] = true;
responseData["success"] = true;
@@ -427,8 +499,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
delegate(Scene scene)
{
IDialogModule dialogModule = scene.RequestModuleInterface<IDialogModule>();
if (dialogModule != null)
dialogModule.SendNotificationToUsersInRegion(UUID.Zero, fromuuid, message);
dialogModule?.SendNotificationToUsersInRegion(UUID.Zero, fromuuid, message);
});
m_log.Info("[RADMIN]: Dialog request complete");
@@ -574,7 +645,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
responseData["success"] = true;
m_log.Info("[RADMIN]: Shutdown Administrator Request complete");
}
@@ -583,6 +654,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_application.Shutdown();
}
/// <summary>
/// Create a new region.
/// <summary>
@@ -746,9 +818,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
// No INI setting recorded.
}
string regionIniPath;
if (requestData.Contains("region_file"))
{
// Make sure that the file to be created is in a subdirectory of the region storage directory.
@@ -772,7 +844,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
region.RegionName.Replace(" ", "_").Replace(":", "_").
Replace("/", "_")));
}
m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
region.RegionID, regionIniPath);
region.SaveRegionToFile("dynamic region", regionIniPath);
@@ -781,9 +853,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
region.Persistent = false;
}
// Set the estate
// Check for an existing estate
List<int> estateIDs = m_application.EstateDataService.GetEstates((string) requestData["estate_name"]);
if (estateIDs.Count < 1)
@@ -794,12 +866,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// ok, client wants us to use an explicit UUID
// regardless of what the avatar name provided
userID = new UUID((string) requestData["estate_owner_uuid"]);
// Check that the specified user exists
Scene currentOrFirst = m_application.SceneManager.CurrentOrFirstScene;
IUserAccountService accountService = currentOrFirst.UserAccountService;
UserAccount user = accountService.GetUserAccount(currentOrFirst.RegionInfo.ScopeID, userID);
if (user == null)
throw new Exception("Specified user was not found.");
}
@@ -808,23 +880,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// We need to look up the UUID for the avatar with the provided name.
string ownerFirst = (string) requestData["estate_owner_first"];
string ownerLast = (string) requestData["estate_owner_last"];
Scene currentOrFirst = m_application.SceneManager.CurrentOrFirstScene;
IUserAccountService accountService = currentOrFirst.UserAccountService;
UserAccount user = accountService.GetUserAccount(currentOrFirst.RegionInfo.ScopeID,
ownerFirst, ownerLast);
// Check that the specified user exists
if (user == null)
throw new Exception("Specified user was not found.");
userID = user.PrincipalID;
}
else
{
throw new Exception("Estate owner details not provided.");
}
// Create a new estate with the name provided
region.EstateSettings = m_application.EstateDataService.CreateNewEstate();
@@ -841,7 +913,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
int estateID = estateIDs[0];
region.EstateSettings = m_application.EstateDataService.LoadEstateSettings(region.RegionID, false);
if (region.EstateSettings.EstateID != estateID)
{
// The region is already part of an estate, but not the one we want.
@@ -851,7 +922,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
throw new Exception("Failed to join estate.");
}
}
// Create the region and perform any initial initialization
IScene newScene;
@@ -1158,7 +1229,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// Set home position
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation));
if (null == home)
{
@@ -1179,11 +1250,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstName, lastName, account.PrincipalID);
}
catch (Exception e)
catch
{
responseData["avatar_uuid"] = UUID.Zero.ToString();
throw e;
throw;
}
m_log.Info("[RADMIN]: CreateUser: request complete");
@@ -1388,7 +1458,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if ((null != regionXLocation) && (null != regionYLocation))
{
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)Util.RegionToWorldLoc((uint)regionXLocation), (int)Util.RegionToWorldLoc((uint)regionYLocation));
if (null == home) {
m_log.WarnFormat("[RADMIN]: Unable to set home region for updated user account {0} {1}", firstName, lastName);
@@ -1409,13 +1479,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
firstName, lastName,
account.PrincipalID);
}
catch (Exception e)
catch
{
responseData["avatar_uuid"] = UUID.Zero.ToString();
throw e;
throw;
}
m_log.Info("[RADMIN]: UpdateUserAccount: request complete");
}
}
@@ -1546,7 +1615,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
responseData["success"] = false;
responseData["error"] = e.Message;
throw e;
throw;
}
m_log.Info("[RADMIN]: AuthenticateUser: request complete");
@@ -1607,7 +1676,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
GetSceneFromRegionParams(requestData, responseData, out scene);
string filename = (string) requestData["filename"];
bool mergeOar = false;
bool skipAssets = false;
@@ -1631,11 +1700,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["loaded"] = true;
}
catch (Exception e)
catch
{
responseData["loaded"] = false;
throw e;
throw;
}
m_log.Info("[RADMIN]: Load OAR Administrator Request complete");
@@ -1707,13 +1775,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController
//}
if (requestData.Contains("home"))
{
options["home"] = (string)requestData["home"];
}
if ((string)requestData["noassets"] == "true")
if (requestData.Contains("noassets"))
{
options["noassets"] = (string)requestData["noassets"] ;
string tmp = (string)requestData["noassets"];
if (!string.IsNullOrWhiteSpace(tmp) &&
(tmp.Equals("true", StringComparison.InvariantCultureIgnoreCase) || tmp.Equals("1")))
options["noassets"] = true;
}
if (requestData.Contains("perm"))
@@ -1721,9 +1790,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
options["checkPermissions"] = (string)requestData["perm"];
}
if ((string)requestData["all"] == "true")
if (requestData.Contains("all"))
{
options["all"] = (string)requestData["all"];
string tmp = (string)requestData["all"];
if (!string.IsNullOrWhiteSpace(tmp) &&
(tmp.Equals("true", StringComparison.InvariantCultureIgnoreCase) || tmp.Equals("1")))
options["all"] = true;
}
IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>();
@@ -1734,7 +1806,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted;
m_log.InfoFormat(
"[RADMIN]: Submitting save OAR request for {0} to file {1}, request ID {2}",
"[RADMIN]: Submitting save OAR request for {0} to file {1}, request ID {2}",
scene.Name, filename, requestId);
archiver.ArchiveRegion(filename, requestId, options);
@@ -1751,11 +1823,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["saved"] = true;
}
catch (Exception e)
catch
{
responseData["saved"] = false;
throw e;
throw;
}
m_log.Info("[RADMIN]: Save OAR Request complete");
@@ -1815,12 +1886,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["loaded"] = true;
}
catch (Exception e)
catch
{
responseData["loaded"] = false;
responseData["switched"] = false;
throw e;
throw;
}
m_log.Info("[RADMIN]: Load XML Administrator Request complete");
@@ -1868,12 +1938,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["saved"] = true;
}
catch (Exception e)
catch
{
responseData["saved"] = false;
responseData["switched"] = false;
throw e;
throw;
}
m_log.Info("[RADMIN]: Save XML Administrator Request complete");
@@ -1897,7 +1966,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
GetSceneFromRegionParams(requestData, responseData, out scene);
health = scene.GetHealth(out flags, out text);
}
catch (Exception e)
catch
{
responseData["error"] = null;
}
@@ -2079,10 +2148,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.Info("[RADMIN]: Received Estate Reload Request");
Hashtable responseData = (Hashtable)response.Value;
// Hashtable requestData = (Hashtable)request.Params[0];
//Hashtable requestData = (Hashtable)request.Params[0];
m_application.SceneManager.ForEachScene(s =>
s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false)
m_application.SceneManager.ForEachScene(s =>
s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false)
);
responseData["success"] = true;
@@ -2210,6 +2279,51 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = true;
}
private void XmlRpcResetLand(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable responseData = (Hashtable)response.Value;
string musicURL = string.Empty;
UUID groupID = UUID.Zero;
uint flags = 0;
bool set_group = false, set_music = false, set_flags = false;
if (requestData.Contains("group") && requestData["group"] != null)
set_group = UUID.TryParse(requestData["group"].ToString(), out groupID);
if (requestData.Contains("music") && requestData["music"] != null)
{
musicURL = requestData["music"].ToString();
set_music = true;
}
if (requestData.Contains("flags") && requestData["flags"] != null)
set_flags = UInt32.TryParse(requestData["flags"].ToString(), out flags);
m_log.InfoFormat("[RADMIN]: Received Reset Land Request group={0} musicURL={1} flags={2}",
(set_group ? groupID.ToString() : "unchanged"),
(set_music ? musicURL : "unchanged"),
(set_flags ? flags.ToString() : "unchanged"));
m_application.SceneManager.ForEachScene(delegate (Scene s)
{
List<ILandObject> parcels = s.LandChannel.AllParcels();
foreach (ILandObject p in parcels)
{
if (set_music)
p.LandData.MusicURL = musicURL;
if (set_group)
p.LandData.GroupID = groupID;
if (set_flags)
p.LandData.Flags = flags;
s.LandChannel.UpdateLandObject(p.LandData.LocalID, p.LandData);
}
}
);
responseData["success"] = true;
m_log.Info("[RADMIN]: Reset Land Request complete");
}
private void XmlRpcRefreshSearch(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
{
m_log.Info("[RADMIN]: Received Refresh Search Request");
@@ -2769,7 +2883,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (destinationFolder.Type != (short)FolderType.Clothing)
{
destinationFolder = new InventoryFolderBase();
destinationFolder.ID = UUID.Random();
destinationFolder.Name = "Clothing";
destinationFolder.Owner = destination;
@@ -2787,11 +2901,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
for (int i = 0; i<wearables.Length; i++)
{
wearable = wearables[i];
if (wearable[0].ItemID != UUID.Zero)
if (!wearable[0].ItemID.IsZero())
{
// Get inventory item and copy it
InventoryItemBase item = new InventoryItemBase(wearable[0].ItemID, source);
item = inventoryService.GetItem(item);
InventoryItemBase item = inventoryService.GetItem(source, wearable[0].ItemID);
if (item != null)
{
@@ -2841,11 +2954,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
int attachpoint = attachment.AttachPoint;
UUID itemID = attachment.ItemID;
if (itemID != UUID.Zero)
if (!itemID.IsZero())
{
// Get inventory item and copy it
InventoryItemBase item = new InventoryItemBase(itemID, source);
item = inventoryService.GetItem(item);
InventoryItemBase item = inventoryService.GetItem(source, itemID);
if (item != null)
{
@@ -2907,11 +3019,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
sourceFolder = new InventoryFolderBase();
sourceFolder.ID = UUID.Random();
if (assetType == FolderType.Clothing)
if (assetType == FolderType.Clothing)
{
sourceFolder.Name = "Clothing";
}
else
}
else
{
sourceFolder.Name = "Body Parts";
}
@@ -3007,7 +3119,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
/// </summary>
private void ApplyNextOwnerPermissions(InventoryItemBase item)
{
if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0)
if (item.InvType == (int)InventoryType.Object)
{
uint perms = item.CurrentPermissions;
PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms);
@@ -3124,7 +3236,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// Set home position
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
GridRegion home = scene.GridService.GetRegionByPosition(scopeID,
(int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation));
if (null == home) {
m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", names[0], names[1]);

View File

@@ -28,15 +28,14 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Collections.Concurrent;
using System.Reflection;
using System.Threading;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
// using OpenSim.Region.Framework.Interfaces;
@@ -49,30 +48,28 @@ namespace OpenSim.Framework.Capabilities
/// </summary>
public delegate IClientAPI GetClientDelegate(UUID agentID);
public class Caps
public class Caps : IDisposable
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_httpListenerHostName;
private uint m_httpListenPort;
private readonly string m_httpListenerHostName;
private readonly uint m_httpListenPort;
/// <summary>
/// This is the uuid portion of every CAPS path. It is used to make capability urls private to the requester.
/// </summary>
private string m_capsObjectPath;
private readonly string m_capsObjectPath;
public string CapsObjectPath { get { return m_capsObjectPath; } }
private CapsHandlers m_capsHandlers;
private readonly CapsHandlers m_capsHandlers;
private readonly ConcurrentDictionary<string, PollServiceEventArgs> m_pollServiceHandlers = new ();
private readonly Dictionary<string, string> m_externalCapsHandlers = new ();
private Dictionary<string, PollServiceEventArgs> m_pollServiceHandlers
= new Dictionary<string, PollServiceEventArgs>();
private Dictionary<string, string> m_externalCapsHandlers = new Dictionary<string, string>();
private IHttpServer m_httpListener;
private UUID m_agentID;
private string m_regionName;
private ManualResetEvent m_capsActive = new ManualResetEvent(false);
private readonly IHttpServer m_httpListener;
private readonly UUID m_agentID;
private readonly string m_regionName;
private ManualResetEvent m_capsActive = new(false);
private readonly string m_baseCapsURL;
public UUID AgentID
{
@@ -119,6 +116,22 @@ namespace OpenSim.Framework.Capabilities
get { return m_externalCapsHandlers; }
}
[Flags]
public enum CapsFlags: uint
{
None = 0,
SentSeeds = 1,
ObjectAnim = 0x100,
WLEnv = 0x200,
AdvEnv = 0x400,
PBR = 0x800,
ViewerBenefits = 0x1000,
TPBR = 0x2000
}
public CapsFlags Flags { get; set;}
public Caps(IHttpServer httpServer, string httpListen, uint httpPort, string capsPath,
UUID agent, string regionName)
{
@@ -128,7 +141,7 @@ namespace OpenSim.Framework.Capabilities
m_httpListenPort = httpPort;
if (httpServer != null && httpServer.UseSSL)
if (httpServer is not null && httpServer.UseSSL)
{
m_httpListenPort = httpServer.SSLPort;
httpListen = httpServer.SSLCommonName;
@@ -136,9 +149,41 @@ namespace OpenSim.Framework.Capabilities
}
m_agentID = agent;
m_capsHandlers = new CapsHandlers(httpServer, httpListen, httpPort, (httpServer == null) ? false : httpServer.UseSSL);
m_capsHandlers = new CapsHandlers(httpServer, httpListen, httpPort);
m_regionName = regionName;
Flags = CapsFlags.None;
m_capsActive.Reset();
if (MainServer.Instance.UseSSL)
m_baseCapsURL = $"https://{MainServer.Instance.SSLCommonName}:{MainServer.Instance.SSLPort}";
else
{
if (MainServer.Instance is null)
m_baseCapsURL = $"http://{m_httpListenerHostName}:0";
else
m_baseCapsURL = $"http://{m_httpListenerHostName}:{MainServer.Instance.Port}";
}
}
~Caps()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public void Dispose(bool disposing)
{
Flags = CapsFlags.None;
if (m_capsActive != null)
{
DeregisterHandlers();
m_capsActive.Dispose();
m_capsActive = null;
}
}
/// <summary>
@@ -152,29 +197,41 @@ namespace OpenSim.Framework.Capabilities
m_capsHandlers[capName] = handler;
}
public void RegisterSimpleHandler(string capName, ISimpleStreamHandler handler, bool addToListener = true)
{
//m_log.DebugFormat("[CAPS]: Registering handler for \"{0}\": path {1}", capName, handler.Path);
m_capsHandlers.AddSimpleHandler(capName, handler, addToListener);
}
public void RegisterPollHandler(string capName, PollServiceEventArgs pollServiceHandler)
{
// m_log.DebugFormat(
// "[CAPS]: Registering handler with name {0}, url {1} for {2}",
// capName, pollServiceHandler.Url, m_agentID, m_regionName);
//m_log.DebugFormat(
// "[CAPS]: Registering handler with name {0}, url {1} for {2}",
// capName, pollServiceHandler.Url, m_agentID, m_regionName);
m_pollServiceHandlers.Add(capName, pollServiceHandler);
if(!m_pollServiceHandlers.TryAdd(capName, pollServiceHandler))
{
m_log.ErrorFormat(
"[CAPS]: Handler with name {0} already registered (ulr {1}, agent {2}, region {3}",
capName, pollServiceHandler.Url, m_agentID, m_regionName);
return;
}
m_httpListener.AddPollServiceHTTPHandler(pollServiceHandler.Url, pollServiceHandler);
m_httpListener.AddPollServiceHTTPHandler(pollServiceHandler);
// uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
// string protocol = "http";
// string hostName = m_httpListenerHostName;
//
// if (MainServer.Instance.UseSSL)
// {
// hostName = MainServer.Instance.SSLCommonName;
// port = MainServer.Instance.SSLPort;
// protocol = "https";
// }
//uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
//string protocol = "http";
//string hostName = m_httpListenerHostName;
// RegisterHandler(
// capName, String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, pollServiceHandler.Url));
//if (MainServer.Instance.UseSSL)
//{
// hostName = MainServer.Instance.SSLCommonName;
// port = MainServer.Instance.SSLPort;
// protocol = "https";
//}
//RegisterHandler(
// capName, String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, pollServiceHandler.Url));
}
/// <summary>
@@ -200,10 +257,10 @@ namespace OpenSim.Framework.Capabilities
foreach (PollServiceEventArgs handler in m_pollServiceHandlers.Values)
{
m_httpListener.RemovePollServiceHTTPHandler("", handler.Url);
m_httpListener.RemovePollServiceHTTPHandler(handler.Url);
}
m_pollServiceHandlers.Clear();
}
public bool TryGetPollHandler(string name, out PollServiceEventArgs pollHandler)
{
return m_pollServiceHandlers.TryGetValue(name, out pollHandler);
@@ -225,25 +282,22 @@ namespace OpenSim.Framework.Capabilities
lock (m_pollServiceHandlers)
{
foreach (KeyValuePair <string, PollServiceEventArgs> kvp in m_pollServiceHandlers)
foreach (KeyValuePair<string, PollServiceEventArgs> kvp in m_pollServiceHandlers)
{
if (!requestedCaps.Contains(kvp.Key))
continue;
string hostName = m_httpListenerHostName;
uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
string protocol = "http";
if (MainServer.Instance.UseSSL)
{
hostName = MainServer.Instance.SSLCommonName;
port = MainServer.Instance.SSLPort;
protocol = "https";
}
//
// caps.RegisterHandler("FetchInventoryDescendents2", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl));
string hostName = m_httpListenerHostName;
uint port = (MainServer.Instance is null) ? 0 : MainServer.Instance.Port;
string protocol = "http";
caps[kvp.Key] = string.Format("{0}://{1}:{2}{3}", protocol, hostName, port, kvp.Value.Url);
if (MainServer.Instance.UseSSL)
{
hostName = MainServer.Instance.SSLCommonName;
port = MainServer.Instance.SSLPort;
protocol = "https";
}
caps[kvp.Key] = string.Format("{0}://{1}:{2}{3}", protocol, hostName, port, kvp.Value.Url);
}
}
@@ -256,9 +310,32 @@ namespace OpenSim.Framework.Capabilities
caps[kvp.Key] = kvp.Value;
}
return caps;
}
public void GetCapsDetailsLLSDxml(HashSet<string> requestedCaps, osUTF8 sb)
{
CapsHandlers.GetCapsDetailsLLSDxml(requestedCaps, sb);
lock (m_pollServiceHandlers)
{
foreach (KeyValuePair<string, PollServiceEventArgs> kvp in m_pollServiceHandlers)
{
if (requestedCaps.Contains(kvp.Key))
LLSDxmlEncode2.AddElem(kvp.Key, m_baseCapsURL + kvp.Value.Url, sb);
}
}
// Add the external too
foreach (KeyValuePair<string, string> kvp in ExternalCapsHandlers)
{
if (requestedCaps.Contains(kvp.Key))
LLSDxmlEncode2.AddElem(kvp.Key, kvp.Value, sb);
}
}
public void Activate()
{
m_capsActive.Set();

View File

@@ -27,8 +27,11 @@
using System.Collections;
using System.Collections.Generic;
using System.Collections.Concurrent;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
namespace OpenSim.Framework.Capabilities
{
@@ -39,11 +42,13 @@ namespace OpenSim.Framework.Capabilities
/// </summary>
public class CapsHandlers
{
private Dictionary<string, IRequestHandler> m_capsHandlers = new Dictionary<string, IRequestHandler>();
private readonly Dictionary<string, IRequestHandler> m_capsHandlers = new Dictionary<string, IRequestHandler>();
private readonly ConcurrentDictionary<string, ISimpleStreamHandler> m_capsSimpleHandlers = new ConcurrentDictionary<string, ISimpleStreamHandler>();
private IHttpServer m_httpListener;
private string m_httpListenerHostName;
private uint m_httpListenerPort;
private bool m_useSSL = false;
public readonly string BaseURL;
/// <summary></summary>
/// CapsHandlers is a cap handler container but also takes
@@ -53,31 +58,15 @@ namespace OpenSim.Framework.Capabilities
/// <param name="httpListener">base HTTP server</param>
/// <param name="httpListenerHostname">host name of the HTTP server</param>
/// <param name="httpListenerPort">HTTP port</param>
public CapsHandlers(BaseHttpServer httpListener, string httpListenerHostname, uint httpListenerPort)
: this(httpListener,httpListenerHostname,httpListenerPort, false)
{
}
/// <summary></summary>
/// CapsHandlers is a cap handler container but also takes
/// care of adding and removing cap handlers to and from the
/// supplied BaseHttpServer.
/// </summary>
/// <param name="httpListener">base HTTP server</param>
/// <param name="httpListenerHostname">host name of the HTTP
/// server</param>
/// <param name="httpListenerPort">HTTP port</param>
public CapsHandlers(IHttpServer httpListener, string httpListenerHostname, uint httpListenerPort, bool https)
public CapsHandlers(IHttpServer httpListener, string httpListenerHostname, uint httpListenerPort)
{
m_httpListener = httpListener;
m_httpListenerHostName = httpListenerHostname;
m_httpListenerPort = httpListenerPort;
m_useSSL = https;
if (httpListener != null && m_useSSL)
{
m_httpListenerHostName = httpListener.SSLCommonName;
m_httpListenerPort = httpListener.SSLPort;
}
if (httpListener != null && httpListener.UseSSL)
BaseURL = $"https://{m_httpListenerHostName}:{m_httpListenerPort}";
else
BaseURL = $"http://{m_httpListenerHostName}:{m_httpListenerPort}";
}
/// <summary>
@@ -89,17 +78,35 @@ namespace OpenSim.Framework.Capabilities
{
lock (m_capsHandlers)
{
m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
m_httpListener.RemoveStreamHandler("PUT", m_capsHandlers[capsName].Path);
m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
m_capsHandlers.Remove(capsName);
if(m_capsHandlers.ContainsKey(capsName))
{
m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
m_httpListener.RemoveStreamHandler("PUT", m_capsHandlers[capsName].Path);
m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
m_httpListener.RemoveStreamHandler("DELETE", m_capsHandlers[capsName].Path);
m_capsHandlers.Remove(capsName);
}
}
if(m_capsSimpleHandlers.TryRemove(capsName, out ISimpleStreamHandler hdr))
{
m_httpListener.RemoveSimpleStreamHandler(hdr.Path);
}
}
public void AddSimpleHandler(string capName, ISimpleStreamHandler handler, bool addToListener = true)
{
if(ContainsCap(capName))
Remove(capName);
if(m_capsSimpleHandlers.TryAdd(capName, handler) && addToListener)
m_httpListener.AddSimpleStreamHandler(handler);
}
public bool ContainsCap(string cap)
{
lock (m_capsHandlers)
return m_capsHandlers.ContainsKey(cap);
if (m_capsHandlers.ContainsKey(cap))
return true;
return m_capsSimpleHandlers.ContainsKey(cap);
}
/// <summary>
@@ -126,11 +133,14 @@ namespace OpenSim.Framework.Capabilities
if (m_capsHandlers.ContainsKey(idx))
{
m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[idx].Path);
m_httpListener.RemoveStreamHandler("PUT", m_capsHandlers[idx].Path);
m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[idx].Path);
m_httpListener.RemoveStreamHandler("DELETE", m_capsHandlers[idx].Path);
m_capsHandlers.Remove(idx);
}
if (null == value) return;
m_capsHandlers[idx] = value;
m_httpListener.AddStreamHandler(value);
}
@@ -147,8 +157,9 @@ namespace OpenSim.Framework.Capabilities
{
lock (m_capsHandlers)
{
string[] __keys = new string[m_capsHandlers.Keys.Count];
string[] __keys = new string[m_capsHandlers.Keys.Count + m_capsSimpleHandlers.Keys.Count];
m_capsHandlers.Keys.CopyTo(__keys, 0);
m_capsSimpleHandlers.Keys.CopyTo(__keys, m_capsHandlers.Keys.Count);
return __keys;
}
}
@@ -162,30 +173,72 @@ namespace OpenSim.Framework.Capabilities
public Hashtable GetCapsDetails(bool excludeSeed, List<string> requestedCaps)
{
Hashtable caps = new Hashtable();
string protocol = "http://";
if (m_useSSL)
protocol = "https://";
string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString();
if (requestedCaps == null)
{
lock (m_capsHandlers)
{
foreach (KeyValuePair<string, ISimpleStreamHandler> kvp in m_capsSimpleHandlers)
caps[kvp.Key] = BaseURL + kvp.Value.Path;
foreach (KeyValuePair<string, IRequestHandler> kvp in m_capsHandlers)
caps[kvp.Key] = BaseURL + kvp.Value.Path;
}
return caps;
}
lock (m_capsHandlers)
{
foreach (string capsName in m_capsHandlers.Keys)
for (int i = 0; i < requestedCaps.Count; ++i)
{
string capsName = requestedCaps[i];
if (excludeSeed && "SEED" == capsName)
continue;
if (requestedCaps != null && !requestedCaps.Contains(capsName))
if (m_capsSimpleHandlers.TryGetValue(capsName, out ISimpleStreamHandler shdr))
{
caps[capsName] = BaseURL + shdr.Path;
continue;
caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
}
if (m_capsHandlers.TryGetValue(capsName, out IRequestHandler chdr))
{
caps[capsName] = BaseURL + chdr.Path;
}
}
}
return caps;
}
public Dictionary<string, string> GetCapsLocalPaths()
{
Dictionary<string, string> caps = new();
lock (m_capsHandlers)
{
foreach (KeyValuePair<string, ISimpleStreamHandler> kvp in m_capsSimpleHandlers)
caps[kvp.Key] = kvp.Value.Path;
foreach (KeyValuePair<string, IRequestHandler> kvp in m_capsHandlers)
caps[kvp.Key] = kvp.Value.Path;
}
return caps;
}
public void GetCapsDetailsLLSDxml(HashSet<string> requestedCaps, osUTF8 sb)
{
lock (m_capsHandlers)
{
if (requestedCaps is null)
return;
foreach (string capsName in requestedCaps)
{
if (m_capsSimpleHandlers.TryGetValue(capsName, out ISimpleStreamHandler shdr))
LLSDxmlEncode2.AddElem(capsName, BaseURL + shdr.Path, sb);
else if (m_capsHandlers.TryGetValue(capsName, out IRequestHandler chdr))
LLSDxmlEncode2.AddElem(capsName, BaseURL + chdr.Path, sb);
}
}
}
/// <summary>
/// Returns a copy of the dictionary of all the HTTP cap handlers
/// </summary>

View File

@@ -1,116 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Reflection;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
//using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class AvatarPickerSearchHandler : BaseStreamHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IPeople m_PeopleService;
public AvatarPickerSearchHandler(string path, IPeople peopleService, string name, string description)
: base("GET", path, name, description)
{
m_PeopleService = peopleService;
}
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// Try to parse the texture ID from the request URL
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
string names = query.GetOne("names");
string psize = query.GetOne("page_size");
string pnumber = query.GetOne("page");
if (m_PeopleService == null)
return FailureResponse(names, (int)System.Net.HttpStatusCode.InternalServerError, httpResponse);
if (string.IsNullOrEmpty(names) || names.Length < 3)
return FailureResponse(names, (int)System.Net.HttpStatusCode.BadRequest, httpResponse);
m_log.DebugFormat("[AVATAR PICKER SEARCH]: search for {0}", names);
int page_size = (string.IsNullOrEmpty(psize) ? 500 : Int32.Parse(psize));
int page_number = (string.IsNullOrEmpty(pnumber) ? 1 : Int32.Parse(pnumber));
// Full content request
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;
//httpResponse.ContentLength = ??;
httpResponse.ContentType = "application/llsd+xml";
List<UserData> users = m_PeopleService.GetUserData(names, page_size, page_number);
LLSDAvatarPicker osdReply = new LLSDAvatarPicker();
osdReply.next_page_url = httpRequest.RawUrl;
foreach (UserData u in users)
osdReply.agents.Array.Add(ConvertUserData(u));
string reply = LLSDHelpers.SerialiseLLSDReply(osdReply);
return System.Text.Encoding.UTF8.GetBytes(reply);
}
private LLSDPerson ConvertUserData(UserData user)
{
LLSDPerson p = new LLSDPerson();
p.legacy_first_name = user.FirstName;
p.legacy_last_name = user.LastName;
p.display_name = user.FirstName + " " + user.LastName;
if (user.LastName.StartsWith("@"))
p.username = user.FirstName.ToLower() + user.LastName.ToLower();
else
p.username = user.FirstName.ToLower() + "." + user.LastName.ToLower();
p.id = user.Id;
p.is_display_name_default = false;
return p;
}
private byte[] FailureResponse(string names, int statuscode, IOSHttpResponse httpResponse)
{
m_log.Error("[AVATAR PICKER SEARCH]: Error searching for " + names);
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return System.Text.Encoding.UTF8.GetBytes(string.Empty);
}
}
}

View File

@@ -29,9 +29,12 @@ using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
namespace OpenSim.Capabilities.Handlers
{
@@ -53,7 +56,7 @@ namespace OpenSim.Capabilities.Handlers
string invService = serverConfig.GetString("InventoryService", String.Empty);
if (invService == String.Empty)
if (invService.Length == 0)
throw new Exception("No InventoryService in config file");
Object[] args = new Object[] { config };
@@ -67,16 +70,16 @@ namespace OpenSim.Capabilities.Handlers
m_LibraryService =
ServerUtils.LoadPlugin<ILibraryService>(libService, args);
FetchInvDescHandler webFetchHandler = new FetchInvDescHandler(m_InventoryService, m_LibraryService, null);
IRequestHandler reqHandler
= new RestStreamHandler(
"POST",
"/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/,
webFetchHandler.FetchInventoryDescendentsRequest,
"FetchInvDescendents",
null);
server.AddStreamHandler(reqHandler);
}
ExpiringKey<UUID> m_badRequests = new ExpiringKey<UUID>(30000);
FetchInvDescHandler webFetchHandler = new FetchInvDescHandler(m_InventoryService, m_LibraryService, null);
ISimpleStreamHandler reqHandler
= new SimpleStreamHandler("/CAPS/WebFetchInvDesc/", delegate(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
webFetchHandler.FetchInventoryDescendentsRequest(httpRequest, httpResponse, m_badRequests);
});
server.AddSimpleStreamHandler(reqHandler);
}
}
}

View File

@@ -25,11 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Net;
using System.Reflection;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using OSDArray = OpenMetaverse.StructuredData.OSDArray;
@@ -59,83 +59,107 @@ namespace OpenSim.Capabilities.Handlers
OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(Utils.StringToBytes(request));
OSDArray itemsRequested = (OSDArray)requestmap["items"];
string reply;
LLSDFetchInventory llsdReply = new LLSDFetchInventory();
UUID[] itemIDs = new UUID[itemsRequested.Count];
int i = 0;
foreach (OSDMap osdItemId in itemsRequested)
{
itemIDs[i++] = osdItemId["item_id"].AsUUID();
}
InventoryItemBase[] items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs);
InventoryItemBase[] items;
if (items == null)
if (m_agentID.IsZero())
{
// OMG!!! One by one!!! This is fallback code, in case the backend isn't updated
m_log.WarnFormat("[FETCH INVENTORY HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one.");
items = new InventoryItemBase[itemsRequested.Count];
i = 0;
InventoryItemBase item = new InventoryItemBase();
item.Owner = m_agentID;
foreach (UUID id in itemIDs)
{
item.ID = id;
items[i++] = m_inventoryService.GetItem(item);
}
items[i++] = m_inventoryService.GetItem(UUID.Zero, id);
}
foreach (InventoryItemBase item in items)
else
{
if (item != null)
{
// We don't know the agent that this request belongs to so we'll use the agent id of the item
// which will be the same for all items.
llsdReply.agent_id = item.Owner;
llsdReply.items.Array.Add(ConvertInventoryItem(item));
}
items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs);
}
reply = LLSDHelpers.SerialiseLLSDReply(llsdReply);
osUTF8 lsl = LLSDxmlEncode2.Start(4096);
LLSDxmlEncode2.AddMap(lsl);
return reply;
if(m_agentID.IsZero() && items.Length > 0)
LLSDxmlEncode2.AddElem("agent_id", items[0].Owner, lsl);
else
LLSDxmlEncode2.AddElem("agent_id", m_agentID, lsl);
if(items is null || items.Length == 0)
{
LLSDxmlEncode2.AddEmptyArray("items", lsl);
}
else
{
LLSDxmlEncode2.AddArray("items", lsl);
foreach (InventoryItemBase item in items)
{
if (item is not null)
item.ToLLSDxml(lsl, 0xff);
}
LLSDxmlEncode2.AddEndArray(lsl);
}
LLSDxmlEncode2.AddEndMap(lsl);
return LLSDxmlEncode2.End(lsl);
}
/// <summary>
/// Convert an internal inventory item object into an LLSD object.
/// </summary>
/// <param name="invItem"></param>
/// <returns></returns>
private LLSDInventoryItem ConvertInventoryItem(InventoryItemBase invItem)
public void FetchInventorySimpleRequest(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, OSDMap requestmap, ExpiringKey<UUID> BadRequests)
{
LLSDInventoryItem llsdItem = new LLSDInventoryItem();
llsdItem.asset_id = invItem.AssetID;
llsdItem.created_at = invItem.CreationDate;
llsdItem.desc = invItem.Description;
llsdItem.flags = ((int)invItem.Flags) & 0xff;
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
//m_log.DebugFormat("[FETCH INVENTORY HANDLER]: Received FetchInventory capability request {0}", request);
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions;
llsdItem.permissions.everyone_mask = (int)invItem.EveryOnePermissions;
llsdItem.permissions.group_id = invItem.GroupID;
llsdItem.permissions.group_mask = (int)invItem.GroupPermissions;
llsdItem.permissions.is_owner_group = invItem.GroupOwned;
llsdItem.permissions.next_owner_mask = (int)invItem.NextPermissions;
llsdItem.permissions.owner_id = invItem.Owner;
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
llsdItem.sale_info.sale_type = invItem.SaleType;
if(BadRequests == null)
{
httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
return llsdItem;
OSDArray itemsRequested = (OSDArray)requestmap["items"];
UUID[] itemIDs = new UUID[itemsRequested.Count];
int i = 0;
foreach (OSDMap osdItemId in itemsRequested)
{
UUID id = osdItemId["item_id"].AsUUID();
if(!BadRequests.ContainsKey(id))
itemIDs[i++] = id;
}
InventoryItemBase[] items = null;
try
{
// badrequests still not filled
items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs);
}
catch{ }
osUTF8 lsl = LLSDxmlEncode2.Start(4096);
LLSDxmlEncode2.AddMap(lsl);
LLSDxmlEncode2.AddElem("agent_id", m_agentID, lsl);
if (items == null || items.Length == 0)
{
LLSDxmlEncode2.AddEmptyArray("items", lsl);
}
else
{
LLSDxmlEncode2.AddArray("items", lsl);
foreach (InventoryItemBase item in items)
{
if (item != null)
item.ToLLSDxml(lsl, 0xff);
}
LLSDxmlEncode2.AddEndArray(lsl);
}
LLSDxmlEncode2.AddEndMap(lsl);
httpResponse.RawBuffer = LLSDxmlEncode2.EndToBytes(lsl);
httpResponse.StatusCode = (int)HttpStatusCode.OK;
}
}
}
}

View File

@@ -35,13 +35,13 @@ using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class GetDisplayNamesServerConnector : ServiceConnector
public class FetchInventory2ServerConnector : ServiceConnector
{
private IUserManagement m_UserManagement;
private IInventoryService m_InventoryService;
private string m_ConfigName = "CapsService";
public GetDisplayNamesServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
public FetchInventory2ServerConnector(IConfigSource config, IHttpServer server, string configName)
: base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
@@ -50,22 +50,22 @@ namespace OpenSim.Capabilities.Handlers
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string umService = serverConfig.GetString("AssetService", String.Empty);
string invService = serverConfig.GetString("InventoryService", String.Empty);
if (umService == String.Empty)
throw new Exception("No AssetService in config file");
if (invService.Length == 0)
throw new Exception("No InventoryService in config file");
Object[] args = new Object[] { config };
m_UserManagement =
ServerUtils.LoadPlugin<IUserManagement>(umService, args);
m_InventoryService = ServerUtils.LoadPlugin<IInventoryService>(invService, args);
if (m_UserManagement == null)
throw new Exception(String.Format("Failed to load UserManagement from {0}; config is {1}", umService, m_ConfigName));
if (m_InventoryService == null)
throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName));
string rurl = serverConfig.GetString("GetTextureRedirectURL");
server.AddStreamHandler(
new GetDisplayNamesHandler("/CAPS/agents/", m_UserManagement, "GetDisplayNames", null));
FetchInventory2Handler fiHandler = new FetchInventory2Handler(m_InventoryService, UUID.Zero);
IRequestHandler reqHandler
= new RestStreamHandler(
"POST", "/CAPS/FetchInventory/", fiHandler.FetchInventoryRequest, "FetchInventory", null);
server.AddStreamHandler(reqHandler);
}
}
}
}

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Net;
using System.Reflection;
using System.Text;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using OSDArray = OpenMetaverse.StructuredData.OSDArray;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
using log4net;
namespace OpenSim.Capabilities.Handlers
{
public class FetchLib2Handler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IInventoryService m_inventoryService;
private ILibraryService m_LibraryService;
private UUID m_agentID;
private UUID libOwner;
public FetchLib2Handler(IInventoryService invService, ILibraryService libraryService, UUID agentId)
{
m_inventoryService = invService;
m_agentID = agentId;
m_LibraryService = libraryService;
if(libraryService != null)
libOwner = m_LibraryService.LibraryRootFolder.Owner;
}
public void FetchLibSimpleRequest(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, OSDMap requestmap, ExpiringKey<UUID> BadRequests)
{
//m_log.DebugFormat("[FETCH LIB INVENTORY HANDLER]: Received FetchInventory capability request {0}", request);
if (BadRequests == null)
{
httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (m_LibraryService == null || m_agentID == UUID.Zero)
{
httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
OSDArray itemsRequested = (OSDArray)requestmap["items"];
UUID[] itemIDs = new UUID[itemsRequested.Count];
int i = 0;
foreach (OSDMap osdItemId in itemsRequested)
{
UUID id = osdItemId["item_id"].AsUUID();
if (!BadRequests.ContainsKey(id))
itemIDs[i++] = id;
}
InventoryItemBase[] items = m_LibraryService.GetMultipleItems(itemIDs);
osUTF8 lsl = LLSDxmlEncode2.Start(4096);
LLSDxmlEncode2.AddMap(lsl);
LLSDxmlEncode2.AddElem("agent_id", m_agentID, lsl);
if(items is null || items.Length == 0)
{
LLSDxmlEncode2.AddEmptyArray("items", lsl);
}
else
{
LLSDxmlEncode2.AddArray("items", lsl);
foreach (InventoryItemBase item in items)
{
if (item != null)
item.ToLLSDxml(lsl);
}
LLSDxmlEncode2.AddEndArray(lsl);
}
LLSDxmlEncode2.AddEndMap(lsl);
httpResponse.RawBuffer = LLSDxmlEncode2.EndToBytes(lsl);
httpResponse.StatusCode = (int)HttpStatusCode.OK;
}
}
}

View File

@@ -0,0 +1,342 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.Reflection;
using System.Text;
using log4net;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
using OSDArray = OpenMetaverse.StructuredData.OSDArray;
namespace OpenSim.Capabilities.Handlers
{
public class FetchLibDescHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly byte[] EmptyResponse = Util.UTF8NBGetbytes("<llsd><map><key>folders</key><array /></map></llsd>");
private readonly ILibraryService m_LibraryService;
private readonly UUID libOwner;
private readonly IScene m_Scene;
public FetchLibDescHandler(ILibraryService libService, IScene s)
{
m_LibraryService = libService;
libOwner = m_LibraryService.LibraryRootFolder.Owner;
m_Scene = s;
}
public void FetchRequest(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, ExpiringKey<UUID> BadRequests, UUID agentID)
{
//m_log.DebugFormat("[XXX]: FetchLibDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request);
if (m_LibraryService == null || m_LibraryService.LibraryRootFolder == null)
{
httpResponse.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
return;
}
httpResponse.StatusCode = (int)HttpStatusCode.OK;
List<LLSDFetchInventoryDescendents> folders;
List<UUID> bad_folders = new List<UUID>();
try
{
OSDArray foldersrequested = null;
OSD tmp = OSDParser.DeserializeLLSDXml(httpRequest.InputStream);
httpRequest.InputStream.Dispose();
OSDMap map = (OSDMap)tmp;
if(map.TryGetValue("folders", out tmp) && tmp is OSDArray frtmp)
foldersrequested = frtmp;
if (foldersrequested is null || foldersrequested.Count == 0)
{
httpResponse.RawBuffer = EmptyResponse;
return;
}
folders = new List<LLSDFetchInventoryDescendents>(foldersrequested.Count);
for (int i = 0; i < foldersrequested.Count; i++)
{
OSDMap mfolder = foldersrequested[i] as OSDMap;
UUID id = mfolder["folder_id"].AsUUID();
if(BadRequests.ContainsKey(id))
{
bad_folders.Add(id);
}
else
{
LLSDFetchInventoryDescendents llsdRequest = new LLSDFetchInventoryDescendents();
try
{
llsdRequest.folder_id = id;
llsdRequest.owner_id = mfolder["owner_id"].AsUUID();
llsdRequest.sort_order = mfolder["sort_order"].AsInteger();
llsdRequest.fetch_folders = mfolder["fetch_folders"].AsBoolean();
llsdRequest.fetch_items = mfolder["fetch_items"].AsBoolean();
}
catch (Exception e)
{
m_log.Debug("[WEB FETCH INV DESC HANDLER]: caught exception doing OSD deserialize" + e.Message);
continue;
}
folders.Add(llsdRequest);
}
}
foldersrequested = null;
map.Clear();
map = null;
}
catch (Exception e)
{
m_log.ErrorFormat("[FETCH LIB DESC]: fail parsing request: {0}", e.Message);
httpResponse.RawBuffer = EmptyResponse;
return;
}
if (folders is null || folders.Count == 0)
{
if(bad_folders.Count == 0)
{
httpResponse.RawBuffer = EmptyResponse;
return;
}
osUTF8 osu = OSUTF8Cached.Acquire();
osu.AppendASCII("[FETCH LIB DESC HANDLER]: Unable to fetch folders:");
int limit = 5;
int count = 0;
foreach (UUID bad in bad_folders)
{
if (BadRequests.ContainsKey(bad))
continue;
osu.Append((byte)' ');
osu.AppendASCII(bad.ToString());
++count;
if (--limit < 0)
break;
}
if(count > 0)
{
if (limit < 0)
osu.AppendASCII(" ...");
m_log.Warn(osu.ToString());
}
osu.Clear();
osu.AppendASCII("<llsd><map><key>folders</key><array /></map><map><key>bad_folders</key><array>");
foreach (UUID bad in bad_folders)
{
osu.AppendASCII("<map><key>folder_id</key><uuid>");
osu.AppendASCII(bad.ToString());
osu.AppendASCII("</uuid><key>error</key><string>Unknown</string></map>");
}
osu.AppendASCII("</array></map></llsd>");
httpResponse.RawBuffer = OSUTF8Cached.GetArrayAndRelease(osu);
return;
}
UUID requester = folders[0].owner_id;
List<InventoryCollection> invcollSet = Fetch(folders, bad_folders);
//m_log.DebugFormat("[XXX]: Got {0} folders from a request of {1}", invcollSet.Count, folders.Count);
int invcollSetCount = 0;
if (invcollSet != null)
invcollSetCount = invcollSet.Count;
osUTF8 lastresponse = LLSDxmlEncode2.Start();
if (invcollSetCount > 0)
{
lastresponse.AppendASCII("<map><key>folders</key><array>");
int i = 0;
InventoryCollection thiscoll;
for (i = 0; i < invcollSetCount; i++)
{
thiscoll = invcollSet[i];
invcollSet[i] = null;
LLSDxmlEncode2.AddMap(lastresponse);
LLSDxmlEncode2.AddElem_folder_id(thiscoll.FolderID, lastresponse);
LLSDxmlEncode2.AddElem_agent_id(agentID, lastresponse);
LLSDxmlEncode2.AddElem_owner_id(thiscoll.OwnerID, lastresponse);
LLSDxmlEncode2.AddElem("descendents", thiscoll.Descendents, lastresponse);
LLSDxmlEncode2.AddElem_version(thiscoll.Version, lastresponse);
if (thiscoll.Folders == null || thiscoll.Folders.Count == 0)
LLSDxmlEncode2.AddEmptyArray("categories", lastresponse);
else
{
LLSDxmlEncode2.AddArray("categories", lastresponse);
foreach (InventoryFolderBase invFolder in thiscoll.Folders)
{
LLSDxmlEncode2.AddMap(lastresponse);
LLSDxmlEncode2.AddElem_category_id(invFolder.ID, lastresponse);
LLSDxmlEncode2.AddElem_parent_id(invFolder.ParentID, lastresponse);
LLSDxmlEncode2.AddElem_name(invFolder.Name, lastresponse);
LLSDxmlEncode2.AddElem("type_default", invFolder.Type, lastresponse);
LLSDxmlEncode2.AddElem_version( invFolder.Version, lastresponse);
LLSDxmlEncode2.AddEndMap(lastresponse);
}
LLSDxmlEncode2.AddEndArray(lastresponse);
}
if (thiscoll.Items == null || thiscoll.Items.Count == 0)
LLSDxmlEncode2.AddEmptyArray("items", lastresponse);
else
{
LLSDxmlEncode2.AddArray("items", lastresponse);
foreach (InventoryItemBase invItem in thiscoll.Items)
{
invItem.ToLLSDxml(lastresponse);
}
LLSDxmlEncode2.AddEndArray(lastresponse);
}
LLSDxmlEncode2.AddEndMap(lastresponse);
invcollSet[i] = null;
}
LLSDxmlEncode2.AddEndArrayAndMap(lastresponse);
}
else
{
lastresponse.AppendASCII("<map><key>folders</key><array /></map>");
}
if (bad_folders.Count > 0)
{
lastresponse.AppendASCII("<map><key>bad_folders</key><array>");
foreach (UUID bad in bad_folders)
{
BadRequests.Add(bad);
lastresponse.AppendASCII("<map><key>folder_id</key><uuid>");
lastresponse.AppendASCII(bad.ToString());
lastresponse.AppendASCII("</uuid><key>error</key><string>Unknown</string></map>");
}
lastresponse.AppendASCII("</array></map>");
StringBuilder sb = osStringBuilderCache.Acquire();
sb.Append("[WEB FETCH INV DESC HANDLER]: Unable to fetch folders owned by ");
sb.Append(requester.ToString());
sb.Append(" :");
int limit = 9;
foreach (UUID bad in bad_folders)
{
sb.Append(' ');
sb.Append(bad.ToString());
if(--limit < 0)
break;
}
if(limit < 0)
sb.Append(" ...");
m_log.Warn(osStringBuilderCache.GetStringAndRelease(sb));
}
httpResponse.RawBuffer = LLSDxmlEncode2.EndToBytes(lastresponse);
}
private List<InventoryCollection> Fetch(List<LLSDFetchInventoryDescendents> fetchFolders, List<UUID> bad_folders)
{
//m_log.DebugFormat(
// "[FETCH LIB DESC HANDLER]: Fetching {0} folders", fetchFolders.Count);
// FIXME MAYBE: We're not handling sortOrder!
int cntr = fetchFolders.Count;
List<InventoryCollection> result = new List<InventoryCollection>(cntr);
List<LLSDFetchInventoryDescendents> libFolders = new List<LLSDFetchInventoryDescendents>(cntr);
HashSet<UUID> libIDs = new HashSet<UUID>();
// Filter folder Zero right here. Some viewers (Firestorm) send request for folder Zero, which doesn't make sense
// and can kill the sim (all root folders have parent_id Zero)
// send something.
bool doneZeroID = false;
foreach(LLSDFetchInventoryDescendents f in fetchFolders)
{
if (f.folder_id.IsZero())
{
if(doneZeroID)
continue;
doneZeroID = true;
InventoryCollection Collection = new InventoryCollection()
{
OwnerID = f.owner_id,
Version = -1,
FolderID = f.folder_id,
Descendents = 0
};
result.Add(Collection);
continue;
}
if(f.owner_id.Equals(libOwner))
{
if(libIDs.Contains(f.folder_id))
continue;
libIDs.Add(f.folder_id);
libFolders.Add(f);
continue;
}
}
if (libFolders.Count > 0)
{
foreach (LLSDFetchInventoryDescendents f in libFolders)
{
InventoryFolderImpl fold = m_LibraryService.LibraryRootFolder.FindFolder(f.folder_id);
if (fold != null)
{
InventoryCollection Collection = new InventoryCollection()
{
Folders = fold.RequestListOfFolders(),
Items = fold.RequestListOfItems(),
OwnerID = m_LibraryService.LibraryRootFolder.Owner,
FolderID = f.folder_id,
Version = fold.Version
};
Collection.Descendents = Collection.Items.Count + Collection.Folders.Count;
result.Add(Collection);
//m_log.DebugFormat("[XXX]: Added libfolder {0} ({1}) {2}", ret.Collection.FolderID, ret.Collection.OwnerID);
}
else
bad_folders.Add(f.folder_id);
}
}
return result;
}
}
}

View File

@@ -120,7 +120,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
string request = "<llsd><map><key>items</key><array><map><key>item_id</key><uuid>";
request += "10000000-0000-0000-0000-000000000001"; // Notecard 1
request += "</uuid></map></array></map></llsd>";
string llsdresponse = handler.FetchInventoryRequest(request, "/FETCH", string.Empty, req, resp);
Assert.That(llsdresponse != null, Is.True, "Incorrect null response");

View File

@@ -28,7 +28,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using log4net;
using log4net.Config;
@@ -46,7 +46,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
[TestFixture]
public class FetchInventoryDescendents2HandlerTests : OpenSimTestCase
{
private UUID m_userID = UUID.Zero;
private UUID m_userID = new UUID("00000000-0000-0000-0000-000000000001");
private Scene m_scene;
private UUID m_rootFolderID;
private int m_rootDescendents;
@@ -103,6 +103,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
// Add a folder
InventoryFolderBase folder = new InventoryFolderBase(new UUID("f0000000-0000-0000-0000-00000000000f"), "Test Folder", m_userID, m_rootFolderID);
folder.Type = (short)FolderType.None;
m_scene.InventoryService.AddFolder(folder);
// Add a link to notecard 2 in Test Folder
@@ -126,6 +127,19 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
Console.WriteLine("Number of descendents: " + m_rootDescendents);
}
private string dorequest(FetchInvDescHandler handler, string request)
{
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
using(ExpiringKey<UUID> bad = new ExpiringKey<UUID>(5000)) // bad but this is test
using (MemoryStream ms = new MemoryStream(Utils.StringToBytes(request), false))
{
req.InputStream = ms;
handler.FetchInventoryDescendentsRequest(req, resp, bad);
}
return Util.UTF8.GetString(resp.RawBuffer);
}
[Test]
public void Test_001_SimpleFolder()
{
@@ -134,18 +148,18 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
Init();
FetchInvDescHandler handler = new FetchInvDescHandler(m_scene.InventoryService, null, m_scene);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
string request = "<llsd><map><key>folders</key><array><map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
request += m_rootFolderID;
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>";
string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp);
request += "</uuid><key>owner_id</key><uuid>";
request += m_userID.ToString();
request += "</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>";
string llsdresponse = dorequest(handler, request);
Assert.That(llsdresponse != null, Is.True, "Incorrect null response");
Assert.That(llsdresponse != string.Empty, Is.True, "Incorrect empty response");
Assert.That(llsdresponse.Contains("00000000-0000-0000-0000-000000000000"), Is.True, "Response should contain userID");
Assert.That(llsdresponse.Contains(m_userID.ToString()), Is.True, "Response should contain userID");
string descendents = "descendents</key><integer>" + m_rootDescendents + "</integer>";
Assert.That(llsdresponse.Contains(descendents), Is.True, "Incorrect number of descendents");
@@ -158,19 +172,17 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
TestHelpers.InMethod();
FetchInvDescHandler handler = new FetchInvDescHandler(m_scene.InventoryService, null, m_scene);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
string request = "<llsd><map><key>folders</key><array>";
request += "<map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
request += m_rootFolderID;
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map>";
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000001</uuid><key>sort_order</key><integer>1</integer></map>";
request += "<map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
request += m_notecardsFolder;
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map>";
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000001</uuid><key>sort_order</key><integer>1</integer></map>";
request += "</array></map></llsd>";
string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp);
string llsdresponse = dorequest(handler, request);
Console.WriteLine(llsdresponse);
string descendents = "descendents</key><integer>" + m_rootDescendents + "</integer>";
@@ -188,14 +200,12 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
TestHelpers.InMethod();
FetchInvDescHandler handler = new FetchInvDescHandler(m_scene.InventoryService, null, m_scene);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
string request = "<llsd><map><key>folders</key><array><map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
request += "f0000000-0000-0000-0000-00000000000f";
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>";
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000001</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>";
string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp);
string llsdresponse = dorequest(handler, request);
Console.WriteLine(llsdresponse);
string descendents = "descendents</key><integer>2</integer>";
@@ -203,7 +213,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
// Make sure that the note card link is included
Assert.That(llsdresponse.Contains("Link to notecard"), Is.True, "Link to notecard is missing");
//Make sure the notecard item itself is included
Assert.That(llsdresponse.Contains("Test Notecard 2"), Is.True, "Notecard 2 item (the source) is missing");
@@ -215,10 +225,11 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
// Make sure the folder link is included
Assert.That(llsdresponse.Contains("Link to Objects folder"), Is.True, "Link to Objects folder is missing");
/* contents of link folder are not supposed to be listed
// Make sure the objects inside the Objects folder are included
// Note: I'm not entirely sure this is needed, but that's what I found in the implementation
Assert.That(llsdresponse.Contains("Some Object"), Is.True, "Some Object item (contents of the source) is missing");
*/
// Make sure that the source item is before the link item
pos1 = llsdresponse.IndexOf("Some Object");
pos2 = llsdresponse.IndexOf("Link to Objects folder");
@@ -231,8 +242,6 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
TestHelpers.InMethod();
FetchInvDescHandler handler = new FetchInvDescHandler(m_scene.InventoryService, null, m_scene);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
string request = "<llsd><map><key>folders</key><array>";
request += "<map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
@@ -249,44 +258,46 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map>";
request += "</array></map></llsd>";
string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp);
string llsdresponse = dorequest(handler, request);
Console.WriteLine(llsdresponse);
string root_folder = "<key>folder_id</key><uuid>" + m_rootFolderID + "</uuid>";
string notecards_folder = "<key>folder_id</key><uuid>" + m_notecardsFolder + "</uuid>";
string notecards_category = "<key>category_id</key><uuid>" + m_notecardsFolder + "</uuid>";
Assert.That(llsdresponse.Contains(root_folder), "Missing root folder");
Assert.That(llsdresponse.Contains(notecards_folder), "Missing notecards folder");
int count = Regex.Matches(llsdresponse, root_folder).Count;
Assert.AreEqual(1, count, "More than 1 root folder in response");
count = Regex.Matches(llsdresponse, notecards_folder).Count;
Assert.AreEqual(2, count, "More than 1 notecards folder in response"); // Notecards will also be under root, so 2
Assert.AreEqual(1, count, "More than 1 notecards folder in response");
count = Regex.Matches(llsdresponse, notecards_category).Count;
Assert.AreEqual(1, count, "More than 1 notecards folder in response"); // Notecards will also be a category on root
}
[Test]
public void Test_005_FolderZero()
{
TestHelpers.InMethod();
Init();
FetchInvDescHandler handler = new FetchInvDescHandler(m_scene.InventoryService, null, m_scene);
TestOSHttpRequest req = new TestOSHttpRequest();
TestOSHttpResponse resp = new TestOSHttpResponse();
string request = "<llsd><map><key>folders</key><array><map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>";
request += UUID.Zero;
request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>";
string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp);
string llsdresponse = dorequest(handler, request);
Assert.That(llsdresponse != null, Is.True, "Incorrect null response");
Assert.That(llsdresponse != string.Empty, Is.True, "Incorrect empty response");
Assert.That(llsdresponse.Contains("bad_folders</key><array><uuid>00000000-0000-0000-0000-000000000000"), Is.True, "Folder Zero should be a bad folder");
// we do return a answer now
//Assert.That(llsdresponse.Contains("bad_folders</key><array><uuid>00000000-0000-0000-0000-000000000000"), Is.True, "Folder Zero should be a bad folder");
Console.WriteLine(llsdresponse);
}
}
}

View File

@@ -0,0 +1,197 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Reflection;
using System.Threading;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class GetAssetsHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly Dictionary<string, AssetType> queryTypes = new()
{
{"texture_id", AssetType.Texture},
{"sound_id", AssetType.Sound},
{"callcard_id", AssetType.CallingCard},
{"landmark_id", AssetType.Landmark},
{"script_id", AssetType.LSLText},
{"clothing_id", AssetType.Clothing},
{"object_id", AssetType.Object},
{"notecard_id", AssetType.Notecard},
{"lsltext_id", AssetType.LSLText},
{"lslbyte_id", AssetType.LSLBytecode},
{"txtr_tga_id", AssetType.TextureTGA},
{"bodypart_id", AssetType.Bodypart},
{"snd_wav_id", AssetType.SoundWAV},
{"img_tga_id", AssetType.ImageTGA},
{"jpeg_id", AssetType.ImageJPEG},
{"animatn_id", AssetType.Animation},
{"gesture_id", AssetType.Gesture},
{"mesh_id", AssetType.Mesh},
{"settings_id", AssetType.Settings},
{"material_id", AssetType.Material}
};
private IAssetService m_assetService;
public GetAssetsHandler(IAssetService assService)
{
m_assetService = assService;
}
public void Handle(OSHttpRequest req, OSHttpResponse response, string serviceURL = null)
{
response.ContentType = "text/plain";
if (m_assetService == null)
{
//m_log.Warn("[GETASSET]: no service");
response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
response.KeepAlive = false;
return;
}
response.StatusCode = (int)HttpStatusCode.BadRequest;
var queries = req.QueryAsDictionary;
if(queries.Count == 0)
return;
AssetType type = AssetType.Unknown;
string assetStr = string.Empty;
foreach (KeyValuePair<string,string> kvp in queries)
{
if (queryTypes.TryGetValue(kvp.Key, out type))
{
assetStr = kvp.Value;
break;
}
}
if(type == AssetType.Unknown)
{
//m_log.Warn("[GETASSET]: Unknown type: " + query);
m_log.Warn("[GETASSET]: Unknown type");
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (string.IsNullOrEmpty(assetStr))
return;
if(!UUID.TryParse(assetStr, out UUID assetID))
return;
ManualResetEventSlim done = new ManualResetEventSlim(false);
AssetBase asset = null;
m_assetService.Get(assetID.ToString(), serviceURL, false, (AssetBase a) =>
{
asset = a;
done.Set();
});
done.Wait();
done.Dispose();
done = null;
if (asset == null)
{
// m_log.Warn("[GETASSET]: not found: " + query + " " + assetStr);
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
int len = asset.Data.Length;
if (len == 0)
{
m_log.Warn("[GETASSET]: asset with empty data: " + assetStr + " type " + asset.Type.ToString());
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if (asset.Type != (sbyte)type)
{
m_log.Warn("[GETASSET]: asset with wrong type: " + assetStr + " " + asset.Type.ToString() + " != " + ((sbyte)type).ToString());
//response.StatusCode = (int)HttpStatusCode.NotFound;
//return;
}
// range request
if (Util.TryParseHttpRange(req.Headers["range"], out int start, out int end))
{
// viewers do send broken start, then flag good assets as bad
if (start >= len)
{
//m_log.Warn("[GETASSET]: bad start: " + range);
response.StatusCode = (int)HttpStatusCode.OK;
}
else
{
if (end == -1)
end = len - 1;
else
end = Utils.Clamp(end, 0, len - 1);
start = Utils.Clamp(start, 0, end);
len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
response.AddHeader("Content-Range", string.Format("bytes {0}-{1}/{2}", start, end, asset.Data.Length));
response.StatusCode = (int)HttpStatusCode.PartialContent;
response.RawBufferStart = start;
}
}
else
response.StatusCode = (int)HttpStatusCode.OK;
response.ContentType = asset.Metadata.ContentType;
response.RawBuffer = asset.Data;
response.RawBufferLen = len;
if (type == AssetType.Mesh || type == AssetType.Texture)
response.Priority = 2;
else
response.Priority = 1;
}
}
}

View File

@@ -1,120 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
using OSDArray = OpenMetaverse.StructuredData.OSDArray;
namespace OpenSim.Capabilities.Handlers
{
public class GetDisplayNamesHandler : BaseStreamHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IUserManagement m_UserManagement;
public GetDisplayNamesHandler(string path, IUserManagement umService, string name, string description)
: base("GET", path, name, description)
{
m_UserManagement = umService;
}
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// m_log.DebugFormat("[GET_DISPLAY_NAMES]: called {0}", httpRequest.Url.Query);
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
string[] ids = query.GetValues("ids");
if (m_UserManagement == null)
{
m_log.Error("[GET_DISPLAY_NAMES]: Cannot fetch display names without a user management component");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
return new byte[0];
}
OSDMap osdReply = new OSDMap();
OSDArray agents = new OSDArray();
osdReply["agents"] = agents;
foreach (string id in ids)
{
UUID uuid = UUID.Zero;
if (UUID.TryParse(id, out uuid))
{
string name = m_UserManagement.GetUserName(uuid);
if (!string.IsNullOrEmpty(name))
{
string[] parts = name.Split(new char[] {' '});
OSDMap osdname = new OSDMap();
osdname["display_name_next_update"] = OSD.FromDate(DateTime.MinValue);
osdname["display_name_expires"] = OSD.FromDate(DateTime.Now.AddMonths(1));
osdname["display_name"] = OSD.FromString(name);
osdname["legacy_first_name"] = parts[0];
osdname["legacy_last_name"] = parts[1];
osdname["username"] = OSD.FromString(name);
osdname["id"] = OSD.FromUUID(uuid);
osdname["is_display_name_default"] = OSD.FromBoolean(true);
agents.Add(osdname);
}
}
}
// Full content request
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;
//httpResponse.ContentLength = ??;
httpResponse.ContentType = "application/llsd+xml";
string reply = OSDParser.SerializeLLSDXmlString(osdReply);
return System.Text.Encoding.UTF8.GetBytes(reply);
}
}
}

View File

@@ -41,9 +41,6 @@ using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class GetMeshHandler
@@ -61,211 +58,98 @@ namespace OpenSim.Capabilities.Handlers
}
public Hashtable Handle(Hashtable request)
{
Hashtable ret = new Hashtable();
ret["int_response_code"] = (int)System.Net.HttpStatusCode.NotFound;
ret["content_type"] = "text/plain";
ret["keepalive"] = false;
ret["reusecontext"] = false;
ret["int_bytes"] = 0;
ret["int_lod"] = 0;
string MeshStr = (string)request["mesh_id"];
//m_log.DebugFormat("[GETMESH]: called {0}", MeshStr);
if (m_assetService == null)
{
m_log.Error("[GETMESH]: Cannot fetch mesh " + MeshStr + " without an asset service");
}
UUID meshID;
if (!String.IsNullOrEmpty(MeshStr) && UUID.TryParse(MeshStr, out meshID))
{
// m_log.DebugFormat("[GETMESH]: Received request for mesh id {0}", meshID);
ret = ProcessGetMesh(request, UUID.Zero, null);
}
else
{
m_log.Warn("[GETMESH]: Failed to parse a mesh_id from GetMesh request: " + (string)request["uri"]);
}
return ret;
return ProcessGetMesh(request, UUID.Zero, null);
}
public Hashtable ProcessGetMesh(Hashtable request, UUID AgentId, Caps cap)
{
Hashtable responsedata = new Hashtable();
responsedata["int_response_code"] = 400; //501; //410; //404;
if (m_assetService == null)
{
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.ServiceUnavailable;
responsedata["str_response_string"] = "The asset service is unavailable";
responsedata["keepalive"] = false;
return responsedata;
}
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.BadRequest;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Request wasn't what was expected";
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 0;
responsedata["int_bytes"] = 0;
string meshStr = string.Empty;
if (request.ContainsKey("mesh_id"))
meshStr = request["mesh_id"].ToString();
if (String.IsNullOrEmpty(meshStr))
return responsedata;
UUID meshID = UUID.Zero;
if (!String.IsNullOrEmpty(meshStr) && UUID.TryParse(meshStr, out meshID))
if(!UUID.TryParse(meshStr, out meshID))
return responsedata;
AssetBase mesh = m_assetService.Get(meshID.ToString());
if(mesh == null)
{
if (m_assetService == null)
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "The asset service is unavailable. So is your mesh.";
responsedata["reusecontext"] = false;
return responsedata;
}
AssetBase mesh = m_assetService.Get(meshID.ToString());
if (mesh != null)
{
if (mesh.Type == (SByte)AssetType.Mesh)
{
Hashtable headers = new Hashtable();
responsedata["headers"] = headers;
string range = String.Empty;
if (((Hashtable)request["headers"])["range"] != null)
range = (string)((Hashtable)request["headers"])["range"];
else if (((Hashtable)request["headers"])["Range"] != null)
range = (string)((Hashtable)request["headers"])["Range"];
if (!String.IsNullOrEmpty(range)) // Mesh Asset LOD // Physics
{
// Range request
int start, end;
if (TryParseRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (start >= mesh.Data.Length)
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "This range doesnt exist.";
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 3;
return responsedata;
}
else
{
end = Utils.Clamp(end, 0, mesh.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
if (start > 20000)
{
responsedata["int_lod"] = 3;
}
else if (start < 4097)
{
responsedata["int_lod"] = 1;
}
else
{
responsedata["int_lod"] = 2;
}
if (start == 0 && len == mesh.Data.Length) // well redudante maybe
{
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.OK;
responsedata["bin_response_data"] = mesh.Data;
responsedata["int_bytes"] = mesh.Data.Length;
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 3;
}
else
{
responsedata["int_response_code"] =
(int)System.Net.HttpStatusCode.PartialContent;
headers["Content-Range"] = String.Format("bytes {0}-{1}/{2}", start, end,
mesh.Data.Length);
byte[] d = new byte[len];
Array.Copy(mesh.Data, start, d, 0, len);
responsedata["bin_response_data"] = d;
responsedata["int_bytes"] = len;
responsedata["reusecontext"] = false;
}
}
}
else
{
m_log.Warn("[GETMESH]: Failed to parse a range from GetMesh request, sending full asset: " + (string)request["uri"]);
responsedata["str_response_string"] = Convert.ToBase64String(mesh.Data);
responsedata["content_type"] = "application/vnd.ll.mesh";
responsedata["int_response_code"] = 200;
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 3;
}
}
else
{
responsedata["str_response_string"] = Convert.ToBase64String(mesh.Data);
responsedata["content_type"] = "application/vnd.ll.mesh";
responsedata["int_response_code"] = 200;
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 3;
}
}
// Optionally add additional mesh types here
else
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Unfortunately, this asset isn't a mesh.";
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 1;
return responsedata;
}
}
else
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Your Mesh wasn't found. Sorry!";
responsedata["reusecontext"] = false;
responsedata["int_lod"] = 0;
return responsedata;
}
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.NotFound;
responsedata["str_response_string"] = "Mesh not found.";
return responsedata;
}
if (mesh.Type != (SByte)AssetType.Mesh)
{
responsedata["str_response_string"] = "Asset isn't a mesh.";
return responsedata;
}
string range = String.Empty;
if (((Hashtable)request["headers"])["range"] != null)
range = (string)((Hashtable)request["headers"])["range"];
else if (((Hashtable)request["headers"])["Range"] != null)
range = (string)((Hashtable)request["headers"])["Range"];
responsedata["content_type"] = "application/vnd.ll.mesh";
if (String.IsNullOrEmpty(range))
{
// full mesh
responsedata["str_response_string"] = Convert.ToBase64String(mesh.Data);
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.OK;
return responsedata;
}
// range request
int start, end;
if (Util.TryParseHttpRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (start >= mesh.Data.Length)
{
responsedata["str_response_string"] = "This range doesnt exist.";
return responsedata;
}
end = Utils.Clamp(end, 0, mesh.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
Hashtable headers = new Hashtable();
headers["Content-Range"] = String.Format("bytes {0}-{1}/{2}", start, end, mesh.Data.Length);
responsedata["headers"] = headers;
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.PartialContent;
byte[] d = new byte[len];
Array.Copy(mesh.Data, start, d, 0, len);
responsedata["bin_response_data"] = d;
responsedata["int_bytes"] = len;
return responsedata;
}
m_log.Warn("[GETMESH]: Failed to parse a range from GetMesh request, sending full asset: " + (string)request["uri"]);
responsedata["str_response_string"] = Convert.ToBase64String(mesh.Data);
responsedata["int_response_code"] = (int)System.Net.HttpStatusCode.OK;
return responsedata;
}
private bool TryParseRange(string header, out int start, out int end)
{
if (header.StartsWith("bytes="))
{
string[] rangeValues = header.Substring(6).Split('-');
if (rangeValues.Length == 2)
{
if (Int32.TryParse(rangeValues[0], out start) && Int32.TryParse(rangeValues[1], out end))
return true;
}
}
start = end = 0;
return false;
}
}
}

View File

@@ -52,7 +52,7 @@ namespace OpenSim.Capabilities.Handlers
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
if (assetService.Length == 0)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
@@ -68,11 +68,11 @@ namespace OpenSim.Capabilities.Handlers
IRequestHandler reqHandler
= new RestHTTPHandler(
"GET",
"/CAPS/" + UUID.Random(),
"/" + UUID.Random(),
httpMethod => gmeshHandler.ProcessGetMesh(httpMethod, UUID.Zero, null),
"GetMesh",
null);
server.AddStreamHandler(reqHandler); ;
server.AddStreamHandler(reqHandler);
}
}
}

View File

@@ -56,10 +56,6 @@ namespace OpenSim.Capabilities.Handlers
public const string DefaultFormat = "x-j2c";
// TODO: Change this to a config option
private string m_RedirectURL = null;
public GetTextureHandler(IAssetService assService)
{
m_assetService = assService;
@@ -70,8 +66,6 @@ namespace OpenSim.Capabilities.Handlers
Hashtable ret = new Hashtable();
ret["int_response_code"] = (int)System.Net.HttpStatusCode.NotFound;
ret["content_type"] = "text/plain";
ret["keepalive"] = false;
ret["reusecontext"] = false;
ret["int_bytes"] = 0;
string textureStr = (string)request["texture_id"];
string format = (string)request["format"];
@@ -87,7 +81,7 @@ namespace OpenSim.Capabilities.Handlers
if (!String.IsNullOrEmpty(textureStr) && UUID.TryParse(textureStr, out textureID))
{
// m_log.DebugFormat("[GETTEXTURE]: Received request for texture id {0}", textureID);
string[] formats;
if (!string.IsNullOrEmpty(format))
{
@@ -116,8 +110,6 @@ namespace OpenSim.Capabilities.Handlers
ret["error_status_text"] = "not found";
ret["str_response_string"] = "not found";
ret["content_type"] = "text/plain";
ret["keepalive"] = false;
ret["reusecontext"] = false;
ret["int_bytes"] = 0;
}
}
@@ -133,7 +125,7 @@ namespace OpenSim.Capabilities.Handlers
}
/// <summary>
///
///
/// </summary>
/// <param name="httpRequest"></param>
/// <param name="httpResponse"></param>
@@ -194,7 +186,7 @@ namespace OpenSim.Capabilities.Handlers
//response = new Hashtable();
//WriteTextureData(request,response,null,format);
// not found
//m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found");
@@ -218,7 +210,7 @@ namespace OpenSim.Capabilities.Handlers
{
// Range request
int start, end;
if (TryParseRange(range, out start, out end))
if (Util.TryParseHttpRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
@@ -257,24 +249,13 @@ namespace OpenSim.Capabilities.Handlers
// m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
response["content-type"] = texture.Metadata.ContentType;
response["int_response_code"] = (int)System.Net.HttpStatusCode.PartialContent;
headers["Content-Range"] = String.Format("bytes {0}-{1}/{2}", start, end, texture.Data.Length);
if (start == 0 && len == texture.Data.Length) // well redudante maybe
{
response["int_response_code"] = (int)System.Net.HttpStatusCode.OK;
response["bin_response_data"] = texture.Data;
response["int_bytes"] = texture.Data.Length;
}
else
{
response["int_response_code"] = (int)System.Net.HttpStatusCode.PartialContent;
headers["Content-Range"] = String.Format("bytes {0}-{1}/{2}", start, end, texture.Data.Length);
byte[] d = new byte[len];
Array.Copy(texture.Data, start, d, 0, len);
response["bin_response_data"] = d;
response["int_bytes"] = len;
}
// response.Body.Write(texture.Data, start, len);
byte[] d = new byte[len];
Array.Copy(texture.Data, start, d, 0, len);
response["bin_response_data"] = d;
response["int_bytes"] = len;
}
}
else
@@ -291,7 +272,7 @@ namespace OpenSim.Capabilities.Handlers
response["content_type"] = texture.Metadata.ContentType;
else
response["content_type"] = "image/" + format;
response["bin_response_data"] = texture.Data;
response["int_bytes"] = texture.Data.Length;
@@ -308,86 +289,41 @@ namespace OpenSim.Capabilities.Handlers
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
}
/// <summary>
/// Parse a range header.
/// </summary>
/// <remarks>
/// As per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,
/// this obeys range headers with two values (e.g. 533-4165) and no second value (e.g. 533-).
/// Where there is no value, -1 is returned.
/// FIXME: Need to cover the case where only a second value is specified (e.g. -4165), probably by returning -1
/// for start.</remarks>
/// <returns></returns>
/// <param name='header'></param>
/// <param name='start'>Start of the range. Undefined if this was not a number.</param>
/// <param name='end'>End of the range. Will be -1 if no end specified. Undefined if there was a raw string but this was not a number.</param>
private bool TryParseRange(string header, out int start, out int end)
{
start = end = 0;
if (header.StartsWith("bytes="))
{
string[] rangeValues = header.Substring(6).Split('-');
if (rangeValues.Length == 2)
{
if (!Int32.TryParse(rangeValues[0], out start))
return false;
string rawEnd = rangeValues[1];
if (rawEnd == "")
{
end = -1;
return true;
}
else if (Int32.TryParse(rawEnd, out end))
{
return true;
}
}
}
start = end = 0;
return false;
}
private byte[] ConvertTextureData(AssetBase texture, string format)
{
m_log.DebugFormat("[GETTEXTURE]: Converting texture {0} to {1}", texture.ID, format);
byte[] data = new byte[0];
byte[] data = Array.Empty<byte>();
MemoryStream imgstream = new MemoryStream();
Bitmap mTexture = new Bitmap(1, 1);
ManagedImage managedImage;
Image image = (Image)mTexture;
Bitmap mTexture = null;
ManagedImage managedImage = null;
Image image = null;
try
{
// Taking our jpeg2000 data, decoding it, then saving it to a byte array with regular data
imgstream = new MemoryStream();
// Decode image to System.Drawing.Image
if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image))
if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image) && image != null)
{
// Save to bitmap
mTexture = new Bitmap(image);
EncoderParameters myEncoderParameters = new EncoderParameters();
myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
// Save bitmap to stream
ImageCodecInfo codec = GetEncoderInfo("image/" + format);
if (codec != null)
using(EncoderParameters myEncoderParameters = new EncoderParameters())
{
mTexture.Save(imgstream, codec, myEncoderParameters);
// Write the stream to a byte array for output
data = imgstream.ToArray();
}
else
m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,95L);
// Save bitmap to stream
ImageCodecInfo codec = GetEncoderInfo("image/" + format);
if (codec != null)
{
mTexture.Save(imgstream, codec, myEncoderParameters);
// Write the stream to a byte array for output
data = imgstream.ToArray();
}
else
m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
}
}
}
catch (Exception e)
@@ -404,11 +340,10 @@ namespace OpenSim.Capabilities.Handlers
if (image != null)
image.Dispose();
if(managedImage != null)
managedImage.Clear();
if (imgstream != null)
{
imgstream.Close();
imgstream.Dispose();
}
}
return data;

View File

@@ -0,0 +1,393 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
using System.Net;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class GetTextureRobustHandler : BaseStreamHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IAssetService m_assetService;
public const string DefaultFormat = "x-j2c";
// TODO: Change this to a config option
private string m_RedirectURL = null;
public GetTextureRobustHandler(string path, IAssetService assService, string name, string description, string redirectURL)
: base("GET", path, name, description)
{
m_assetService = assService;
m_RedirectURL = redirectURL;
if (m_RedirectURL != null && !m_RedirectURL.EndsWith("/"))
m_RedirectURL += "/";
}
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// Try to parse the texture ID from the request URL
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
string textureStr = query.GetOne("texture_id");
string format = query.GetOne("format");
//m_log.DebugFormat("[GETTEXTURE]: called {0}", textureStr);
if (m_assetService == null)
{
m_log.Error("[GETTEXTURE]: Cannot fetch texture " + textureStr + " without an asset service");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return null;
}
UUID textureID;
if (!String.IsNullOrEmpty(textureStr) && UUID.TryParse(textureStr, out textureID))
{
// m_log.DebugFormat("[GETTEXTURE]: Received request for texture id {0}", textureID);
string[] formats;
if (!string.IsNullOrEmpty(format))
{
formats = new string[1] { format.ToLower() };
}
else
{
formats = WebUtil.GetPreferredImageTypes(httpRequest.Headers.Get("Accept"));
if (formats.Length == 0)
formats = new string[1] { DefaultFormat }; // default
}
// OK, we have an array with preferred formats, possibly with only one entry
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
foreach (string f in formats)
{
if (FetchTexture(httpRequest, httpResponse, textureID, f))
break;
}
}
else
{
m_log.Warn("[GETTEXTURE]: Failed to parse a texture_id from GetTexture request: " + httpRequest.Url);
}
// m_log.DebugFormat(
// "[GETTEXTURE]: For texture {0} sending back response {1}, data length {2}",
// textureID, httpResponse.StatusCode, httpResponse.ContentLength);
return null;
}
/// <summary>
///
/// </summary>
/// <param name="httpRequest"></param>
/// <param name="httpResponse"></param>
/// <param name="textureID"></param>
/// <param name="format"></param>
/// <returns>False for "caller try another codec"; true otherwise</returns>
private bool FetchTexture(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID textureID, string format)
{
// m_log.DebugFormat("[GETTEXTURE]: {0} with requested format {1}", textureID, format);
if(!String.IsNullOrEmpty(m_RedirectURL))
{
string textureUrl = m_RedirectURL + "?texture_id=" + textureID.ToString();
httpResponse.Redirect(textureUrl, HttpStatusCode.Moved);
m_log.Debug("[GETTEXTURE]: Redirecting texture request to " + textureUrl);
return true;
}
// Fetch, Misses or invalid return a 404
AssetBase texture = m_assetService.Get(textureID.ToString());
if (texture != null)
{
if (texture.Type != (sbyte)AssetType.Texture)
{
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return true;
}
if (format == DefaultFormat)
{
WriteTextureData(httpRequest, httpResponse, texture, format);
return true;
}
// need to convert format
AssetBase newTexture = new AssetBase(texture.ID + "-" + format, texture.Name, (sbyte)AssetType.Texture, texture.Metadata.CreatorID);
newTexture.Data = ConvertTextureData(texture, format);
if (newTexture.Data.Length == 0)
return false; // !!! Caller try another codec, please!
newTexture.Flags = AssetFlags.Collectable;
newTexture.Temporary = true;
newTexture.Local = true;
WriteTextureData(httpRequest, httpResponse, newTexture, format);
return true;
}
// not found
// m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return true;
}
private void WriteTextureData(IOSHttpRequest request, IOSHttpResponse response, AssetBase texture, string format)
{
string range = request.Headers.GetOne("Range");
if (!String.IsNullOrEmpty(range)) // JP2's only
{
// Range request
int start, end;
if (TryParseRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (start >= texture.Data.Length)
{
// m_log.DebugFormat(
// "[GETTEXTURE]: Client requested range for texture {0} starting at {1} but texture has end of {2}",
// texture.ID, start, texture.Data.Length);
// Stricly speaking, as per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, we should be sending back
// Requested Range Not Satisfiable (416) here. However, it appears that at least recent implementations
// of the Linden Lab viewer (3.2.1 and 3.3.4 and probably earlier), a viewer that has previously
// received a very small texture may attempt to fetch bytes from the server past the
// range of data that it received originally. Whether this happens appears to depend on whether
// the viewer's estimation of how large a request it needs to make for certain discard levels
// (http://wiki.secondlife.com/wiki/Image_System#Discard_Level_and_Mip_Mapping), chiefly discard
// level 2. If this estimate is greater than the total texture size, returning a RequestedRangeNotSatisfiable
// here will cause the viewer to treat the texture as bad and never display the full resolution
// However, if we return PartialContent (or OK) instead, the viewer will display that resolution.
// response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
// response.AddHeader("Content-Range", String.Format("bytes */{0}", texture.Data.Length));
// response.StatusCode = (int)System.Net.HttpStatusCode.OK;
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
response.ContentType = texture.Metadata.ContentType;
}
else
{
// Handle the case where no second range value was given. This is equivalent to requesting
// the rest of the entity.
if (end == -1)
end = int.MaxValue;
end = Utils.Clamp(end, 0, texture.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;
// m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
// Always return PartialContent, even if the range covered the entire data length
// We were accidentally sending back 404 before in this situation
// https://issues.apache.org/bugzilla/show_bug.cgi?id=51878 supports sending 206 even if the
// entire range is requested, and viewer 3.2.2 (and very probably earlier) seems fine with this.
//
// We also do not want to send back OK even if the whole range was satisfiable since this causes
// HTTP textures on at least Imprudence 1.4.0-beta2 to never display the final texture quality.
// if (end > maxEnd)
// response.StatusCode = (int)System.Net.HttpStatusCode.OK;
// else
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
response.ContentLength = len;
response.ContentType = texture.Metadata.ContentType;
response.AddHeader("Content-Range", String.Format("bytes {0}-{1}/{2}", start, end, texture.Data.Length));
response.RawBuffer = texture.Data;
response.RawBufferStart = start;
response.RawBufferLen = len;
}
}
else
{
m_log.Warn("[GETTEXTURE]: Malformed Range header: " + range);
response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
}
}
else // JP2's or other formats
{
// Full content request
response.StatusCode = (int)System.Net.HttpStatusCode.OK;
response.ContentLength = texture.Data.Length;
if (format == DefaultFormat)
response.ContentType = texture.Metadata.ContentType;
else
response.ContentType = "image/" + format;
response.RawBuffer = texture.Data;
response.RawBufferStart = 0;
response.RawBufferLen = texture.Data.Length;
}
// if (response.StatusCode < 200 || response.StatusCode > 299)
// m_log.WarnFormat(
// "[GETTEXTURE]: For texture {0} requested range {1} responded {2} with content length {3} (actual {4})",
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
// else
// m_log.DebugFormat(
// "[GETTEXTURE]: For texture {0} requested range {1} responded {2} with content length {3} (actual {4})",
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
}
/// <summary>
/// Parse a range header.
/// </summary>
/// <remarks>
/// As per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,
/// this obeys range headers with two values (e.g. 533-4165) and no second value (e.g. 533-).
/// Where there is no value, -1 is returned.
/// FIXME: Need to cover the case where only a second value is specified (e.g. -4165), probably by returning -1
/// for start.</remarks>
/// <returns></returns>
/// <param name='header'></param>
/// <param name='start'>Start of the range. Undefined if this was not a number.</param>
/// <param name='end'>End of the range. Will be -1 if no end specified. Undefined if there was a raw string but this was not a number.</param>
private bool TryParseRange(string header, out int start, out int end)
{
start = end = 0;
if (header.StartsWith("bytes="))
{
string[] rangeValues = header.Substring(6).Split('-');
if (rangeValues.Length == 2)
{
if (!Int32.TryParse(rangeValues[0], out start))
return false;
string rawEnd = rangeValues[1];
if (rawEnd.Length == 0)
{
end = -1;
return true;
}
else if (Int32.TryParse(rawEnd, out end))
{
return true;
}
}
}
start = end = 0;
return false;
}
private byte[] ConvertTextureData(AssetBase texture, string format)
{
m_log.DebugFormat("[GETTEXTURE]: Converting texture {0} to {1}", texture.ID, format);
byte[] data = Array.Empty<byte>();
MemoryStream imgstream = new MemoryStream();
Bitmap mTexture = null;
ManagedImage managedImage = null;
Image image = null;
try
{
// Taking our jpeg2000 data, decoding it, then saving it to a byte array with regular data
// Decode image to System.Drawing.Image
if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image) && image != null)
{
// Save to bitmap
mTexture = new Bitmap(image);
using(EncoderParameters myEncoderParameters = new EncoderParameters())
{
myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,95L);
// Save bitmap to stream
ImageCodecInfo codec = GetEncoderInfo("image/" + format);
if (codec != null)
{
mTexture.Save(imgstream, codec, myEncoderParameters);
// Write the stream to a byte array for output
data = imgstream.ToArray();
}
else
m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
}
}
}
catch (Exception e)
{
m_log.WarnFormat("[GETTEXTURE]: Unable to convert texture {0} to {1}: {2}", texture.ID, format, e.Message);
}
finally
{
// Reclaim memory, these are unmanaged resources
// If we encountered an exception, one or more of these will be null
if (mTexture != null)
mTexture.Dispose();
if (image != null)
image.Dispose();
if(managedImage != null)
managedImage.Clear();
if (imgstream != null)
imgstream.Dispose();
}
return data;
}
// From msdn
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (int j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
}

View File

@@ -33,7 +33,7 @@ using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
/*
namespace OpenSim.Capabilities.Handlers
{
public class GetTextureServerConnector : ServiceConnector
@@ -53,7 +53,7 @@ namespace OpenSim.Capabilities.Handlers
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
if (assetService.Length == 0)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
@@ -64,10 +64,10 @@ namespace OpenSim.Capabilities.Handlers
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
string rurl = serverConfig.GetString("GetTextureRedirectURL");
;
server.AddStreamHandler(
new GetTextureHandler("/CAPS/GetTexture/" */ /*+ UUID.Random() */ /*, m_AssetService, "GetTexture", null, rurl));
new GetTextureRobustHandler("/CAPS/GetTexture", m_AssetService, "GetTexture", null, rurl));
}
}
}
*/

View File

@@ -2,7 +2,7 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Capabilities.Handlers")]
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -25,9 +25,9 @@ using System.Runtime.InteropServices;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.8.2.*")]
[assembly: AssemblyVersion(OpenSim.VersionInfo.AssemblyVersionNumber)]

View File

@@ -1,188 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class UploadBakedTextureHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Caps m_HostCapsObj;
private IAssetService m_assetService;
private bool m_persistBakedTextures;
public UploadBakedTextureHandler(Caps caps, IAssetService assetService, bool persistBakedTextures)
{
m_HostCapsObj = caps;
m_assetService = assetService;
m_persistBakedTextures = persistBakedTextures;
}
/// <summary>
/// Handle a request from the client for a Uri to upload a baked texture.
/// </summary>
/// <param name="request"></param>
/// <param name="path"></param>
/// <param name="param"></param>
/// <param name="httpRequest"></param>
/// <param name="httpResponse"></param>
/// <returns>The upload response if the request is successful, null otherwise.</returns>
public string UploadBakedTexture(
string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
try
{
string capsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath;
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
BakedTextureUploader uploader =
new BakedTextureUploader(capsBase + uploaderPath, m_HostCapsObj.HttpListener, m_HostCapsObj.AgentID);
uploader.OnUpLoad += BakedTextureUploaded;
m_HostCapsObj.HttpListener.AddStreamHandler(
new BinaryStreamHandler(
"POST", capsBase + uploaderPath, uploader.uploaderCaps, "UploadBakedTexture", null));
string protocol = "http://";
if (m_HostCapsObj.SSLCaps)
protocol = "https://";
string uploaderURL = protocol + m_HostCapsObj.HostName + ":" +
m_HostCapsObj.Port.ToString() + capsBase + uploaderPath;
LLSDAssetUploadResponse uploadResponse = new LLSDAssetUploadResponse();
uploadResponse.uploader = uploaderURL;
uploadResponse.state = "upload";
return LLSDHelpers.SerialiseLLSDReply(uploadResponse);
}
catch (Exception e)
{
m_log.ErrorFormat("[UPLOAD BAKED TEXTURE HANDLER]: {0}{1}", e.Message, e.StackTrace);
}
return null;
}
/// <summary>
/// Called when a baked texture has been successfully uploaded by a client.
/// </summary>
/// <param name="assetID"></param>
/// <param name="data"></param>
private void BakedTextureUploaded(UUID assetID, byte[] data)
{
m_log.DebugFormat("[UPLOAD BAKED TEXTURE HANDLER]: Received baked texture {0}", assetID.ToString());
AssetBase asset;
asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_HostCapsObj.AgentID.ToString());
asset.Data = data;
asset.Temporary = true;
asset.Local = !m_persistBakedTextures; // Local assets aren't persisted, non-local are
m_assetService.Store(asset);
}
}
class BakedTextureUploader
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public event Action<UUID, byte[]> OnUpLoad;
private string uploaderPath = String.Empty;
private UUID newAssetID;
private IHttpServer httpListener;
private UUID AgentId = UUID.Zero;
public BakedTextureUploader(string path, IHttpServer httpServer, UUID uUID)
{
newAssetID = UUID.Random();
uploaderPath = path;
httpListener = httpServer;
AgentId = uUID;
// m_log.InfoFormat("[CAPS] baked texture upload starting for {0}",newAssetID);
}
/// <summary>
/// Handle raw uploaded baked texture data.
/// </summary>
/// <param name="data"></param>
/// <param name="path"></param>
/// <param name="param"></param>
/// <returns></returns>
public string uploaderCaps(byte[] data, string path, string param)
{
Action<UUID, byte[]> handlerUpLoad = OnUpLoad;
// Don't do this asynchronously, otherwise it's possible for the client to send set appearance information
// on another thread which might send out avatar updates before the asset has been put into the asset
// service.
if (handlerUpLoad != null)
handlerUpLoad(newAssetID, data);
string res = String.Empty;
LLSDAssetUploadComplete uploadComplete = new LLSDAssetUploadComplete();
uploadComplete.new_asset = newAssetID.ToString();
uploadComplete.new_inventory_item = UUID.Zero;
uploadComplete.state = "complete";
res = LLSDHelpers.SerialiseLLSDReply(uploadComplete);
httpListener.RemoveStreamHandler("POST", uploaderPath);
// m_log.DebugFormat("[BAKED TEXTURE UPLOADER]: baked texture upload completed for {0}", newAssetID);
return res;
}
}
}

View File

@@ -1,76 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class UploadBakedTextureServerConnector : ServiceConnector
{
private IAssetService m_AssetService;
private string m_ConfigName = "CapsService";
public UploadBakedTextureServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
m_AssetService =
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
if (m_AssetService == null)
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
// NEED TO FIX THIS
OpenSim.Framework.Capabilities.Caps caps = new OpenSim.Framework.Capabilities.Caps(server, "", server.Port, "", UUID.Zero, "");
server.AddStreamHandler(new RestStreamHandler(
"POST",
"/CAPS/UploadBakedTexture/",
new UploadBakedTextureHandler(caps, m_AssetService, true).UploadBakedTexture,
"UploadBakedTexture",
"Upload Baked Texture Capability"));
}
}
}

View File

@@ -1,438 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class WebFetchInvDescHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IInventoryService m_InventoryService;
private ILibraryService m_LibraryService;
// private object m_fetchLock = new Object();
public WebFetchInvDescHandler(IInventoryService invService, ILibraryService libService)
{
m_InventoryService = invService;
m_LibraryService = libService;
}
public string FetchInventoryDescendentsRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// lock (m_fetchLock)
// {
// m_log.DebugFormat("[WEB FETCH INV DESC HANDLER]: Received request {0}", request);
// nasty temporary hack here, the linden client falsely
// identifies the uuid 00000000-0000-0000-0000-000000000000
// as a string which breaks us
//
// correctly mark it as a uuid
//
request = request.Replace("<string>00000000-0000-0000-0000-000000000000</string>", "<uuid>00000000-0000-0000-0000-000000000000</uuid>");
// another hack <integer>1</integer> results in a
// System.ArgumentException: Object type System.Int32 cannot
// be converted to target type: System.Boolean
//
request = request.Replace("<key>fetch_folders</key><integer>0</integer>", "<key>fetch_folders</key><boolean>0</boolean>");
request = request.Replace("<key>fetch_folders</key><integer>1</integer>", "<key>fetch_folders</key><boolean>1</boolean>");
Hashtable hash = new Hashtable();
try
{
hash = (Hashtable)LLSD.LLSDDeserialize(Utils.StringToBytes(request));
}
catch (LLSD.LLSDParseException e)
{
m_log.ErrorFormat("[WEB FETCH INV DESC HANDLER]: Fetch error: {0}{1}" + e.Message, e.StackTrace);
m_log.Error("Request: " + request);
}
ArrayList foldersrequested = (ArrayList)hash["folders"];
string response = "";
for (int i = 0; i < foldersrequested.Count; i++)
{
string inventoryitemstr = "";
Hashtable inventoryhash = (Hashtable)foldersrequested[i];
LLSDFetchInventoryDescendents llsdRequest = new LLSDFetchInventoryDescendents();
try
{
LLSDHelpers.DeserialiseOSDMap(inventoryhash, llsdRequest);
}
catch (Exception e)
{
m_log.Debug("[WEB FETCH INV DESC HANDLER]: caught exception doing OSD deserialize" + e);
}
LLSDInventoryDescendents reply = FetchInventoryReply(llsdRequest);
inventoryitemstr = LLSDHelpers.SerialiseLLSDReply(reply);
inventoryitemstr = inventoryitemstr.Replace("<llsd><map><key>folders</key><array>", "");
inventoryitemstr = inventoryitemstr.Replace("</array></map></llsd>", "");
response += inventoryitemstr;
}
if (response.Length == 0)
{
// Ter-guess: If requests fail a lot, the client seems to stop requesting descendants.
// Therefore, I'm concluding that the client only has so many threads available to do requests
// and when a thread stalls.. is stays stalled.
// Therefore we need to return something valid
response = "<llsd><map><key>folders</key><array /></map></llsd>";
}
else
{
response = "<llsd><map><key>folders</key><array>" + response + "</array></map></llsd>";
}
// m_log.DebugFormat("[WEB FETCH INV DESC HANDLER]: Replying to CAPS fetch inventory request");
//m_log.Debug("[WEB FETCH INV DESC HANDLER] "+response);
return response;
// }
}
/// <summary>
/// Construct an LLSD reply packet to a CAPS inventory request
/// </summary>
/// <param name="invFetch"></param>
/// <returns></returns>
private LLSDInventoryDescendents FetchInventoryReply(LLSDFetchInventoryDescendents invFetch)
{
LLSDInventoryDescendents reply = new LLSDInventoryDescendents();
LLSDInventoryFolderContents contents = new LLSDInventoryFolderContents();
contents.agent_id = invFetch.owner_id;
contents.owner_id = invFetch.owner_id;
contents.folder_id = invFetch.folder_id;
reply.folders.Array.Add(contents);
InventoryCollection inv = new InventoryCollection();
inv.Folders = new List<InventoryFolderBase>();
inv.Items = new List<InventoryItemBase>();
int version = 0;
int descendents = 0;
inv
= Fetch(
invFetch.owner_id, invFetch.folder_id, invFetch.owner_id,
invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order, out version, out descendents);
if (inv != null && inv.Folders != null)
{
foreach (InventoryFolderBase invFolder in inv.Folders)
{
contents.categories.Array.Add(ConvertInventoryFolder(invFolder));
}
descendents += inv.Folders.Count;
}
if (inv != null && inv.Items != null)
{
foreach (InventoryItemBase invItem in inv.Items)
{
contents.items.Array.Add(ConvertInventoryItem(invItem));
}
}
contents.descendents = descendents;
contents.version = version;
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Replying to request for folder {0} (fetch items {1}, fetch folders {2}) with {3} items and {4} folders for agent {5}",
// invFetch.folder_id,
// invFetch.fetch_items,
// invFetch.fetch_folders,
// contents.items.Array.Count,
// contents.categories.Array.Count,
// invFetch.owner_id);
return reply;
}
/// <summary>
/// Handle the caps inventory descendents fetch.
/// </summary>
/// <param name="agentID"></param>
/// <param name="folderID"></param>
/// <param name="ownerID"></param>
/// <param name="fetchFolders"></param>
/// <param name="fetchItems"></param>
/// <param name="sortOrder"></param>
/// <param name="version"></param>
/// <returns>An empty InventoryCollection if the inventory look up failed</returns>
private InventoryCollection Fetch(
UUID agentID, UUID folderID, UUID ownerID,
bool fetchFolders, bool fetchItems, int sortOrder, out int version, out int descendents)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Fetching folders ({0}), items ({1}) from {2} for agent {3}",
// fetchFolders, fetchItems, folderID, agentID);
// FIXME MAYBE: We're not handling sortOrder!
version = 0;
descendents = 0;
InventoryFolderImpl fold;
if (m_LibraryService != null && m_LibraryService.LibraryRootFolder != null && agentID == m_LibraryService.LibraryRootFolder.Owner)
{
if ((fold = m_LibraryService.LibraryRootFolder.FindFolder(folderID)) != null)
{
InventoryCollection ret = new InventoryCollection();
ret.Folders = new List<InventoryFolderBase>();
ret.Items = fold.RequestListOfItems();
descendents = ret.Folders.Count + ret.Items.Count;
return ret;
}
}
InventoryCollection contents = new InventoryCollection();
if (folderID != UUID.Zero)
{
contents = m_InventoryService.GetFolderContent(agentID, folderID);
InventoryFolderBase containingFolder = new InventoryFolderBase();
containingFolder.ID = folderID;
containingFolder.Owner = agentID;
containingFolder = m_InventoryService.GetFolder(containingFolder);
if (containingFolder != null)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Retrieved folder {0} {1} for agent id {2}",
// containingFolder.Name, containingFolder.ID, agentID);
version = containingFolder.Version;
if (fetchItems)
{
List<InventoryItemBase> itemsToReturn = contents.Items;
List<InventoryItemBase> originalItems = new List<InventoryItemBase>(itemsToReturn);
// descendents must only include the links, not the linked items we add
descendents = originalItems.Count;
// Add target items for links in this folder before the links themselves.
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.Link)
{
InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
itemsToReturn.Insert(0, linkedItem);
}
}
// Now scan for folder links and insert the items they target and those links at the head of the return data
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.LinkFolder)
{
InventoryCollection linkedFolderContents = m_InventoryService.GetFolderContent(ownerID, item.AssetID);
List<InventoryItemBase> links = linkedFolderContents.Items;
itemsToReturn.InsertRange(0, links);
foreach (InventoryItemBase link in linkedFolderContents.Items)
{
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (link != null)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3}",
// link.Name, (AssetType)link.AssetType, item.AssetID, containingFolder.Name);
InventoryItemBase linkedItem
= m_InventoryService.GetItem(new InventoryItemBase(link.AssetID));
if (linkedItem != null)
itemsToReturn.Insert(0, linkedItem);
}
}
}
}
}
// foreach (InventoryItemBase item in contents.Items)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Returning item {0}, type {1}, parent {2} in {3} {4}",
// item.Name, (AssetType)item.AssetType, item.Folder, containingFolder.Name, containingFolder.ID);
// }
// =====
//
// foreach (InventoryItemBase linkedItem in linkedItemsToAdd)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Inserted linked item {0} for link in folder {1} for agent {2}",
// linkedItem.Name, folderID, agentID);
//
// contents.Items.Add(linkedItem);
// }
//
// // If the folder requested contains links, then we need to send those folders first, otherwise the links
// // will be broken in the viewer.
// HashSet<UUID> linkedItemFolderIdsToSend = new HashSet<UUID>();
// foreach (InventoryItemBase item in contents.Items)
// {
// if (item.AssetType == (int)AssetType.Link)
// {
// InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
//
// // Take care of genuinely broken links where the target doesn't exist
// // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// // rather than having to keep track of every folder requested in the recursion.
// if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
// {
// // We don't need to send the folder if source and destination of the link are in the same
// // folder.
// if (linkedItem.Folder != containingFolder.ID)
// linkedItemFolderIdsToSend.Add(linkedItem.Folder);
// }
// }
// }
//
// foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Recursively fetching folder {0} linked by item in folder {1} for agent {2}",
// linkedItemFolderId, folderID, agentID);
//
// int dummyVersion;
// InventoryCollection linkedCollection
// = Fetch(
// agentID, linkedItemFolderId, ownerID, fetchFolders, fetchItems, sortOrder, out dummyVersion);
//
// InventoryFolderBase linkedFolder = new InventoryFolderBase(linkedItemFolderId);
// linkedFolder.Owner = agentID;
// linkedFolder = m_InventoryService.GetFolder(linkedFolder);
//
//// contents.Folders.AddRange(linkedCollection.Folders);
//
// contents.Folders.Add(linkedFolder);
// contents.Items.AddRange(linkedCollection.Items);
// }
// }
}
}
else
{
// Lost items don't really need a version
version = 1;
}
return contents;
}
/// <summary>
/// Convert an internal inventory folder object into an LLSD object.
/// </summary>
/// <param name="invFolder"></param>
/// <returns></returns>
private LLSDInventoryFolder ConvertInventoryFolder(InventoryFolderBase invFolder)
{
LLSDInventoryFolder llsdFolder = new LLSDInventoryFolder();
llsdFolder.folder_id = invFolder.ID;
llsdFolder.parent_id = invFolder.ParentID;
llsdFolder.name = invFolder.Name;
llsdFolder.type = invFolder.Type;
llsdFolder.preferred_type = -1;
return llsdFolder;
}
/// <summary>
/// Convert an internal inventory item object into an LLSD object.
/// </summary>
/// <param name="invItem"></param>
/// <returns></returns>
private LLSDInventoryItem ConvertInventoryItem(InventoryItemBase invItem)
{
LLSDInventoryItem llsdItem = new LLSDInventoryItem();
llsdItem.asset_id = invItem.AssetID;
llsdItem.created_at = invItem.CreationDate;
llsdItem.desc = invItem.Description;
llsdItem.flags = ((int)invItem.Flags) & 0xff;
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions;
llsdItem.permissions.everyone_mask = (int)invItem.EveryOnePermissions;
llsdItem.permissions.group_id = invItem.GroupID;
llsdItem.permissions.group_mask = (int)invItem.GroupPermissions;
llsdItem.permissions.is_owner_group = invItem.GroupOwned;
llsdItem.permissions.next_owner_mask = (int)invItem.NextPermissions;
llsdItem.permissions.owner_id = invItem.Owner;
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
llsdItem.sale_info.sale_type = invItem.SaleType;
return llsdItem;
}
}
}

View File

@@ -27,6 +27,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
@@ -83,6 +84,8 @@ namespace OpenSim.Framework.Capabilities
{
using (XmlTextReader reader = new XmlTextReader(st))
{
reader.DtdProcessing = DtdProcessing.Ignore;
reader.Read();
SkipWS(reader);
@@ -107,17 +110,17 @@ namespace OpenSim.Framework.Capabilities
/// <returns></returns>
public static byte[] LLSDSerialize(object obj)
{
StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);
writer.Formatting = Formatting.None;
using(StringWriter sw = new StringWriter())
using(XmlTextWriter writer = new XmlTextWriter(sw))
{
writer.Formatting = Formatting.None;
writer.WriteStartElement(String.Empty, "llsd", String.Empty);
LLSDWriteOne(writer, obj);
writer.WriteEndElement();
writer.Close();
return Util.UTF8.GetBytes(sw.ToString());
writer.WriteStartElement(string.Empty, "llsd", string.Empty);
LLSDWriteOne(writer, obj);
writer.WriteEndElement();
writer.Flush();
return Util.UTF8.GetBytes(sw.ToString());
}
}
/// <summary>
@@ -129,33 +132,32 @@ namespace OpenSim.Framework.Capabilities
{
if (obj == null)
{
writer.WriteStartElement(String.Empty, "undef", String.Empty);
writer.WriteStartElement(string.Empty, "undef", string.Empty);
writer.WriteEndElement();
return;
}
if (obj is string)
if (obj is string s)
{
writer.WriteStartElement(String.Empty, "string", String.Empty);
writer.WriteString((string) obj);
writer.WriteStartElement(string.Empty, "string", string.Empty);
writer.WriteString(s);
writer.WriteEndElement();
}
else if (obj is int)
{
writer.WriteStartElement(String.Empty, "integer", String.Empty);
writer.WriteStartElement(string.Empty, "integer", string.Empty);
writer.WriteString(obj.ToString());
writer.WriteEndElement();
}
else if (obj is double)
else if (obj is double || obj is float)
{
writer.WriteStartElement(String.Empty, "real", String.Empty);
writer.WriteStartElement(string.Empty, "real", string.Empty);
writer.WriteString(obj.ToString());
writer.WriteEndElement();
}
else if (obj is bool)
else if (obj is bool b)
{
bool b = (bool) obj;
writer.WriteStartElement(String.Empty, "boolean", String.Empty);
writer.WriteStartElement(string.Empty, "boolean", string.Empty);
writer.WriteString(b ? "1" : "0");
writer.WriteEndElement();
}
@@ -163,56 +165,63 @@ namespace OpenSim.Framework.Capabilities
{
throw new Exception("ulong in LLSD is currently not implemented, fix me!");
}
else if (obj is UUID)
else if (obj is UUID u)
{
UUID u = (UUID) obj;
writer.WriteStartElement(String.Empty, "uuid", String.Empty);
writer.WriteStartElement(string.Empty, "uuid", string.Empty);
writer.WriteString(u.ToString());
writer.WriteEndElement();
}
else if (obj is Hashtable)
else if (obj is Hashtable h)
{
Hashtable h = obj as Hashtable;
writer.WriteStartElement(String.Empty, "map", String.Empty);
foreach (string key in h.Keys)
writer.WriteStartElement(string.Empty, "map", string.Empty);
foreach (DictionaryEntry de in h)
{
writer.WriteStartElement(String.Empty, "key", String.Empty);
writer.WriteString(key);
writer.WriteStartElement(string.Empty, "key", string.Empty);
writer.WriteString((string)de.Key);
writer.WriteEndElement();
LLSDWriteOne(writer, h[key]);
LLSDWriteOne(writer, de.Value);
}
writer.WriteEndElement();
}
else if (obj is ArrayList)
else if (obj is Dictionary<string,object> dict)
{
ArrayList a = obj as ArrayList;
writer.WriteStartElement(String.Empty, "array", String.Empty);
writer.WriteStartElement(string.Empty, "map", string.Empty);
foreach (KeyValuePair<string,object> kvp in dict)
{
writer.WriteStartElement(string.Empty, "key", string.Empty);
writer.WriteString(kvp.Key);
writer.WriteEndElement();
LLSDWriteOne(writer, kvp.Value);
}
writer.WriteEndElement();
}
else if (obj is ArrayList a)
{
writer.WriteStartElement(string.Empty, "array", string.Empty);
foreach (object item in a)
{
LLSDWriteOne(writer, item);
}
writer.WriteEndElement();
}
else if (obj is byte[])
else if (obj is List<object> lsto)
{
byte[] b = obj as byte[];
writer.WriteStartElement(String.Empty, "binary", String.Empty);
writer.WriteStartElement(string.Empty, "array", string.Empty);
foreach (object item in lsto)
{
LLSDWriteOne(writer, item);
}
writer.WriteEndElement();
}
else if (obj is byte[] bytes)
{
writer.WriteStartElement(string.Empty, "binary", string.Empty);
writer.WriteStartAttribute(String.Empty, "encoding", String.Empty);
writer.WriteString("base64");
writer.WriteEndAttribute();
//// Calculate the length of the base64 output
//long length = (long)(4.0d * b.Length / 3.0d);
//if (length % 4 != 0) length += 4 - (length % 4);
//// Create the char[] for base64 output and fill it
//char[] tmp = new char[length];
//int i = Convert.ToBase64CharArray(b, 0, b.Length, tmp, 0);
//writer.WriteString(new String(tmp));
writer.WriteString(Convert.ToBase64String(b));
writer.WriteString(Convert.ToBase64String(bytes));
writer.WriteEndElement();
}
else
@@ -453,7 +462,7 @@ namespace OpenSim.Framework.Capabilities
private static string GetSpaces(int count)
{
StringBuilder b = new StringBuilder();
for (int i = 0; i < count; i++) b.Append(" ");
for (int i = 0; i < count; i++) b.Append(' ');
return b.ToString();
}
@@ -463,6 +472,7 @@ namespace OpenSim.Framework.Capabilities
/// <param name="obj"></param>
/// <param name="indent"></param>
/// <returns></returns>
/*
public static String LLSDDump(object obj, int indent)
{
if (obj == null)
@@ -566,7 +576,7 @@ namespace OpenSim.Framework.Capabilities
endPos = FindEnd(llsd, 1);
if (Double.TryParse(llsd.Substring(1, endPos - 1), NumberStyles.Float,
Utils.EnUsCulture.NumberFormat, out value))
Culture.NumberFormatInfo, out value))
return value;
else
throw new LLSDParseException("Failed to parse double value type");
@@ -657,7 +667,7 @@ namespace OpenSim.Framework.Capabilities
throw new Exception("Unknown value type");
}
}
*/
private static int FindEnd(string llsd, int start)
{
int end = llsd.IndexOfAny(new char[] {',', ']', '}'});

View File

@@ -40,6 +40,10 @@ namespace OpenSim.Framework.Capabilities
public string state = String.Empty;
public LLSDAssetUploadError error = null;
//public bool success = false;
public int new_next_owner_mask = 0;
public int new_group_mask = 0;
public int new_everyone_mask = 0;
public int inventory_item_flags = 0;
public LLSDAssetUploadComplete()
{

View File

@@ -78,7 +78,7 @@ namespace OpenSim.Framework.Capabilities
public string state;
public int upload_price;
public string rsvp;
public LLSDNewFileAngentInventoryVariablePriceReplyResponse()
{
state = "confirm_upload";

View File

@@ -42,7 +42,7 @@ namespace OpenSim.Framework.Capabilities
{
public string username;
public string display_name;
//'display_name_next_update':d"1970-01-01T00:00:00Z"
//'display_name_next_update':d"1970-01-01T00:00:00Z"
public string legacy_first_name;
public string legacy_last_name;
public UUID id;

View File

@@ -1,68 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDEnvironmentRequest
{
public UUID messageID;
public UUID regionID;
}
[OSDMap]
public class LLSDEnvironmentSetResponse
{
public UUID regionID;
public UUID messageID;
public Boolean success;
public String fail_reason;
}
public class EnvironmentSettings
{
/// <summary>
/// generates a empty llsd settings response for viewer
/// </summary>
/// <param name="messageID">the message UUID</param>
/// <param name="regionID">the region UUID</param>
public static string EmptySettings(UUID messageID, UUID regionID)
{
OSDArray arr = new OSDArray();
LLSDEnvironmentRequest msg = new LLSDEnvironmentRequest();
msg.messageID = messageID;
msg.regionID = regionID;
arr.Array.Add(msg);
return LLSDHelpers.SerialiseLLSDReply(arr);
}
}
}

View File

@@ -30,6 +30,7 @@ using System.Collections;
using System.IO;
using System.Reflection;
using System.Xml;
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
@@ -40,17 +41,32 @@ namespace OpenSim.Framework.Capabilities
public static string SerialiseLLSDReply(object obj)
{
StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);
writer.Formatting = Formatting.None;
writer.WriteStartElement(String.Empty, "llsd", String.Empty);
SerializeOSDType(writer, obj);
writer.WriteEndElement();
writer.Close();
using(StringWriter sw = new StringWriter())
using(XmlTextWriter writer = new XmlTextWriter(sw))
{
writer.Formatting = Formatting.None;
writer.WriteStartElement(String.Empty, "llsd", String.Empty);
SerializeOSDType(writer, obj);
writer.WriteEndElement();
writer.Flush();
//m_log.DebugFormat("[LLSD Helpers]: Generated serialized LLSD reply {0}", sw.ToString());
return sw.ToString();
return sw.ToString();
}
}
public static string SerialiseLLSDReplyNoHeader(object obj)
{
using(StringWriter sw = new StringWriter())
using(XmlTextWriter writer = new XmlTextWriter(sw))
{
writer.Formatting = Formatting.None;
SerializeOSDType(writer, obj);
writer.Flush();
//m_log.DebugFormat("[LLSD Helpers]: Generated serialized LLSD reply {0}", sw.ToString());
return sw.ToString();
}
}
private static void SerializeOSDType(XmlTextWriter writer, object obj)
@@ -157,6 +173,22 @@ namespace OpenSim.Framework.Capabilities
// the LLSD map/array types in the array need to be deserialised
// but first we need to know the right class to deserialise them into.
}
else if(enumerator.Value is Boolean && field.FieldType == typeof(int) )
{
int i = (bool)enumerator.Value ? 1 : 0;
field.SetValue(obj, i);
}
else if(field.FieldType == typeof(bool) && enumerator.Value is int)
{
bool b = (int)enumerator.Value != 0;
field.SetValue(obj, b);
}
else if(field.FieldType == typeof(UUID) && enumerator.Value is string)
{
UUID u;
UUID.TryParse((string)enumerator.Value, out u);
field.SetValue(obj, u);
}
else
{
field.SetValue(obj, enumerator.Value);

View File

@@ -37,5 +37,6 @@ namespace OpenSim.Framework.Capabilities
public string name;
public int type;
public int preferred_type;
public int version;
}
}

View File

@@ -87,12 +87,12 @@ namespace OpenSim.Framework.Capabilities
[OSDMap]
public class LLSDInventoryFolderContents
{
public UUID agent_id;
public UUID agent_id;
public int descendents;
public UUID folder_id;
public UUID folder_id;
public OSDArray categories = new OSDArray();
public OSDArray items = new OSDArray();
public UUID owner_id;
public UUID owner_id;
public int version;
}

View File

@@ -1,51 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System.Collections;
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDParcelVoiceInfoResponse
{
public int parcel_local_id;
public string region_name;
public Hashtable voice_credentials;
public LLSDParcelVoiceInfoResponse()
{
}
public LLSDParcelVoiceInfoResponse(string region, int localID, Hashtable creds)
{
region_name = region;
parcel_local_id = localID;
voice_credentials = creds;
}
}
}

View File

@@ -1,42 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
[LLSDType("MAP")]
public class LLSDRemoteParcelResponse
{
public UUID parcel_id;
public LLSDRemoteParcelResponse()
{
}
}
}

View File

@@ -25,10 +25,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.IO;
using System.Text;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
namespace OpenSim.Framework.Capabilities
@@ -61,6 +60,9 @@ namespace OpenSim.Framework.Capabilities
// OpenMetaverse.StructuredData.LLSDParser.DeserializeXml(new XmlTextReader(request));
Hashtable hash = (Hashtable) LLSD.LLSDDeserialize(request);
if(hash == null)
return Array.Empty<byte>();
TRequest llsdRequest = new TRequest();
LLSDHelpers.DeserialiseOSDMap(hash, llsdRequest);

View File

@@ -1,50 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using OpenMetaverse;
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDTaskScriptUpdate
{
/// <summary>
/// The item containing the script to update
/// </summary>
public UUID item_id;
/// <summary>
/// The task containing the script
/// </summary>
public UUID task_id;
/// <summary>
/// Signals whether the script is currently active
/// </summary>
public int is_script_running;
}
}

View File

@@ -1,57 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
namespace OpenSim.Framework.Capabilities
{
[OSDMap]
public class LLSDVoiceAccountResponse
{
public string username;
public string password;
public string voice_sip_uri_hostname;
public string voice_account_server_name;
public LLSDVoiceAccountResponse()
{
}
public LLSDVoiceAccountResponse(string user, string pass)
{
username = user;
password = pass;
}
public LLSDVoiceAccountResponse(string user, string pass, string sipUriHost, string accountServer)
{
username = user;
password = pass;
voice_sip_uri_hostname = sipUriHost;
voice_account_server_name = accountServer;
}
}
}

View File

@@ -2,7 +2,7 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Capabilities")]
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -25,7 +25,7 @@ using System.Runtime.InteropServices;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//

View File

@@ -75,15 +75,15 @@ namespace OpenSim.ConsoleClient
Requester.MakeRequest("http://"+m_Host+":"+m_Port.ToString()+"/StartSession/", String.Format("USER={0}&PASS={1}", m_User, m_Pass), LoginReply);
string pidFile = serverConfig.GetString("PIDFile", String.Empty);
while (m_Server.Running)
{
System.Threading.Thread.Sleep(500);
// MainConsole.Instance.Prompt();
MainConsole.Instance.Prompt();
}
if (pidFile != String.Empty)
string pidFile = serverConfig.GetString("PIDFile", string.Empty);
if (pidFile.Length > 0)
File.Delete(pidFile);
Environment.Exit(0);
@@ -178,7 +178,7 @@ namespace OpenSim.ConsoleClient
Requester.MakeRequest(requestUrl, requestData, ReadResponses);
return;
}
List<string> lines = new List<string>();
foreach (XmlNode part in rootNodeL[0].ChildNodes)
@@ -202,7 +202,7 @@ namespace OpenSim.ConsoleClient
string[] parts = l.Split(new char[] {':'}, 3);
if (parts.Length != 3)
continue;
if (parts[2].StartsWith("+++") || parts[2].StartsWith("-++"))
prompt = parts[2];
else
@@ -212,10 +212,10 @@ namespace OpenSim.ConsoleClient
Requester.MakeRequest(requestUrl, requestData, ReadResponses);
if (prompt.StartsWith("+++"))
MainConsole.Instance.ReadLine(prompt.Substring(3), true, true);
else if (prompt.StartsWith("-++"))
SendCommand(String.Empty, new string[] { MainConsole.Instance.ReadLine(prompt.Substring(3), false, true) });
// if (prompt.StartsWith("+++"))
MainConsole.Instance.ReadLine(prompt.Substring(0), true, true);
// else if (prompt.StartsWith("-++"))
// SendCommand(String.Empty, new string[] { MainConsole.Instance.ReadLine(prompt.Substring(3), false, true) });
}
public static void CommandReply(string requestUrl, string requestData, string replyData)

View File

@@ -2,7 +2,7 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.ConsoleClient")]
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -25,7 +25,7 @@ using System.Runtime.InteropServices;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//

View File

@@ -67,9 +67,8 @@ namespace OpenSim.ConsoleClient
{
try
{
using (Stream s = response.GetResponseStream())
using (StreamReader r = new StreamReader(s))
reply = r.ReadToEnd();
using (StreamReader r = new StreamReader(response.GetResponseStream()))
reply = r.ReadToEnd();
}
catch (System.InvalidOperationException)

View File

@@ -38,7 +38,7 @@ namespace OpenSim.Data
/// <summary>This function converts a value returned from the database in one of the
/// supported formats into a UUID. This function is not actually DBMS-specific right
/// now
///
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
@@ -47,22 +47,21 @@ namespace OpenSim.Data
if ((id == null) || (id == DBNull.Value))
return UUID.Zero;
if (id.GetType() == typeof(Guid))
Type idtype = id.GetType();
if (idtype == typeof(string))
{
UUID.TryParse((string)id, out UUID result);
return result;
}
if (idtype == typeof(Guid))
return new UUID((Guid)id);
if (id.GetType() == typeof(byte[]))
if (idtype == typeof(byte[]))
{
if (((byte[])id).Length == 0)
return UUID.Zero;
else if (((byte[])id).Length == 16)
return new UUID((byte[])id, 0);
}
else if (id.GetType() == typeof(string))
{
if (((string)id).Length == 0)
return UUID.Zero;
else if (((string)id).Length == 36)
return new UUID((string)id);
byte[] idb = (byte[])id;
return idb.Length < 16 ? UUID.Zero : new UUID(idb, 0);
}
throw new Exception("Failed to convert db value to UUID: " + id.ToString());

View File

@@ -39,7 +39,7 @@ namespace OpenSim.Data
public Dictionary<string, string> Data;
}
public interface IAvatarData
public interface IAvatarData
{
AvatarBaseData[] Get(string field, string val);
bool Store(AvatarBaseData data);

View File

@@ -46,28 +46,28 @@ namespace OpenSim.Data
/// <param name="create">If true, then an estate is created if one is not found.</param>
/// <returns></returns>
EstateSettings LoadEstateSettings(UUID regionID, bool create);
/// <summary>
/// Load estate settings for an estate ID.
/// </summary>
/// <param name="estateID"></param>
/// <returns></returns>
EstateSettings LoadEstateSettings(int estateID);
/// <summary>
/// Create a new estate.
/// Create a new estate. Zero estateID for auto increment id
/// </summary>
/// <returns>
/// A <see cref="EstateSettings"/>
/// </returns>
EstateSettings CreateNewEstate();
EstateSettings CreateNewEstate(int estateID);
/// <summary>
/// Load/Get all estate settings.
/// </summary>
/// <returns>An empty list if no estates were found.</returns>
List<EstateSettings> LoadEstateSettingsAll();
/// <summary>
/// Store estate settings.
/// </summary>
@@ -75,7 +75,7 @@ namespace OpenSim.Data
/// This is also called by EstateSettings.Save()</remarks>
/// <param name="es"></param>
void StoreEstateSettings(EstateSettings es);
/// <summary>
/// Get estate IDs.
/// </summary>
@@ -88,13 +88,13 @@ namespace OpenSim.Data
/// </summary>
/// <returns>An empty list if no estates were found.</returns>
List<int> GetEstatesByOwner(UUID ownerID);
/// <summary>
/// Get the IDs of all estates.
/// </summary>
/// <returns>An empty list if no estates were found.</returns>
List<int> GetEstatesAll();
/// <summary>
/// Link a region to an estate.
/// </summary>
@@ -102,14 +102,14 @@ namespace OpenSim.Data
/// <param name="estateID"></param>
/// <returns>true if the link succeeded, false otherwise</returns>
bool LinkRegion(UUID regionID, int estateID);
/// <summary>
/// Get the UUIDs of all the regions in an estate.
/// </summary>
/// <param name="estateID"></param>
/// <returns></returns>
List<UUID> GetRegions(int estateID);
/// <summary>
/// Delete an estate
/// </summary>

Some files were not shown because too many files have changed in this diff Show More