aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Data/SQLite/Resources/016_RegionStore.sql10
-rw-r--r--OpenSim/Framework/OpenJpeg/bio.cs300
-rw-r--r--OpenSim/Framework/OpenJpeg/fix.cs59
-rw-r--r--OpenSim/Framework/OpenJpeg/int_.cs142
-rw-r--r--OpenSim/Framework/OpenJpeg/j2k.cs318
-rw-r--r--OpenSim/Framework/OpenJpeg/openjpeg.cs733
-rw-r--r--OpenSim/Framework/OpenJpeg/pi.cs119
-rw-r--r--OpenSim/Grid/UserServer/OpenIdService.cs678
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs4
-rw-r--r--OpenSim/Region/Environment/Interfaces/IInterregionComms.cs94
-rw-r--r--OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs280
-rw-r--r--OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs172
-rw-r--r--OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs592
-rw-r--r--OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs2
-rw-r--r--OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs8
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs2
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsJoint.cs110
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs98
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs16
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs2
-rw-r--r--ThirdPartyLicenses/DotNetOpenid.txt18
22 files changed, 1950 insertions, 1809 deletions
diff --git a/OpenSim/Data/SQLite/Resources/016_RegionStore.sql b/OpenSim/Data/SQLite/Resources/016_RegionStore.sql
index 71be55b..52f160c 100644
--- a/OpenSim/Data/SQLite/Resources/016_RegionStore.sql
+++ b/OpenSim/Data/SQLite/Resources/016_RegionStore.sql
@@ -1,5 +1,5 @@
1BEGIN; 1BEGIN;
2 2
3ALTER TABLE prims ADD COLUMN VolumeDetect INTEGER NOT NULL DEFAULT 0; 3ALTER TABLE prims ADD COLUMN VolumeDetect INTEGER NOT NULL DEFAULT 0;
4 4
5COMMIT; 5COMMIT;
diff --git a/OpenSim/Framework/OpenJpeg/bio.cs b/OpenSim/Framework/OpenJpeg/bio.cs
index 4f095ad..4a5b321 100644
--- a/OpenSim/Framework/OpenJpeg/bio.cs
+++ b/OpenSim/Framework/OpenJpeg/bio.cs
@@ -1,138 +1,162 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 public static class bio 7 * * Redistributions of source code must retain the above copyright
8 { 8 * notice, this list of conditions and the following disclaimer.
9 9 * * Redistributions in binary form must reproduce the above copyright
10 public static opj_bio bio_create() 10 * notice, this list of conditions and the following disclaimer in the
11 { 11 * documentation and/or other materials provided with the distribution.
12 opj_bio bio = new opj_bio(); 12 * * Neither the name of the OpenSimulator Project nor the
13 return bio; 13 * names of its contributors may be used to endorse or promote products
14 } 14 * derived from this software without specific prior written permission.
15 15 *
16 public static void bio_destroy(opj_bio bio) 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 { 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // not needed on C# 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 } 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 public static int bio_numbytes(opj_bio bio) 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 { 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 return (bio.bp - bio.start); 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 } 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 public static void bio_init_enc(opj_bio bio, sbyte bp, int len) 26 */
27 { 27
28 bio.start = (byte)bp; 28using System;
29 bio.end = (byte)(bp + (byte)len); 29using System.Collections.Generic;
30 bio.bp = (byte)bp; 30using System.Text;
31 bio.buf = 0; 31
32 bio.ct = 8; 32namespace OpenSim.Framework.OpenJpeg
33 } 33{
34 34 public static class bio
35 public static void bio_init_dec(opj_bio bio, sbyte bp, int len) 35 {
36 { 36 public static opj_bio bio_create()
37 bio.start = (byte)bp; 37 {
38 bio.end = (byte)(bp + len); 38 opj_bio bio = new opj_bio();
39 bio.bp = (byte)bp; 39 return bio;
40 bio.buf = 0; 40 }
41 bio.ct = 0; 41
42 } 42 public static void bio_destroy(opj_bio bio)
43 43 {
44 public static void bio_write(opj_bio bio, int v, int n) 44 // not needed on C#
45 { 45 }
46 for (int i = n - 1; i >= 0; i--) 46
47 bio_putbit(bio, (v >> i) & 1); 47 public static int bio_numbytes(opj_bio bio)
48 } 48 {
49 49 return (bio.bp - bio.start);
50 public static int bio_read(opj_bio bio, int n) 50 }
51 { 51
52 int v = 0; 52 public static void bio_init_enc(opj_bio bio, sbyte bp, int len)
53 for (int i = n - 1; i >= 0; i--) 53 {
54 v += bio_getbit(bio) << i; 54 bio.start = (byte)bp;
55 55 bio.end = (byte)(bp + (byte)len);
56 return v; 56 bio.bp = (byte)bp;
57 } 57 bio.buf = 0;
58 58 bio.ct = 8;
59 public static int bio_flush(opj_bio bio) 59 }
60 { 60
61 bio.ct = 0; 61 public static void bio_init_dec(opj_bio bio, sbyte bp, int len)
62 if (bio_byteout(bio) != 0) 62 {
63 return 1; 63 bio.start = (byte)bp;
64 64 bio.end = (byte)(bp + len);
65 if (bio.ct == 7) 65 bio.bp = (byte)bp;
66 { 66 bio.buf = 0;
67 bio.ct = 0; 67 bio.ct = 0;
68 if (bio_byteout(bio) != 0) 68 }
69 return 1; 69
70 } 70 public static void bio_write(opj_bio bio, int v, int n)
71 return 0; 71 {
72 } 72 for (int i = n - 1; i >= 0; i--)
73 73 bio_putbit(bio, (v >> i) & 1);
74 public static int bio_inalign(opj_bio bio) 74 }
75 { 75
76 bio.ct = 0; 76 public static int bio_read(opj_bio bio, int n)
77 if ((bio.buf & 0xff) == 0xff) 77 {
78 { 78 int v = 0;
79 if (bio_bytein(bio) != 0) 79 for (int i = n - 1; i >= 0; i--)
80 return 1; 80 v += bio_getbit(bio) << i;
81 bio.ct = 0; 81
82 } 82 return v;
83 return 0; 83 }
84 } 84
85 85 public static int bio_flush(opj_bio bio)
86 private static int bio_bytein(opj_bio bio) 86 {
87 { 87 bio.ct = 0;
88 bio.buf = (bio.buf << 8) & 0xffff; 88 if (bio_byteout(bio) != 0)
89 bio.ct = bio.buf == 0xff00 ? 7 : 8; 89 return 1;
90 if (bio.bp >= bio.end) 90
91 return 1; 91 if (bio.ct == 7)
92 bio.buf |= bio.bp++; 92 {
93 93 bio.ct = 0;
94 return 0; 94 if (bio_byteout(bio) != 0)
95 } 95 return 1;
96 96 }
97 private static int bio_byteout(opj_bio bio) 97 return 0;
98 { 98 }
99 bio.buf = (bio.buf << 8) & 0xffff; 99
100 bio.ct = bio.buf == 0xff00 ? 7 : 8; 100 public static int bio_inalign(opj_bio bio)
101 if (bio.bp >= bio.end) 101 {
102 return 1; 102 bio.ct = 0;
103 103 if ((bio.buf & 0xff) == 0xff)
104 bio.bp = (byte)(bio.buf >> 8); 104 {
105 bio.bp++; 105 if (bio_bytein(bio) != 0)
106 return 0; 106 return 1;
107 } 107 bio.ct = 0;
108 108 }
109 private static void bio_putbit(opj_bio bio, int b) 109 return 0;
110 { 110 }
111 if (bio.ct == 0) 111
112 bio_byteout(bio); 112 private static int bio_bytein(opj_bio bio)
113 113 {
114 bio.ct--; 114 bio.buf = (bio.buf << 8) & 0xffff;
115 bio.buf |= (byte)(b << bio.ct); 115 bio.ct = bio.buf == 0xff00 ? 7 : 8;
116 116 if (bio.bp >= bio.end)
117 } 117 return 1;
118 118 bio.buf |= bio.bp++;
119 private static int bio_getbit(opj_bio bio) 119
120 { 120 return 0;
121 if (bio.ct == 0) 121 }
122 bio_bytein(bio); 122
123 bio.ct--; 123 private static int bio_byteout(opj_bio bio)
124 124 {
125 return (int)((bio.buf >> bio.ct) & 1); 125 bio.buf = (bio.buf << 8) & 0xffff;
126 } 126 bio.ct = bio.buf == 0xff00 ? 7 : 8;
127 127 if (bio.bp >= bio.end)
128 } 128 return 1;
129 129
130 public struct opj_bio 130 bio.bp = (byte)(bio.buf >> 8);
131 { 131 bio.bp++;
132 public byte start; 132 return 0;
133 public byte end; 133 }
134 public byte bp; 134
135 public uint buf; 135 private static void bio_putbit(opj_bio bio, int b)
136 public int ct; 136 {
137 } 137 if (bio.ct == 0)
138} 138 bio_byteout(bio);
139
140 bio.ct--;
141 bio.buf |= (byte)(b << bio.ct);
142 }
143
144 private static int bio_getbit(opj_bio bio)
145 {
146 if (bio.ct == 0)
147 bio_bytein(bio);
148 bio.ct--;
149
150 return (int)((bio.buf >> bio.ct) & 1);
151 }
152 }
153
154 public struct opj_bio
155 {
156 public byte start;
157 public byte end;
158 public byte bp;
159 public uint buf;
160 public int ct;
161 }
162}
diff --git a/OpenSim/Framework/OpenJpeg/fix.cs b/OpenSim/Framework/OpenJpeg/fix.cs
index 76d3159..9de0041 100644
--- a/OpenSim/Framework/OpenJpeg/fix.cs
+++ b/OpenSim/Framework/OpenJpeg/fix.cs
@@ -1,16 +1,43 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 public static class fix 7 * * Redistributions of source code must retain the above copyright
8 { 8 * notice, this list of conditions and the following disclaimer.
9 public static int fix_mul(int a, int b) 9 * * Redistributions in binary form must reproduce the above copyright
10 { 10 * notice, this list of conditions and the following disclaimer in the
11 long temp = (long)a * (long)b; 11 * documentation and/or other materials provided with the distribution.
12 temp += temp & 4096; 12 * * Neither the name of the OpenSimulator Project nor the
13 return (int)(temp >> 13); 13 * names of its contributors may be used to endorse or promote products
14 } 14 * derived from this software without specific prior written permission.
15 } 15 *
16} 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.OpenJpeg
33{
34 public static class fix
35 {
36 public static int fix_mul(int a, int b)
37 {
38 long temp = (long)a * (long)b;
39 temp += temp & 4096;
40 return (int)(temp >> 13);
41 }
42 }
43}
diff --git a/OpenSim/Framework/OpenJpeg/int_.cs b/OpenSim/Framework/OpenJpeg/int_.cs
index dc71728..07321b5 100644
--- a/OpenSim/Framework/OpenJpeg/int_.cs
+++ b/OpenSim/Framework/OpenJpeg/int_.cs
@@ -1,58 +1,84 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 public static class int_ 7 * * Redistributions of source code must retain the above copyright
8 { 8 * notice, this list of conditions and the following disclaimer.
9 public static int int_min(int a, int b) 9 * * Redistributions in binary form must reproduce the above copyright
10 { 10 * notice, this list of conditions and the following disclaimer in the
11 return a < b ? a : b; 11 * documentation and/or other materials provided with the distribution.
12 } 12 * * Neither the name of the OpenSimulator Project nor the
13 13 * names of its contributors may be used to endorse or promote products
14 public static int int_max(int a, int b) 14 * derived from this software without specific prior written permission.
15 { 15 *
16 return (a > b) ? a : b; 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 } 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 public static int int_clamp(int a, int min, int max) 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 { 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 if (a < min) 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 return min; 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 if (a > max) 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 return max; 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 return a; 26 */
27 } 27
28 28using System;
29 public static int int_abs(int a) 29using System.Collections.Generic;
30 { 30using System.Text;
31 return a < 0 ? -a : a; 31
32 } 32namespace OpenSim.Framework.OpenJpeg
33 33{
34 public static int int_ceildiv(int a, int b) 34 public static class int_
35 { 35 {
36 return (a + b - 1) / b; 36 public static int int_min(int a, int b)
37 } 37 {
38 38 return a < b ? a : b;
39 public static int int_ceildivpow2(int a, int b) 39 }
40 { 40
41 return (a + (1 << b) - 1) >> b; 41 public static int int_max(int a, int b)
42 } 42 {
43 43 return (a > b) ? a : b;
44 public static int int_floordivpow2(int a, int b) 44 }
45 { 45
46 return a >> b; 46 public static int int_clamp(int a, int min, int max)
47 } 47 {
48 48 if (a < min)
49 public static int int_floorlog2(int a) 49 return min;
50 { 50 if (a > max)
51 for (int l=0; a > 1; l++) 51 return max;
52 a >>= 1; 52
53 53 return a;
54 return 1; 54 }
55 } 55
56 56 public static int int_abs(int a)
57 } 57 {
58} 58 return a < 0 ? -a : a;
59 }
60
61 public static int int_ceildiv(int a, int b)
62 {
63 return (a + b - 1) / b;
64 }
65
66 public static int int_ceildivpow2(int a, int b)
67 {
68 return (a + (1 << b) - 1) >> b;
69 }
70
71 public static int int_floordivpow2(int a, int b)
72 {
73 return a >> b;
74 }
75
76 public static int int_floorlog2(int a)
77 {
78 for (int l=0; a > 1; l++)
79 a >>= 1;
80
81 return 1;
82 }
83 }
84}
diff --git a/OpenSim/Framework/OpenJpeg/j2k.cs b/OpenSim/Framework/OpenJpeg/j2k.cs
index f655364..8751792 100644
--- a/OpenSim/Framework/OpenJpeg/j2k.cs
+++ b/OpenSim/Framework/OpenJpeg/j2k.cs
@@ -1,125 +1,149 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 7 * * Redistributions of source code must retain the above copyright
8 public static class j2k 8 * notice, this list of conditions and the following disclaimer.
9 { 9 * * Redistributions in binary form must reproduce the above copyright
10 } 10 * notice, this list of conditions and the following disclaimer in the
11 11 * documentation and/or other materials provided with the distribution.
12 public enum J2K_STATUS 12 * * Neither the name of the OpenSimulator Project nor the
13 { 13 * names of its contributors may be used to endorse or promote products
14 J2K_STATE_MHSOC = 0x0001, /**< a SOC marker is expected */ 14 * derived from this software without specific prior written permission.
15 J2K_STATE_MHSIZ = 0x0002, /**< a SIZ marker is expected */ 15 *
16 J2K_STATE_MH = 0x0004, /**< the decoding process is in the main header */ 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 J2K_STATE_TPHSOT = 0x0008, /**< the decoding process is in a tile part header and expects a SOT marker */ 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */ 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */ 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 J2K_STATE_NEOC = 0x0040, /**< the decoding process must not expect a EOC marker because the codestream is truncated */ 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 J2K_STATE_ERR = 0x0080 /**< the decoding process has encountered an error */ 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 } 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 public enum J2K_T2_MODE 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 { 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 THRESH_CALC = 0, /** Function called in Rate allocation process*/ 26 */
27 FINAL_PASS = 1 /** Function called in Tier 2 process*/ 27
28 } 28using System;
29 29using System.Collections.Generic;
30 public struct opj_stepsize 30using System.Text;
31 { 31
32 public int expn; 32namespace OpenSim.Framework.OpenJpeg
33 public int mant; 33{
34 } 34 public static class j2k
35 35 {
36 public struct opj_tccp 36 }
37 { 37
38 public int csty; 38 public enum J2K_STATUS
39 public int numresolutions; 39 {
40 public int cblkw; 40 J2K_STATE_MHSOC = 0x0001, /**< a SOC marker is expected */
41 public int cblkh; 41 J2K_STATE_MHSIZ = 0x0002, /**< a SIZ marker is expected */
42 public int cblksty; 42 J2K_STATE_MH = 0x0004, /**< the decoding process is in the main header */
43 public int qmfbid; 43 J2K_STATE_TPHSOT = 0x0008, /**< the decoding process is in a tile part header and expects a SOT marker */
44 public int qntsty; 44 J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */
45 /// <summary> 45 J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */
46 /// don't forget to initialize 97 elements 46 J2K_STATE_NEOC = 0x0040, /**< the decoding process must not expect a EOC marker because the codestream is truncated */
47 /// </summary> 47 J2K_STATE_ERR = 0x0080 /**< the decoding process has encountered an error */
48 public opj_stepsize[] stepsizes; 48 }
49 public int numgbits; 49
50 public int roishift; 50 public enum J2K_T2_MODE
51 /// <summary> 51 {
52 /// Don't forget to initialize 33 elements 52 THRESH_CALC = 0, /** Function called in Rate allocation process*/
53 /// </summary> 53 FINAL_PASS = 1 /** Function called in Tier 2 process*/
54 public int[] prcw; 54 }
55 55
56 } 56 public struct opj_stepsize
57 57 {
58 public struct opj_tcp 58 public int expn;
59 { 59 public int mant;
60 public int first; 60 }
61 public int csty; 61
62 public PROG_ORDER prg; 62 public struct opj_tccp
63 public int numlayers; 63 {
64 public int mct; 64 public int csty;
65 /// <summary> 65 public int numresolutions;
66 /// don't forget to initialize to 100 66 public int cblkw;
67 /// </summary> 67 public int cblkh;
68 public float[] rates; 68 public int cblksty;
69 public int numpocs; 69 public int qmfbid;
70 public int POC; 70 public int qntsty;
71 /// <summary> 71 /// <summary>
72 /// Don't forget to initialize to 32 72 /// don't forget to initialize 97 elements
73 /// </summary> 73 /// </summary>
74 public opj_poc[] pocs; 74 public opj_stepsize[] stepsizes;
75 public byte ppt_data; 75 public int numgbits;
76 public byte ppt_data_first; 76 public int roishift;
77 public int ppt; 77 /// <summary>
78 public int ppt_store; 78 /// Don't forget to initialize 33 elements
79 public int ppt_len; 79 /// </summary>
80 /// <summary> 80 public int[] prcw;
81 /// Don't forget to initialize 100 elements 81 }
82 /// </summary> 82
83 public float[] distoratio; 83 public struct opj_tcp
84 public opj_tccp tccps; 84 {
85 85 public int first;
86 } 86 public int csty;
87 87 public PROG_ORDER prg;
88 public struct opj_cp 88 public int numlayers;
89 { 89 public int mct;
90 public CINEMA_MODE cinema; 90 /// <summary>
91 public int max_comp_size; 91 /// don't forget to initialize to 100
92 public int img_size; 92 /// </summary>
93 public RSIZ_CAPABILITIES rsiz; 93 public float[] rates;
94 public sbyte tp_on; 94 public int numpocs;
95 public sbyte tp_flag; 95 public int POC;
96 public int tp_pos; 96 /// <summary>
97 public int distro_alloc; 97 /// Don't forget to initialize to 32
98 public int fixed_alloc; 98 /// </summary>
99 public int fixed_quality; 99 public opj_poc[] pocs;
100 public int reduce; 100 public byte ppt_data;
101 public int layer; 101 public byte ppt_data_first;
102 public LIMIT_DECODING limit_decoding; 102 public int ppt;
103 public int tx0; 103 public int ppt_store;
104 public int ty0; 104 public int ppt_len;
105 public int tdx; 105 /// <summary>
106 public int tdy; 106 /// Don't forget to initialize 100 elements
107 public sbyte? comment; 107 /// </summary>
108 public int tw; 108 public float[] distoratio;
109 public int th; 109 public opj_tccp tccps;
110 public int? tileno; 110 }
111 public byte ppm_data; 111
112 public byte ppm_data_first; 112 public struct opj_cp
113 public int ppm; 113 {
114 public int ppm_store; 114 public CINEMA_MODE cinema;
115 public int ppm_previous; 115 public int max_comp_size;
116 public int ppm_len; 116 public int img_size;
117 public opj_tcp tcps; 117 public RSIZ_CAPABILITIES rsiz;
118 public int matrice; 118 public sbyte tp_on;
119 } 119 public sbyte tp_flag;
120 120 public int tp_pos;
121 public static class j2kdefines 121 public int distro_alloc;
122 { 122 public int fixed_alloc;
123 public int fixed_quality;
124 public int reduce;
125 public int layer;
126 public LIMIT_DECODING limit_decoding;
127 public int tx0;
128 public int ty0;
129 public int tdx;
130 public int tdy;
131 public sbyte? comment;
132 public int tw;
133 public int th;
134 public int? tileno;
135 public byte ppm_data;
136 public byte ppm_data_first;
137 public int ppm;
138 public int ppm_store;
139 public int ppm_previous;
140 public int ppm_len;
141 public opj_tcp tcps;
142 public int matrice;
143 }
144
145 public static class j2kdefines
146 {
123 public const uint J2K_CP_CSTY_PRT = 0x01; 147 public const uint J2K_CP_CSTY_PRT = 0x01;
124 public const uint J2K_CP_CSTY_SOP = 0x02; 148 public const uint J2K_CP_CSTY_SOP = 0x02;
125 public const uint J2K_CP_CSTY_EPH = 0x04; 149 public const uint J2K_CP_CSTY_EPH = 0x04;
@@ -131,28 +155,28 @@ namespace OpenSim.Framework.OpenJpeg
131 public const uint J2K_CCP_CBLKSTY_PTERM =0x10; 155 public const uint J2K_CCP_CBLKSTY_PTERM =0x10;
132 public const uint J2K_CCP_CBLKSTY_SEGSYM = 0x20; 156 public const uint J2K_CCP_CBLKSTY_SEGSYM = 0x20;
133 public const uint J2K_CCP_QNTSTY_NOQNT = 0; 157 public const uint J2K_CCP_QNTSTY_NOQNT = 0;
134 public const uint J2K_CCP_QNTSTY_SIQNT = 1; 158 public const uint J2K_CCP_QNTSTY_SIQNT = 1;
135 public const uint J2K_CCP_QNTSTY_SEQNT = 2; 159 public const uint J2K_CCP_QNTSTY_SEQNT = 2;
136 160
137 public const uint J2K_MS_SOC = 0xff4f; /**< SOC marker value */ 161 public const uint J2K_MS_SOC = 0xff4f; /**< SOC marker value */
138 public const uint J2K_MS_SOT = 0xff90; /**< SOT marker value */ 162 public const uint J2K_MS_SOT = 0xff90; /**< SOT marker value */
139 public const uint J2K_MS_SOD = 0xff93; /**< SOD marker value */ 163 public const uint J2K_MS_SOD = 0xff93; /**< SOD marker value */
140 public const uint J2K_MS_EOC = 0xffd9; /**< EOC marker value */ 164 public const uint J2K_MS_EOC = 0xffd9; /**< EOC marker value */
141 public const uint J2K_MS_SIZ = 0xff51; /**< SIZ marker value */ 165 public const uint J2K_MS_SIZ = 0xff51; /**< SIZ marker value */
142 public const uint J2K_MS_COD = 0xff52; /**< COD marker value */ 166 public const uint J2K_MS_COD = 0xff52; /**< COD marker value */
143 public const uint J2K_MS_COC = 0xff53; /**< COC marker value */ 167 public const uint J2K_MS_COC = 0xff53; /**< COC marker value */
144 public const uint J2K_MS_RGN = 0xff5e; /**< RGN marker value */ 168 public const uint J2K_MS_RGN = 0xff5e; /**< RGN marker value */
145 public const uint J2K_MS_QCD = 0xff5c; /**< QCD marker value */ 169 public const uint J2K_MS_QCD = 0xff5c; /**< QCD marker value */
146 public const uint J2K_MS_QCC = 0xff5d; /**< QCC marker value */ 170 public const uint J2K_MS_QCC = 0xff5d; /**< QCC marker value */
147 public const uint J2K_MS_POC = 0xff5f; /**< POC marker value */ 171 public const uint J2K_MS_POC = 0xff5f; /**< POC marker value */
148 public const uint J2K_MS_TLM = 0xff55; /**< TLM marker value */ 172 public const uint J2K_MS_TLM = 0xff55; /**< TLM marker value */
149 public const uint J2K_MS_PLM = 0xff57; /**< PLM marker value */ 173 public const uint J2K_MS_PLM = 0xff57; /**< PLM marker value */
150 public const uint J2K_MS_PLT = 0xff58; /**< PLT marker value */ 174 public const uint J2K_MS_PLT = 0xff58; /**< PLT marker value */
151 public const uint J2K_MS_PPM = 0xff60; /**< PPM marker value */ 175 public const uint J2K_MS_PPM = 0xff60; /**< PPM marker value */
152 public const uint J2K_MS_PPT = 0xff61; /**< PPT marker value */ 176 public const uint J2K_MS_PPT = 0xff61; /**< PPT marker value */
153 public const uint J2K_MS_SOP = 0xff91; /**< SOP marker value */ 177 public const uint J2K_MS_SOP = 0xff91; /**< SOP marker value */
154 public const uint J2K_MS_EPH = 0xff92; /**< EPH marker value */ 178 public const uint J2K_MS_EPH = 0xff92; /**< EPH marker value */
155 public const uint J2K_MS_CRG = 0xff63; /**< CRG marker value */ 179 public const uint J2K_MS_CRG = 0xff63; /**< CRG marker value */
156 public const uint J2K_MS_COM = 0xff64; /**< COM marker value */ 180 public const uint J2K_MS_COM = 0xff64; /**< COM marker value */
157 } 181 }
158} 182}
diff --git a/OpenSim/Framework/OpenJpeg/openjpeg.cs b/OpenSim/Framework/OpenJpeg/openjpeg.cs
index 2d5e4b5..f0b2518 100644
--- a/OpenSim/Framework/OpenJpeg/openjpeg.cs
+++ b/OpenSim/Framework/OpenJpeg/openjpeg.cs
@@ -1,358 +1,375 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 public class openjpeg 7 * * Redistributions of source code must retain the above copyright
8 { 8 * notice, this list of conditions and the following disclaimer.
9 public openjpeg() 9 * * Redistributions in binary form must reproduce the above copyright
10 { 10 * notice, this list of conditions and the following disclaimer in the
11 11 * documentation and/or other materials provided with the distribution.
12 12 * * Neither the name of the OpenSimulator Project nor the
13 } 13 * names of its contributors may be used to endorse or promote products
14 } 14 * derived from this software without specific prior written permission.
15 15 *
16 public enum PROG_ORDER 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 { 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 PROG_UNKNOWN = -1, 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 LRCP = 0, 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 RLCP = 1, 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 RPCL = 2, 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 PCRL = 3, 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 CPRL = 4 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 } 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 public enum RSIZ_CAPABILITIES 26 */
27 { 27
28 STD_RSIZ = 0, 28using System;
29 CINEMA2K = 3, 29using System.Collections.Generic;
30 CINEMA4K = 4 30using System.Text;
31 } 31
32 32namespace OpenSim.Framework.OpenJpeg
33 public enum CINEMA_MODE 33{
34 { 34 public class openjpeg
35 OFF = 0, 35 {
36 CINEMA2K_24 = 1, 36 public openjpeg()
37 CINEMA2K_48 = 2, 37 {
38 CINEMA4K_24 = 3 38 }
39 } 39 }
40 40
41 public enum COLOR_SPACE 41 public enum PROG_ORDER
42 { 42 {
43 CLRSPC_UNKNOWN = -1, 43 PROG_UNKNOWN = -1,
44 CLRSPC_SRGB = 1, 44 LRCP = 0,
45 CLRSPC_GRAY = 2, 45 RLCP = 1,
46 CLRSPC_SYCC = 3 46 RPCL = 2,
47 } 47 PCRL = 3,
48 48 CPRL = 4
49 public enum CODEC_FORMAT 49 }
50 { 50
51 CODEC_UNKNOWN = -1, 51 public enum RSIZ_CAPABILITIES
52 CODEC_J2K = 0, 52 {
53 CODEC_JPT = 1, 53 STD_RSIZ = 0,
54 CODEC_JP2 = 2 54 CINEMA2K = 3,
55 } 55 CINEMA4K = 4
56 56 }
57 public enum LIMIT_DECODING 57
58 { 58 public enum CINEMA_MODE
59 NO_LIMITATION = 0, 59 {
60 LIMIT_TO_MAIN_HEADER=1, 60 OFF = 0,
61 DECODE_ALL_BUT_PACKETS = 2 61 CINEMA2K_24 = 1,
62 } 62 CINEMA2K_48 = 2,
63 63 CINEMA4K_24 = 3
64 public struct opj_poc 64 }
65 { 65
66 public int resno0, compno0; 66 public enum COLOR_SPACE
67 public int layno1, resno1, compno1; 67 {
68 public int layno0, precno0, precno1; 68 CLRSPC_UNKNOWN = -1,
69 public PROG_ORDER prg1, prg; 69 CLRSPC_SRGB = 1,
70 /// <summary> 70 CLRSPC_GRAY = 2,
71 /// Don't forget to initialize with 5 elements 71 CLRSPC_SYCC = 3
72 /// </summary> 72 }
73 public sbyte[] progorder; 73
74 public int tile; 74 public enum CODEC_FORMAT
75 public int tx0, tx1, ty0, ty1; 75 {
76 public int layS, resS, copmS, prcS; 76 CODEC_UNKNOWN = -1,
77 public int layE, resE, compE, prcE; 77 CODEC_J2K = 0,
78 public int txS, txE, tyS, tyE, dx, dy; 78 CODEC_JPT = 1,
79 public int lay_t, res_t, comp_t, prc_t, tx0_t, ty0_t; 79 CODEC_JP2 = 2
80 } 80 }
81 81
82 public struct opj_cparameters 82 public enum LIMIT_DECODING
83 { 83 {
84 public bool tile_size_on; 84 NO_LIMITATION = 0,
85 public int cp_tx0; 85 LIMIT_TO_MAIN_HEADER=1,
86 public int cp_ty0; 86 DECODE_ALL_BUT_PACKETS = 2
87 public int cp_tdx; 87 }
88 public int cp_tdy; 88
89 public int cp_disto_alloc; 89 public struct opj_poc
90 public int cp_fixed_alloc; 90 {
91 public int cp_fixed_wuality; 91 public int resno0, compno0;
92 public int cp_matrice; 92 public int layno1, resno1, compno1;
93 public sbyte cp_comment; 93 public int layno0, precno0, precno1;
94 public int csty; 94 public PROG_ORDER prg1, prg;
95 public PROG_ORDER prog_order; 95 /// <summary>
96 96 /// Don't forget to initialize with 5 elements
97 /// <summary> 97 /// </summary>
98 /// Don't forget to initialize 32 elements 98 public sbyte[] progorder;
99 /// </summary> 99 public int tile;
100 public opj_poc[] POC; 100 public int tx0, tx1, ty0, ty1;
101 public int numpocs; 101 public int layS, resS, copmS, prcS;
102 public int tcp_numlayers; 102 public int layE, resE, compE, prcE;
103 /// <summary> 103 public int txS, txE, tyS, tyE, dx, dy;
104 /// Don't forget to intitialize 100 elements 104 public int lay_t, res_t, comp_t, prc_t, tx0_t, ty0_t;
105 /// </summary> 105 }
106 public float[] tcp_rates; 106
107 /// <summary> 107 public struct opj_cparameters
108 /// Don't forget to initialize 100 elements 108 {
109 /// </summary> 109 public bool tile_size_on;
110 public float[] tcp_distoratio; 110 public int cp_tx0;
111 public int numresolution; 111 public int cp_ty0;
112 public int cblockw_init; 112 public int cp_tdx;
113 public int cblockh_init; 113 public int cp_tdy;
114 public int mode; 114 public int cp_disto_alloc;
115 public int irreversible; 115 public int cp_fixed_alloc;
116 public int roi_compno; 116 public int cp_fixed_wuality;
117 public int roi_shift; 117 public int cp_matrice;
118 public int res_spec; 118 public sbyte cp_comment;
119 119 public int csty;
120 /// <summary> 120 public PROG_ORDER prog_order;
121 /// Don't forget to initialize 33 elements 121
122 /// </summary> 122 /// <summary>
123 public int[] prc_init; 123 /// Don't forget to initialize 32 elements
124 /// <summary> 124 /// </summary>
125 /// Don't forget to initialize 33 elements 125 public opj_poc[] POC;
126 /// </summary> 126 public int numpocs;
127 public int[] prch_init; 127 public int tcp_numlayers;
128 128 /// <summary>
129 public string infile; 129 /// Don't forget to intitialize 100 elements
130 public string outfile; 130 /// </summary>
131 public int index_on; 131 public float[] tcp_rates;
132 public string index; 132 /// <summary>
133 public int image_offset_x0; 133 /// Don't forget to initialize 100 elements
134 public int image_offset_y0; 134 /// </summary>
135 public int subsampling_dx; 135 public float[] tcp_distoratio;
136 public int subsampling_dy; 136 public int numresolution;
137 public int decod_format; 137 public int cblockw_init;
138 public int cod_format; 138 public int cblockh_init;
139 public bool jpwl_epc_on; 139 public int mode;
140 public int jpwl_hprot_MH; 140 public int irreversible;
141 /// <summary> 141 public int roi_compno;
142 /// Don't forget to initialize 16 elements 142 public int roi_shift;
143 /// </summary> 143 public int res_spec;
144 public int[] jpwl_hprot_TPH_tileno; 144
145 /// <summary> 145 /// <summary>
146 /// Don't forget to initialize 16 elements 146 /// Don't forget to initialize 33 elements
147 /// </summary> 147 /// </summary>
148 public int[] jpwl_hprot_TPH; 148 public int[] prc_init;
149 149 /// <summary>
150 /// <summary> 150 /// Don't forget to initialize 33 elements
151 /// Don't forget to initialize 16 elements 151 /// </summary>
152 /// </summary> 152 public int[] prch_init;
153 public int[] jpwl_pprot_tileno; 153
154 public int[] jpwl_pprot_packno; 154 public string infile;
155 public int[] jpwl_pprot; 155 public string outfile;
156 public int jpwl_sens_size; 156 public int index_on;
157 public int jpwl_sense_addr; 157 public string index;
158 public int jpwl_sens_range; 158 public int image_offset_x0;
159 public int jpwl_sens_MH; 159 public int image_offset_y0;
160 160 public int subsampling_dx;
161 /// <summary> 161 public int subsampling_dy;
162 /// Don't forget to initialize 16 elements 162 public int decod_format;
163 /// </summary> 163 public int cod_format;
164 public int[] jpwl_sens_TPH_tileno; 164 public bool jpwl_epc_on;
165 165 public int jpwl_hprot_MH;
166 /// <summary> 166 /// <summary>
167 /// Don't forget to initialize 16 elements 167 /// Don't forget to initialize 16 elements
168 /// </summary> 168 /// </summary>
169 public int[] jpwl_sens_TPH; 169 public int[] jpwl_hprot_TPH_tileno;
170 public CINEMA_MODE cp_cinema; 170 /// <summary>
171 public int max_comp_size; 171 /// Don't forget to initialize 16 elements
172 public sbyte tp_on; 172 /// </summary>
173 public sbyte tp_flag; 173 public int[] jpwl_hprot_TPH;
174 public sbyte tcp_mct; 174
175 } 175 /// <summary>
176 176 /// Don't forget to initialize 16 elements
177 public struct opj_dparameters 177 /// </summary>
178 { 178 public int[] jpwl_pprot_tileno;
179 public int cp_reduce; 179 public int[] jpwl_pprot_packno;
180 public int cp_layer; 180 public int[] jpwl_pprot;
181 public string infile; 181 public int jpwl_sens_size;
182 public string outfile; 182 public int jpwl_sense_addr;
183 public int decod_format; 183 public int jpwl_sens_range;
184 public int cod_format; 184 public int jpwl_sens_MH;
185 public bool jpwl_correct; 185
186 public int jpwl_exp_comps; 186 /// <summary>
187 public int jpwl_max_tiles; 187 /// Don't forget to initialize 16 elements
188 public LIMIT_DECODING cp_limit_decoding; 188 /// </summary>
189 189 public int[] jpwl_sens_TPH_tileno;
190 } 190
191 191 /// <summary>
192 public struct opj_common_fields 192 /// Don't forget to initialize 16 elements
193 { 193 /// </summary>
194 public bool is_decompressor; 194 public int[] jpwl_sens_TPH;
195 public CODEC_FORMAT codec_format; 195 public CINEMA_MODE cp_cinema;
196 } 196 public int max_comp_size;
197 197 public sbyte tp_on;
198 public struct opj_common_struct 198 public sbyte tp_flag;
199 { 199 public sbyte tcp_mct;
200 public opj_common_fields flds; 200 }
201 } 201
202 202 public struct opj_dparameters
203 public struct opj_cinfo 203 {
204 { 204 public int cp_reduce;
205 public opj_common_fields flds; 205 public int cp_layer;
206 } 206 public string infile;
207 public struct opj_dinfo 207 public string outfile;
208 { 208 public int decod_format;
209 public opj_common_fields flds; 209 public int cod_format;
210 } 210 public bool jpwl_correct;
211 211 public int jpwl_exp_comps;
212 public struct opj_cio 212 public int jpwl_max_tiles;
213 { 213 public LIMIT_DECODING cp_limit_decoding;
214 public opj_common_struct cinfo; 214 }
215 public int openmode; 215
216 public byte buffer; 216 public struct opj_common_fields
217 public int length; 217 {
218 public byte start; 218 public bool is_decompressor;
219 public byte end; 219 public CODEC_FORMAT codec_format;
220 public byte bp; 220 }
221 } 221
222 222 public struct opj_common_struct
223 public struct opj_image_comp 223 {
224 { 224 public opj_common_fields flds;
225 public int dx; 225 }
226 public int dy; 226
227 public int w; 227 public struct opj_cinfo
228 public int h; 228 {
229 public int x0; 229 public opj_common_fields flds;
230 public int y0; 230 }
231 public int prec; 231
232 public int bpp; 232 public struct opj_dinfo
233 public int sgnd; 233 {
234 public int resno_decoded; 234 public opj_common_fields flds;
235 public int factor; 235 }
236 public int data; 236
237 } 237 public struct opj_cio
238 238 {
239 public struct opj_image 239 public opj_common_struct cinfo;
240 { 240 public int openmode;
241 public int x0; 241 public byte buffer;
242 public int y0; 242 public int length;
243 public int x1; 243 public byte start;
244 public int y1; 244 public byte end;
245 public int numcomps; 245 public byte bp;
246 public COLOR_SPACE color_space; 246 }
247 public opj_image_comp comps; 247
248 } 248 public struct opj_image_comp
249 249 {
250 public struct opj_image_comptparm 250 public int dx;
251 { 251 public int dy;
252 public int dx; 252 public int w;
253 public int dy; 253 public int h;
254 public int w; 254 public int x0;
255 public int h; 255 public int y0;
256 public int x0; 256 public int prec;
257 public int y0; 257 public int bpp;
258 public int prec; 258 public int sgnd;
259 public int bpp; 259 public int resno_decoded;
260 public int sgnd; 260 public int factor;
261 } 261 public int data;
262 262 }
263 public struct opj_packet_info 263
264 { 264 public struct opj_image
265 public int start_pos; 265 {
266 public int end_ph_pos; 266 public int x0;
267 public int end_pos; 267 public int y0;
268 public double disto; 268 public int x1;
269 } 269 public int y1;
270 270 public int numcomps;
271 public struct opj_tp_info 271 public COLOR_SPACE color_space;
272 { 272 public opj_image_comp comps;
273 public int tp_start_pos; 273 }
274 public int tp_end_header; 274
275 public int tp_end_pos; 275 public struct opj_image_comptparm
276 public int tp_start_pack; 276 {
277 public int tp_numpacks; 277 public int dx;
278 } 278 public int dy;
279 279 public int w;
280 public struct opj_tile_info 280 public int h;
281 { 281 public int x0;
282 public double thresh; 282 public int y0;
283 public int tileno; 283 public int prec;
284 public int start_pos; 284 public int bpp;
285 public int end_header; 285 public int sgnd;
286 public int end_pos; 286 }
287 /// <summary> 287
288 /// Don't forget to initialize 33 elements 288 public struct opj_packet_info
289 /// </summary> 289 {
290 public int[] pw; 290 public int start_pos;
291 /// <summary> 291 public int end_ph_pos;
292 /// Don't forget to initialize 33 elements 292 public int end_pos;
293 /// </summary> 293 public double disto;
294 public int[] ph; 294 }
295 /// <summary> 295
296 /// Don't forget to initialize 33 elements 296 public struct opj_tp_info
297 /// </summary> 297 {
298 public int[] pdx; 298 public int tp_start_pos;
299 /// <summary> 299 public int tp_end_header;
300 /// Don't forget to initialize 33 elements 300 public int tp_end_pos;
301 /// </summary> 301 public int tp_start_pack;
302 public int[] pdy; 302 public int tp_numpacks;
303 303 }
304 public opj_packet_info packet; 304
305 public int numpix; 305 public struct opj_tile_info
306 public double distotile; 306 {
307 public int num_tps; 307 public double thresh;
308 public opj_tp_info tp; 308 public int tileno;
309 } 309 public int start_pos;
310 310 public int end_header;
311 public struct opj_marker_info_t 311 public int end_pos;
312 { 312 /// <summary>
313 public ushort type; 313 /// Don't forget to initialize 33 elements
314 public int pos; 314 /// </summary>
315 public int len; 315 public int[] pw;
316 } 316 /// <summary>
317 317 /// Don't forget to initialize 33 elements
318 public struct opj_codestream_info 318 /// </summary>
319 { 319 public int[] ph;
320 public double D_max; 320 /// <summary>
321 public int packno; 321 /// Don't forget to initialize 33 elements
322 public int index_write; 322 /// </summary>
323 public int image_w; 323 public int[] pdx;
324 public int image_h; 324 /// <summary>
325 325 /// Don't forget to initialize 33 elements
326 public PROG_ORDER prog; 326 /// </summary>
327 327 public int[] pdy;
328 public int tile_x; 328
329 public int tile_y; 329 public opj_packet_info packet;
330 public int tile_Ox; 330 public int numpix;
331 public int tile_Oy; 331 public double distotile;
332 public int tw; 332 public int num_tps;
333 public int numcomps; 333 public opj_tp_info tp;
334 public int numlayers; 334 }
335 public int numdecompos; 335
336 public int marknum; 336 public struct opj_marker_info_t
337 public opj_marker_info_t marker; 337 {
338 public int maxmarknum; 338 public ushort type;
339 public int main_head_start; 339 public int pos;
340 public int main_head_end; 340 public int len;
341 public int codestream_size; 341 }
342 public opj_tile_info tile; 342
343 343 public struct opj_codestream_info
344 } 344 {
345 345 public double D_max;
346 346 public int packno;
347 347 public int index_write;
348 348 public int image_w;
349 349 public int image_h;
350 350
351 public static class opj_defines 351 public PROG_ORDER prog;
352 { 352
353 public const int OPJ_STREAM_READ = 0x0001; 353 public int tile_x;
354 public const int OPJ_STREAM_WRITE = 0x0002; 354 public int tile_y;
355 355 public int tile_Ox;
356 } 356 public int tile_Oy;
357 357 public int tw;
358} 358 public int numcomps;
359 public int numlayers;
360 public int numdecompos;
361 public int marknum;
362 public opj_marker_info_t marker;
363 public int maxmarknum;
364 public int main_head_start;
365 public int main_head_end;
366 public int codestream_size;
367 public opj_tile_info tile;
368 }
369
370 public static class opj_defines
371 {
372 public const int OPJ_STREAM_READ = 0x0001;
373 public const int OPJ_STREAM_WRITE = 0x0002;
374 }
375}
diff --git a/OpenSim/Framework/OpenJpeg/pi.cs b/OpenSim/Framework/OpenJpeg/pi.cs
index f7e211f..7da7d71 100644
--- a/OpenSim/Framework/OpenJpeg/pi.cs
+++ b/OpenSim/Framework/OpenJpeg/pi.cs
@@ -1,48 +1,71 @@
1using System; 1/*
2using System.Collections.Generic; 2 * Copyright (c) Contributors, http://opensimulator.org/
3using System.Text; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5namespace OpenSim.Framework.OpenJpeg 5 * Redistribution and use in source and binary forms, with or without
6{ 6 * modification, are permitted provided that the following conditions are met:
7 public static class pi 7 * * Redistributions of source code must retain the above copyright
8 { 8 * notice, this list of conditions and the following disclaimer.
9 } 9 * * Redistributions in binary form must reproduce the above copyright
10 10 * notice, this list of conditions and the following disclaimer in the
11 public struct opj_pi_resolution 11 * documentation and/or other materials provided with the distribution.
12 { 12 * * Neither the name of the OpenSimulator Project nor the
13 public int pdx, pdy; 13 * names of its contributors may be used to endorse or promote products
14 public int pw, ph; 14 * derived from this software without specific prior written permission.
15 } 15 *
16 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 public struct opj_pi_comp 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 { 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 public int dx, dy; 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 public int numresolutions; 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 public opj_pi_resolution resolutions; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 } 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 public struct obj_pi_iterator 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 { 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 public sbyte tp_on; 26 */
27 public short include; 27
28 public int step_l; 28using System;
29 public int step_r; 29using System.Collections.Generic;
30 public int step_c; 30using System.Text;
31 public int step_p; 31
32 public int compno; 32namespace OpenSim.Framework.OpenJpeg
33 public int resno; 33{
34 public int precno; 34 public static class pi
35 public int layno; 35 {
36 public int first; 36 }
37 public opj_poc poc; 37
38 public int numcomps; 38 public struct opj_pi_resolution
39 public opj_pi_comp comps; 39 {
40 40 public int pdx, pdy;
41 public int tx0, ty0, tx1, ty1; 41 public int pw, ph;
42 public int x, y, dx, dy; 42 }
43 } 43
44 44 public struct opj_pi_comp
45 45 {
46 46 public int dx, dy;
47 47 public int numresolutions;
48} 48 public opj_pi_resolution resolutions;
49 }
50
51 public struct obj_pi_iterator
52 {
53 public sbyte tp_on;
54 public short include;
55 public int step_l;
56 public int step_r;
57 public int step_c;
58 public int step_p;
59 public int compno;
60 public int resno;
61 public int precno;
62 public int layno;
63 public int first;
64 public opj_poc poc;
65 public int numcomps;
66 public opj_pi_comp comps;
67
68 public int tx0, ty0, tx1, ty1;
69 public int x, y, dx, dy;
70 }
71}
diff --git a/OpenSim/Grid/UserServer/OpenIdService.cs b/OpenSim/Grid/UserServer/OpenIdService.cs
index 695968f..78e820e 100644
--- a/OpenSim/Grid/UserServer/OpenIdService.cs
+++ b/OpenSim/Grid/UserServer/OpenIdService.cs
@@ -1,339 +1,339 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Collections.Specialized; 30using System.Collections.Specialized;
31using System.IO; 31using System.IO;
32using System.Net; 32using System.Net;
33using System.Web; 33using System.Web;
34using System.Text; 34using System.Text;
35using DotNetOpenId; 35using DotNetOpenId;
36using DotNetOpenId.Provider; 36using DotNetOpenId.Provider;
37using log4net; 37using log4net;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Servers; 39using OpenSim.Framework.Servers;
40 40
41namespace OpenSim.Grid.UserServer 41namespace OpenSim.Grid.UserServer
42{ 42{
43 /// <summary> 43 /// <summary>
44 /// Temporary, in-memory store for OpenID associations 44 /// Temporary, in-memory store for OpenID associations
45 /// </summary> 45 /// </summary>
46 public class ProviderMemoryStore : IAssociationStore<AssociationRelyingPartyType> 46 public class ProviderMemoryStore : IAssociationStore<AssociationRelyingPartyType>
47 { 47 {
48 private class AssociationItem 48 private class AssociationItem
49 { 49 {
50 public AssociationRelyingPartyType DistinguishingFactor; 50 public AssociationRelyingPartyType DistinguishingFactor;
51 public string Handle; 51 public string Handle;
52 public DateTime Expires; 52 public DateTime Expires;
53 public byte[] PrivateData; 53 public byte[] PrivateData;
54 } 54 }
55 55
56 Dictionary<string, AssociationItem> m_store = new Dictionary<string, AssociationItem>(); 56 Dictionary<string, AssociationItem> m_store = new Dictionary<string, AssociationItem>();
57 SortedList<DateTime, AssociationItem> m_sortedStore = new SortedList<DateTime, AssociationItem>(); 57 SortedList<DateTime, AssociationItem> m_sortedStore = new SortedList<DateTime, AssociationItem>();
58 object m_syncRoot = new object(); 58 object m_syncRoot = new object();
59 59
60 #region IAssociationStore<AssociationRelyingPartyType> Members 60 #region IAssociationStore<AssociationRelyingPartyType> Members
61 61
62 public void StoreAssociation(AssociationRelyingPartyType distinguishingFactor, Association assoc) 62 public void StoreAssociation(AssociationRelyingPartyType distinguishingFactor, Association assoc)
63 { 63 {
64 AssociationItem item = new AssociationItem(); 64 AssociationItem item = new AssociationItem();
65 item.DistinguishingFactor = distinguishingFactor; 65 item.DistinguishingFactor = distinguishingFactor;
66 item.Handle = assoc.Handle; 66 item.Handle = assoc.Handle;
67 item.Expires = assoc.Expires.ToLocalTime(); 67 item.Expires = assoc.Expires.ToLocalTime();
68 item.PrivateData = assoc.SerializePrivateData(); 68 item.PrivateData = assoc.SerializePrivateData();
69 69
70 lock (m_syncRoot) 70 lock (m_syncRoot)
71 { 71 {
72 m_store[item.Handle] = item; 72 m_store[item.Handle] = item;
73 m_sortedStore[item.Expires] = item; 73 m_sortedStore[item.Expires] = item;
74 } 74 }
75 } 75 }
76 76
77 public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor) 77 public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor)
78 { 78 {
79 lock (m_syncRoot) 79 lock (m_syncRoot)
80 { 80 {
81 if (m_sortedStore.Count > 0) 81 if (m_sortedStore.Count > 0)
82 { 82 {
83 AssociationItem item = m_sortedStore.Values[m_sortedStore.Count - 1]; 83 AssociationItem item = m_sortedStore.Values[m_sortedStore.Count - 1];
84 return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); 84 return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData);
85 } 85 }
86 else 86 else
87 { 87 {
88 return null; 88 return null;
89 } 89 }
90 } 90 }
91 } 91 }
92 92
93 public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) 93 public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor, string handle)
94 { 94 {
95 AssociationItem item; 95 AssociationItem item;
96 bool success = false; 96 bool success = false;
97 lock (m_syncRoot) 97 lock (m_syncRoot)
98 success = m_store.TryGetValue(handle, out item); 98 success = m_store.TryGetValue(handle, out item);
99 99
100 if (success) 100 if (success)
101 return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); 101 return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData);
102 else 102 else
103 return null; 103 return null;
104 } 104 }
105 105
106 public bool RemoveAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) 106 public bool RemoveAssociation(AssociationRelyingPartyType distinguishingFactor, string handle)
107 { 107 {
108 lock (m_syncRoot) 108 lock (m_syncRoot)
109 { 109 {
110 for (int i = 0; i < m_sortedStore.Values.Count; i++) 110 for (int i = 0; i < m_sortedStore.Values.Count; i++)
111 { 111 {
112 AssociationItem item = m_sortedStore.Values[i]; 112 AssociationItem item = m_sortedStore.Values[i];
113 if (item.Handle == handle) 113 if (item.Handle == handle)
114 { 114 {
115 m_sortedStore.RemoveAt(i); 115 m_sortedStore.RemoveAt(i);
116 break; 116 break;
117 } 117 }
118 } 118 }
119 119
120 return m_store.Remove(handle); 120 return m_store.Remove(handle);
121 } 121 }
122 } 122 }
123 123
124 public void ClearExpiredAssociations() 124 public void ClearExpiredAssociations()
125 { 125 {
126 lock (m_syncRoot) 126 lock (m_syncRoot)
127 { 127 {
128 List<AssociationItem> itemsCopy = new List<AssociationItem>(m_sortedStore.Values); 128 List<AssociationItem> itemsCopy = new List<AssociationItem>(m_sortedStore.Values);
129 DateTime now = DateTime.Now; 129 DateTime now = DateTime.Now;
130 130
131 for (int i = 0; i < itemsCopy.Count; i++) 131 for (int i = 0; i < itemsCopy.Count; i++)
132 { 132 {
133 AssociationItem item = itemsCopy[i]; 133 AssociationItem item = itemsCopy[i];
134 134
135 if (item.Expires <= now) 135 if (item.Expires <= now)
136 { 136 {
137 m_sortedStore.RemoveAt(i); 137 m_sortedStore.RemoveAt(i);
138 m_store.Remove(item.Handle); 138 m_store.Remove(item.Handle);
139 } 139 }
140 } 140 }
141 } 141 }
142 } 142 }
143 143
144 #endregion 144 #endregion
145 } 145 }
146 146
147 public class OpenIdStreamHandler : IStreamHandler 147 public class OpenIdStreamHandler : IStreamHandler
148 { 148 {
149 #region HTML 149 #region HTML
150 150
151 /// <summary>Login form used to authenticate OpenID requests</summary> 151 /// <summary>Login form used to authenticate OpenID requests</summary>
152 const string LOGIN_PAGE = 152 const string LOGIN_PAGE =
153@"<html> 153@"<html>
154<head><title>OpenSim OpenID Login</title></head> 154<head><title>OpenSim OpenID Login</title></head>
155<body> 155<body>
156<h3>OpenSim Login</h3> 156<h3>OpenSim Login</h3>
157<form method=""post""> 157<form method=""post"">
158<label for=""first"">First Name:</label> <input readonly type=""text"" name=""first"" id=""first"" value=""{0}""/> 158<label for=""first"">First Name:</label> <input readonly type=""text"" name=""first"" id=""first"" value=""{0}""/>
159<label for=""last"">Last Name:</label> <input readonly type=""text"" name=""last"" id=""last"" value=""{1}""/> 159<label for=""last"">Last Name:</label> <input readonly type=""text"" name=""last"" id=""last"" value=""{1}""/>
160<label for=""pass"">Password:</label> <input type=""password"" name=""pass"" id=""pass""/> 160<label for=""pass"">Password:</label> <input type=""password"" name=""pass"" id=""pass""/>
161<input type=""submit"" value=""Login""> 161<input type=""submit"" value=""Login"">
162</form> 162</form>
163</body> 163</body>
164</html>"; 164</html>";
165 165
166 /// <summary>Page shown for a valid OpenID identity</summary> 166 /// <summary>Page shown for a valid OpenID identity</summary>
167 const string OPENID_PAGE = 167 const string OPENID_PAGE =
168@"<html> 168@"<html>
169<head> 169<head>
170<title>{2} {3}</title> 170<title>{2} {3}</title>
171<link rel=""openid2.provider openid.server"" href=""{0}://{1}/openid/server/""/> 171<link rel=""openid2.provider openid.server"" href=""{0}://{1}/openid/server/""/>
172</head> 172</head>
173<body>OpenID identifier for {2} {3}</body> 173<body>OpenID identifier for {2} {3}</body>
174</html> 174</html>
175"; 175";
176 176
177 /// <summary>Page shown for an invalid OpenID identity</summary> 177 /// <summary>Page shown for an invalid OpenID identity</summary>
178 const string INVALID_OPENID_PAGE = 178 const string INVALID_OPENID_PAGE =
179@"<html><head><title>Identity not found</title></head> 179@"<html><head><title>Identity not found</title></head>
180<body>Invalid OpenID identity</body></html>"; 180<body>Invalid OpenID identity</body></html>";
181 181
182 /// <summary>Page shown if the OpenID endpoint is requested directly</summary> 182 /// <summary>Page shown if the OpenID endpoint is requested directly</summary>
183 const string ENDPOINT_PAGE = 183 const string ENDPOINT_PAGE =
184@"<html><head><title>OpenID Endpoint</title></head><body> 184@"<html><head><title>OpenID Endpoint</title></head><body>
185This is an OpenID server endpoint, not a human-readable resource. 185This is an OpenID server endpoint, not a human-readable resource.
186For more information, see <a href='http://openid.net/'>http://openid.net/</a>. 186For more information, see <a href='http://openid.net/'>http://openid.net/</a>.
187</body></html>"; 187</body></html>";
188 188
189 #endregion HTML 189 #endregion HTML
190 190
191 public string ContentType { get { return m_contentType; } } 191 public string ContentType { get { return m_contentType; } }
192 public string HttpMethod { get { return m_httpMethod; } } 192 public string HttpMethod { get { return m_httpMethod; } }
193 public string Path { get { return m_path; } } 193 public string Path { get { return m_path; } }
194 194
195 string m_contentType; 195 string m_contentType;
196 string m_httpMethod; 196 string m_httpMethod;
197 string m_path; 197 string m_path;
198 UserLoginService m_loginService; 198 UserLoginService m_loginService;
199 ProviderMemoryStore m_openidStore = new ProviderMemoryStore(); 199 ProviderMemoryStore m_openidStore = new ProviderMemoryStore();
200 200
201 /// <summary> 201 /// <summary>
202 /// Constructor 202 /// Constructor
203 /// </summary> 203 /// </summary>
204 public OpenIdStreamHandler(string httpMethod, string path, UserLoginService loginService) 204 public OpenIdStreamHandler(string httpMethod, string path, UserLoginService loginService)
205 { 205 {
206 m_loginService = loginService; 206 m_loginService = loginService;
207 m_httpMethod = httpMethod; 207 m_httpMethod = httpMethod;
208 m_path = path; 208 m_path = path;
209 209
210 m_contentType = "text/html"; 210 m_contentType = "text/html";
211 } 211 }
212 212
213 /// <summary> 213 /// <summary>
214 /// Handles all GET and POST requests for OpenID identifier pages and endpoint 214 /// Handles all GET and POST requests for OpenID identifier pages and endpoint
215 /// server communication 215 /// server communication
216 /// </summary> 216 /// </summary>
217 public void Handle(string path, Stream request, Stream response, OSHttpRequest httpRequest, OSHttpResponse httpResponse) 217 public void Handle(string path, Stream request, Stream response, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
218 { 218 {
219 Uri providerEndpoint = new Uri(String.Format("{0}://{1}{2}", httpRequest.Url.Scheme, httpRequest.Url.Authority, httpRequest.Url.AbsolutePath)); 219 Uri providerEndpoint = new Uri(String.Format("{0}://{1}{2}", httpRequest.Url.Scheme, httpRequest.Url.Authority, httpRequest.Url.AbsolutePath));
220 220
221 // Defult to returning HTML content 221 // Defult to returning HTML content
222 m_contentType = "text/html"; 222 m_contentType = "text/html";
223 223
224 try 224 try
225 { 225 {
226 NameValueCollection postQuery = HttpUtility.ParseQueryString(new StreamReader(httpRequest.InputStream).ReadToEnd()); 226 NameValueCollection postQuery = HttpUtility.ParseQueryString(new StreamReader(httpRequest.InputStream).ReadToEnd());
227 NameValueCollection getQuery = HttpUtility.ParseQueryString(httpRequest.Url.Query); 227 NameValueCollection getQuery = HttpUtility.ParseQueryString(httpRequest.Url.Query);
228 NameValueCollection openIdQuery = (postQuery.GetValues("openid.mode") != null ? postQuery : getQuery); 228 NameValueCollection openIdQuery = (postQuery.GetValues("openid.mode") != null ? postQuery : getQuery);
229 229
230 OpenIdProvider provider = new OpenIdProvider(m_openidStore, providerEndpoint, httpRequest.Url, openIdQuery); 230 OpenIdProvider provider = new OpenIdProvider(m_openidStore, providerEndpoint, httpRequest.Url, openIdQuery);
231 231
232 if (provider.Request != null) 232 if (provider.Request != null)
233 { 233 {
234 if (!provider.Request.IsResponseReady && provider.Request is IAuthenticationRequest) 234 if (!provider.Request.IsResponseReady && provider.Request is IAuthenticationRequest)
235 { 235 {
236 IAuthenticationRequest authRequest = (IAuthenticationRequest)provider.Request; 236 IAuthenticationRequest authRequest = (IAuthenticationRequest)provider.Request;
237 string[] passwordValues = postQuery.GetValues("pass"); 237 string[] passwordValues = postQuery.GetValues("pass");
238 238
239 UserProfileData profile; 239 UserProfileData profile;
240 if (TryGetProfile(new Uri(authRequest.ClaimedIdentifier.ToString()), out profile)) 240 if (TryGetProfile(new Uri(authRequest.ClaimedIdentifier.ToString()), out profile))
241 { 241 {
242 // Check for form POST data 242 // Check for form POST data
243 if (passwordValues != null && passwordValues.Length == 1) 243 if (passwordValues != null && passwordValues.Length == 1)
244 { 244 {
245 if (profile != null && m_loginService.AuthenticateUser(profile, passwordValues[0])) 245 if (profile != null && m_loginService.AuthenticateUser(profile, passwordValues[0]))
246 authRequest.IsAuthenticated = true; 246 authRequest.IsAuthenticated = true;
247 else 247 else
248 authRequest.IsAuthenticated = false; 248 authRequest.IsAuthenticated = false;
249 } 249 }
250 else 250 else
251 { 251 {
252 // Authentication was requested, send the client a login form 252 // Authentication was requested, send the client a login form
253 using (StreamWriter writer = new StreamWriter(response)) 253 using (StreamWriter writer = new StreamWriter(response))
254 writer.Write(String.Format(LOGIN_PAGE, profile.FirstName, profile.SurName)); 254 writer.Write(String.Format(LOGIN_PAGE, profile.FirstName, profile.SurName));
255 return; 255 return;
256 } 256 }
257 } 257 }
258 else 258 else
259 { 259 {
260 // Cannot find an avatar matching the claimed identifier 260 // Cannot find an avatar matching the claimed identifier
261 authRequest.IsAuthenticated = false; 261 authRequest.IsAuthenticated = false;
262 } 262 }
263 } 263 }
264 264
265 // Add OpenID headers to the response 265 // Add OpenID headers to the response
266 foreach (string key in provider.Request.Response.Headers.Keys) 266 foreach (string key in provider.Request.Response.Headers.Keys)
267 httpResponse.AddHeader(key, provider.Request.Response.Headers[key]); 267 httpResponse.AddHeader(key, provider.Request.Response.Headers[key]);
268 268
269 string[] contentTypeValues = provider.Request.Response.Headers.GetValues("Content-Type"); 269 string[] contentTypeValues = provider.Request.Response.Headers.GetValues("Content-Type");
270 if (contentTypeValues != null && contentTypeValues.Length == 1) 270 if (contentTypeValues != null && contentTypeValues.Length == 1)
271 m_contentType = contentTypeValues[0]; 271 m_contentType = contentTypeValues[0];
272 272
273 // Set the response code and document body based on the OpenID result 273 // Set the response code and document body based on the OpenID result
274 httpResponse.StatusCode = (int)provider.Request.Response.Code; 274 httpResponse.StatusCode = (int)provider.Request.Response.Code;
275 response.Write(provider.Request.Response.Body, 0, provider.Request.Response.Body.Length); 275 response.Write(provider.Request.Response.Body, 0, provider.Request.Response.Body.Length);
276 response.Close(); 276 response.Close();
277 } 277 }
278 else if (httpRequest.Url.AbsolutePath.Contains("/openid/server")) 278 else if (httpRequest.Url.AbsolutePath.Contains("/openid/server"))
279 { 279 {
280 // Standard HTTP GET was made on the OpenID endpoint, send the client the default error page 280 // Standard HTTP GET was made on the OpenID endpoint, send the client the default error page
281 using (StreamWriter writer = new StreamWriter(response)) 281 using (StreamWriter writer = new StreamWriter(response))
282 writer.Write(ENDPOINT_PAGE); 282 writer.Write(ENDPOINT_PAGE);
283 } 283 }
284 else 284 else
285 { 285 {
286 // Try and lookup this avatar 286 // Try and lookup this avatar
287 UserProfileData profile; 287 UserProfileData profile;
288 if (TryGetProfile(httpRequest.Url, out profile)) 288 if (TryGetProfile(httpRequest.Url, out profile))
289 { 289 {
290 using (StreamWriter writer = new StreamWriter(response)) 290 using (StreamWriter writer = new StreamWriter(response))
291 { 291 {
292 // TODO: Print out a full profile page for this avatar 292 // TODO: Print out a full profile page for this avatar
293 writer.Write(String.Format(OPENID_PAGE, httpRequest.Url.Scheme, 293 writer.Write(String.Format(OPENID_PAGE, httpRequest.Url.Scheme,
294 httpRequest.Url.Authority, profile.FirstName, profile.SurName)); 294 httpRequest.Url.Authority, profile.FirstName, profile.SurName));
295 } 295 }
296 } 296 }
297 else 297 else
298 { 298 {
299 // Couldn't parse an avatar name, or couldn't find the avatar in the user server 299 // Couldn't parse an avatar name, or couldn't find the avatar in the user server
300 using (StreamWriter writer = new StreamWriter(response)) 300 using (StreamWriter writer = new StreamWriter(response))
301 writer.Write(INVALID_OPENID_PAGE); 301 writer.Write(INVALID_OPENID_PAGE);
302 } 302 }
303 } 303 }
304 } 304 }
305 catch (Exception ex) 305 catch (Exception ex)
306 { 306 {
307 httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError; 307 httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError;
308 using (StreamWriter writer = new StreamWriter(response)) 308 using (StreamWriter writer = new StreamWriter(response))
309 writer.Write(ex.Message); 309 writer.Write(ex.Message);
310 } 310 }
311 } 311 }
312 312
313 /// <summary> 313 /// <summary>
314 /// Parse a URL with a relative path of the form /users/First_Last and try to 314 /// Parse a URL with a relative path of the form /users/First_Last and try to
315 /// retrieve the profile matching that avatar name 315 /// retrieve the profile matching that avatar name
316 /// </summary> 316 /// </summary>
317 /// <param name="requestUrl">URL to parse for an avatar name</param> 317 /// <param name="requestUrl">URL to parse for an avatar name</param>
318 /// <param name="profile">Profile data for the avatar</param> 318 /// <param name="profile">Profile data for the avatar</param>
319 /// <returns>True if the parse and lookup were successful, otherwise false</returns> 319 /// <returns>True if the parse and lookup were successful, otherwise false</returns>
320 bool TryGetProfile(Uri requestUrl, out UserProfileData profile) 320 bool TryGetProfile(Uri requestUrl, out UserProfileData profile)
321 { 321 {
322 if (requestUrl.Segments.Length == 3 && requestUrl.Segments[1] == "users/") 322 if (requestUrl.Segments.Length == 3 && requestUrl.Segments[1] == "users/")
323 { 323 {
324 // Parse the avatar name from the path 324 // Parse the avatar name from the path
325 string username = requestUrl.Segments[requestUrl.Segments.Length - 1]; 325 string username = requestUrl.Segments[requestUrl.Segments.Length - 1];
326 string[] name = username.Split('_'); 326 string[] name = username.Split('_');
327 327
328 if (name.Length == 2) 328 if (name.Length == 2)
329 { 329 {
330 profile = m_loginService.GetTheUser(name[0], name[1]); 330 profile = m_loginService.GetTheUser(name[0], name[1]);
331 return (profile != null); 331 return (profile != null);
332 } 332 }
333 } 333 }
334 334
335 profile = null; 335 profile = null;
336 return false; 336 return false;
337 } 337 }
338 } 338 }
339} 339}
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 962071b..36eaf95 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -8248,7 +8248,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8248 ap.Data = new AvatarPicksReplyPacket.DataBlock[picks.Count]; 8248 ap.Data = new AvatarPicksReplyPacket.DataBlock[picks.Count];
8249 8249
8250 int i = 0; 8250 int i = 0;
8251 foreach(KeyValuePair<UUID, string> pick in picks) 8251 foreach (KeyValuePair<UUID, string> pick in picks)
8252 { 8252 {
8253 ap.Data[i] = new AvatarPicksReplyPacket.DataBlock(); 8253 ap.Data[i] = new AvatarPicksReplyPacket.DataBlock();
8254 ap.Data[i].PickID = pick.Key; 8254 ap.Data[i].PickID = pick.Key;
@@ -8272,7 +8272,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8272 ac.Data = new AvatarClassifiedReplyPacket.DataBlock[classifieds.Count]; 8272 ac.Data = new AvatarClassifiedReplyPacket.DataBlock[classifieds.Count];
8273 8273
8274 int i = 0; 8274 int i = 0;
8275 foreach(KeyValuePair<UUID, string> classified in classifieds) 8275 foreach (KeyValuePair<UUID, string> classified in classifieds)
8276 { 8276 {
8277 ac.Data[i] = new AvatarClassifiedReplyPacket.DataBlock(); 8277 ac.Data[i] = new AvatarClassifiedReplyPacket.DataBlock();
8278 ac.Data[i].ClassifiedID = classified.Key; 8278 ac.Data[i].ClassifiedID = classified.Key;
diff --git a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
index 7964d98..b70e885 100644
--- a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
+++ b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
@@ -1,47 +1,47 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using OpenSim.Framework; 29using OpenSim.Framework;
30using OpenMetaverse; 30using OpenMetaverse;
31 31
32namespace OpenSim.Region.Environment.Interfaces 32namespace OpenSim.Region.Environment.Interfaces
33{ 33{
34 public delegate bool ChildAgentUpdateReceived(AgentData data); 34 public delegate bool ChildAgentUpdateReceived(AgentData data);
35 35
36 public interface IInterregionCommsOut 36 public interface IInterregionCommsOut
37 { 37 {
38 bool SendChildAgentUpdate(ulong regionHandle, AgentData data); 38 bool SendChildAgentUpdate(ulong regionHandle, AgentData data);
39 } 39 }
40 40
41 // This may not be needed, but having it here for now. 41 // This may not be needed, but having it here for now.
42 public interface IInterregionCommsIn 42 public interface IInterregionCommsIn
43 { 43 {
44 event ChildAgentUpdateReceived OnChildAgentUpdate; 44 event ChildAgentUpdateReceived OnChildAgentUpdate;
45 } 45 }
46 46
47} 47}
diff --git a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs
index 6812e6d..dc2e3de 100644
--- a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs
+++ b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs
@@ -1,140 +1,140 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27using System; 27using System;
28using System.Collections; 28using System.Collections;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Net; 30using System.Net;
31using System.Net.Sockets; 31using System.Net.Sockets;
32using System.Reflection; 32using System.Reflection;
33using System.Threading; 33using System.Threading;
34using System.Xml; 34using System.Xml;
35using OpenMetaverse; 35using OpenMetaverse;
36using log4net; 36using log4net;
37using Nini.Config; 37using Nini.Config;
38using Nwc.XmlRpc; 38using Nwc.XmlRpc;
39using OpenSim.Framework; 39using OpenSim.Framework;
40using OpenSim.Framework.Communications.Cache; 40using OpenSim.Framework.Communications.Cache;
41using OpenSim.Region.Environment.Interfaces; 41using OpenSim.Region.Environment.Interfaces;
42using OpenSim.Region.Interfaces; 42using OpenSim.Region.Interfaces;
43using OpenSim.Region.Environment.Scenes; 43using OpenSim.Region.Environment.Scenes;
44 44
45namespace OpenSim.Region.Environment.Modules.Communications.Local 45namespace OpenSim.Region.Environment.Modules.Communications.Local
46{ 46{
47 public class LocalInterregionComms : IRegionModule, IInterregionCommsOut, IInterregionCommsIn 47 public class LocalInterregionComms : IRegionModule, IInterregionCommsOut, IInterregionCommsIn
48 { 48 {
49 private bool m_enabled = false; 49 private bool m_enabled = false;
50 50
51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
52 private List<Scene> m_sceneList = new List<Scene>(); 52 private List<Scene> m_sceneList = new List<Scene>();
53 53
54 #region Events 54 #region Events
55 public event ChildAgentUpdateReceived OnChildAgentUpdate; 55 public event ChildAgentUpdateReceived OnChildAgentUpdate;
56 56
57 #endregion /* Events */ 57 #endregion /* Events */
58 58
59 #region IRegionModule 59 #region IRegionModule
60 60
61 public void Initialise(Scene scene, IConfigSource config) 61 public void Initialise(Scene scene, IConfigSource config)
62 { 62 {
63 if (m_sceneList.Count == 0) 63 if (m_sceneList.Count == 0)
64 { 64 {
65 IConfig startupConfig = config.Configs["Communications"]; 65 IConfig startupConfig = config.Configs["Communications"];
66 66
67 if ((startupConfig == null) || 67 if ((startupConfig == null) ||
68 (startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "LocalComms")) 68 (startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "LocalComms"))
69 m_enabled = true; 69 m_enabled = true;
70 } 70 }
71 71
72 if (!m_enabled) 72 if (!m_enabled)
73 return; 73 return;
74 74
75 Init(scene); 75 Init(scene);
76 76
77 } 77 }
78 78
79 public void PostInitialise() 79 public void PostInitialise()
80 { 80 {
81 } 81 }
82 82
83 public void Close() 83 public void Close()
84 { 84 {
85 } 85 }
86 86
87 public string Name 87 public string Name
88 { 88 {
89 get { return "LocalInterregionCommsModule"; } 89 get { return "LocalInterregionCommsModule"; }
90 } 90 }
91 91
92 public bool IsSharedModule 92 public bool IsSharedModule
93 { 93 {
94 get { return true; } 94 get { return true; }
95 } 95 }
96 /// <summary> 96 /// <summary>
97 /// Can be called from other modules. 97 /// Can be called from other modules.
98 /// </summary> 98 /// </summary>
99 /// <param name="scene"></param> 99 /// <param name="scene"></param>
100 public void Init(Scene scene) 100 public void Init(Scene scene)
101 { 101 {
102 if (!m_sceneList.Contains(scene)) 102 if (!m_sceneList.Contains(scene))
103 { 103 {
104 lock (m_sceneList) 104 lock (m_sceneList)
105 { 105 {
106 m_sceneList.Add(scene); 106 m_sceneList.Add(scene);
107 if (m_enabled) 107 if (m_enabled)
108 scene.RegisterModuleInterface<IInterregionCommsOut>(this); 108 scene.RegisterModuleInterface<IInterregionCommsOut>(this);
109 scene.RegisterModuleInterface<IInterregionCommsIn>(this); 109 scene.RegisterModuleInterface<IInterregionCommsIn>(this);
110 } 110 }
111 111
112 } 112 }
113 } 113 }
114 114
115 #endregion /* IRegionModule */ 115 #endregion /* IRegionModule */
116 116
117 #region IInterregionComms 117 #region IInterregionComms
118 118
119 public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) 119 public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData)
120 { 120 {
121 lock (m_sceneList) 121 lock (m_sceneList)
122 { 122 {
123 foreach (Scene s in m_sceneList) 123 foreach (Scene s in m_sceneList)
124 { 124 {
125 if (s.RegionInfo.RegionHandle == regionHandle) 125 if (s.RegionInfo.RegionHandle == regionHandle)
126 { 126 {
127 //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); 127 //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate");
128 return s.IncomingChildAgentDataUpdate(cAgentData); 128 return s.IncomingChildAgentDataUpdate(cAgentData);
129 //if (OnChildAgentUpdate != null) 129 //if (OnChildAgentUpdate != null)
130 // return OnChildAgentUpdate(cAgentData); 130 // return OnChildAgentUpdate(cAgentData);
131 } 131 }
132 } 132 }
133 } 133 }
134 m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); 134 m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate");
135 return false; 135 return false;
136 } 136 }
137 137
138 #endregion /* IInterregionComms */ 138 #endregion /* IInterregionComms */
139 } 139 }
140} 140}
diff --git a/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs
index a553136..a94ca8b 100644
--- a/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs
+++ b/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs
@@ -1,86 +1,86 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27using System; 27using System;
28using System.Collections; 28using System.Collections;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection; 30using System.Reflection;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Communications; 34using OpenSim.Framework.Communications;
35using OpenSim.Framework.Communications.Cache; 35using OpenSim.Framework.Communications.Cache;
36using OpenSim.Region.Environment.Interfaces; 36using OpenSim.Region.Environment.Interfaces;
37using OpenSim.Region.Interfaces; 37using OpenSim.Region.Interfaces;
38using OpenSim.Region.Environment.Scenes; 38using OpenSim.Region.Environment.Scenes;
39using OpenSim.Region.Environment.Scenes.Hypergrid; 39using OpenSim.Region.Environment.Scenes.Hypergrid;
40 40
41namespace OpenSim.Region.Environment.Modules.Communications.REST 41namespace OpenSim.Region.Environment.Modules.Communications.REST
42{ 42{
43 public class HGInterregionComms : RESTInterregionComms 43 public class HGInterregionComms : RESTInterregionComms
44 { 44 {
45 private static bool initialized = false; 45 private static bool initialized = false;
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 47
48 #region IRegionModule 48 #region IRegionModule
49 49
50 public override void Initialise(Scene scene, IConfigSource config) 50 public override void Initialise(Scene scene, IConfigSource config)
51 { 51 {
52 if (!initialized) 52 if (!initialized)
53 { 53 {
54 initialized = true; 54 initialized = true;
55 IConfig startupConfig = config.Configs["Communications"]; 55 IConfig startupConfig = config.Configs["Communications"];
56 if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "HGRESTComms")) 56 if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "HGRESTComms"))
57 { 57 {
58 m_enabled = true; 58 m_enabled = true;
59 InitOnce(scene); 59 InitOnce(scene);
60 } 60 }
61 } 61 }
62 62
63 if (!m_enabled) 63 if (!m_enabled)
64 return; 64 return;
65 65
66 InitEach(scene); 66 InitEach(scene);
67 } 67 }
68 68
69 public override string Name 69 public override string Name
70 { 70 {
71 get { return "HGInterregionCommsModule"; } 71 get { return "HGInterregionCommsModule"; }
72 } 72 }
73 73
74 #endregion /* IRegionModule */ 74 #endregion /* IRegionModule */
75 75
76 #region Misc 76 #region Misc
77 77
78 protected override ulong GetRegionHandle(RegionInfo region) 78 protected override ulong GetRegionHandle(RegionInfo region)
79 { 79 {
80 return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.FindRegionHandle(region.RegionHandle); 80 return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.FindRegionHandle(region.RegionHandle);
81 } 81 }
82 82
83 #endregion /* Misc */ 83 #endregion /* Misc */
84 84
85 } 85 }
86} 86}
diff --git a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs
index 4c2308e..022f635 100644
--- a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs
+++ b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs
@@ -1,296 +1,296 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27using System; 27using System;
28using System.Collections; 28using System.Collections;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.IO; 30using System.IO;
31using System.Net; 31using System.Net;
32using System.Net.Sockets; 32using System.Net.Sockets;
33using System.Reflection; 33using System.Reflection;
34using System.Threading; 34using System.Threading;
35using System.Xml; 35using System.Xml;
36using OpenMetaverse; 36using OpenMetaverse;
37using OpenMetaverse.StructuredData; 37using OpenMetaverse.StructuredData;
38using log4net; 38using log4net;
39using Nini.Config; 39using Nini.Config;
40using Nwc.XmlRpc; 40using Nwc.XmlRpc;
41using OpenSim.Framework; 41using OpenSim.Framework;
42using OpenSim.Framework.Communications; 42using OpenSim.Framework.Communications;
43using OpenSim.Framework.Communications.Cache; 43using OpenSim.Framework.Communications.Cache;
44using OpenSim.Region.Environment.Interfaces; 44using OpenSim.Region.Environment.Interfaces;
45using OpenSim.Region.Interfaces; 45using OpenSim.Region.Interfaces;
46using OpenSim.Region.Environment.Scenes; 46using OpenSim.Region.Environment.Scenes;
47using OpenSim.Region.Environment.Modules.Communications.Local; 47using OpenSim.Region.Environment.Modules.Communications.Local;
48 48
49namespace OpenSim.Region.Environment.Modules.Communications.REST 49namespace OpenSim.Region.Environment.Modules.Communications.REST
50{ 50{
51 public class RESTInterregionComms : IRegionModule, IInterregionCommsOut 51 public class RESTInterregionComms : IRegionModule, IInterregionCommsOut
52 { 52 {
53 private static bool initialized = false; 53 private static bool initialized = false;
54 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 54 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
55 55
56 protected bool m_enabled = false; 56 protected bool m_enabled = false;
57 protected Scene m_aScene; 57 protected Scene m_aScene;
58 // RESTInterregionComms does not care about local regions; it delegates that to the Local module 58 // RESTInterregionComms does not care about local regions; it delegates that to the Local module
59 protected LocalInterregionComms m_localBackend; 59 protected LocalInterregionComms m_localBackend;
60 60
61 protected CommunicationsManager m_commsManager; 61 protected CommunicationsManager m_commsManager;
62 62
63 #region IRegionModule 63 #region IRegionModule
64 64
65 public virtual void Initialise(Scene scene, IConfigSource config) 65 public virtual void Initialise(Scene scene, IConfigSource config)
66 { 66 {
67 if (!initialized) 67 if (!initialized)
68 { 68 {
69 initialized = true; 69 initialized = true;
70 IConfig startupConfig = config.Configs["Communications"]; 70 IConfig startupConfig = config.Configs["Communications"];
71 if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "RESTComms")) 71 if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "RESTComms"))
72 { 72 {
73 m_enabled = true; 73 m_enabled = true;
74 InitOnce(scene); 74 InitOnce(scene);
75 } 75 }
76 } 76 }
77 77
78 if (!m_enabled) 78 if (!m_enabled)
79 return; 79 return;
80 80
81 InitEach(scene); 81 InitEach(scene);
82 82
83 } 83 }
84 84
85 public virtual void PostInitialise() 85 public virtual void PostInitialise()
86 { 86 {
87 if (m_enabled) 87 if (m_enabled)
88 AddHTTPHandlers(); 88 AddHTTPHandlers();
89 } 89 }
90 90
91 public virtual void Close() 91 public virtual void Close()
92 { 92 {
93 } 93 }
94 94
95 public virtual string Name 95 public virtual string Name
96 { 96 {
97 get { return "RESTInterregionCommsModule"; } 97 get { return "RESTInterregionCommsModule"; }
98 } 98 }
99 99
100 public virtual bool IsSharedModule 100 public virtual bool IsSharedModule
101 { 101 {
102 get { return true; } 102 get { return true; }
103 } 103 }
104 104
105 protected virtual void InitEach(Scene scene) 105 protected virtual void InitEach(Scene scene)
106 { 106 {
107 m_localBackend.Init(scene); 107 m_localBackend.Init(scene);
108 scene.RegisterModuleInterface<IInterregionCommsOut>(this); 108 scene.RegisterModuleInterface<IInterregionCommsOut>(this);
109 } 109 }
110 110
111 protected virtual void InitOnce(Scene scene) 111 protected virtual void InitOnce(Scene scene)
112 { 112 {
113 m_localBackend = new LocalInterregionComms(); 113 m_localBackend = new LocalInterregionComms();
114 m_commsManager = scene.CommsManager; 114 m_commsManager = scene.CommsManager;
115 m_aScene = scene; 115 m_aScene = scene;
116 } 116 }
117 117
118 protected virtual void AddHTTPHandlers() 118 protected virtual void AddHTTPHandlers()
119 { 119 {
120 m_aScene.AddHTTPHandler("/ChildAgentUpdate/", ChildAgentUpdateHandler); 120 m_aScene.AddHTTPHandler("/ChildAgentUpdate/", ChildAgentUpdateHandler);
121 } 121 }
122 122
123 #endregion /* IRegionModule */ 123 #endregion /* IRegionModule */
124 124
125 #region IInterregionComms 125 #region IInterregionComms
126 126
127 public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) 127 public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData)
128 { 128 {
129 // Try local first 129 // Try local first
130 if (m_localBackend.SendChildAgentUpdate(regionHandle, cAgentData)) 130 if (m_localBackend.SendChildAgentUpdate(regionHandle, cAgentData))
131 return true; 131 return true;
132 132
133 // else do the remote thing 133 // else do the remote thing
134 RegionInfo regInfo = m_commsManager.GridService.RequestNeighbourInfo(regionHandle); 134 RegionInfo regInfo = m_commsManager.GridService.RequestNeighbourInfo(regionHandle);
135 if (regInfo != null) 135 if (regInfo != null)
136 { 136 {
137 return DoChildAgentUpdateCall(regInfo, cAgentData); 137 return DoChildAgentUpdateCall(regInfo, cAgentData);
138 } 138 }
139 139
140 return false; 140 return false;
141 141
142 } 142 }
143 143
144 protected bool DoChildAgentUpdateCall(RegionInfo region, AgentData cAgentData) 144 protected bool DoChildAgentUpdateCall(RegionInfo region, AgentData cAgentData)
145 { 145 {
146 string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/ChildAgentUpdate/"; 146 string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/ChildAgentUpdate/";
147 //Console.WriteLine(" >>> DoChildAgentUpdateCall <<< " + uri); 147 //Console.WriteLine(" >>> DoChildAgentUpdateCall <<< " + uri);
148 148
149 WebRequest ChildUpdateRequest = WebRequest.Create(uri); 149 WebRequest ChildUpdateRequest = WebRequest.Create(uri);
150 ChildUpdateRequest.Method = "PUT"; 150 ChildUpdateRequest.Method = "PUT";
151 ChildUpdateRequest.ContentType = "application/json"; 151 ChildUpdateRequest.ContentType = "application/json";
152 ChildUpdateRequest.Timeout = 10000; 152 ChildUpdateRequest.Timeout = 10000;
153 153
154 // Fill it in 154 // Fill it in
155 OSDMap args = null; 155 OSDMap args = null;
156 try 156 try
157 { 157 {
158 args = cAgentData.PackUpdateMessage(); 158 args = cAgentData.PackUpdateMessage();
159 } 159 }
160 catch (Exception e) 160 catch (Exception e)
161 { 161 {
162 m_log.Debug("[REST COMMS]: PackUpdateMessage failed with exception: " + e.Message); 162 m_log.Debug("[REST COMMS]: PackUpdateMessage failed with exception: " + e.Message);
163 } 163 }
164 // Add the regionhandle of the destination region 164 // Add the regionhandle of the destination region
165 ulong regionHandle = GetRegionHandle(region); 165 ulong regionHandle = GetRegionHandle(region);
166 args["destination_handle"] = OSD.FromString(regionHandle.ToString()); 166 args["destination_handle"] = OSD.FromString(regionHandle.ToString());
167 167
168 string strBuffer = ""; 168 string strBuffer = "";
169 byte[] buffer = new byte[1]; 169 byte[] buffer = new byte[1];
170 try 170 try
171 { 171 {
172 strBuffer = OSDParser.SerializeJsonString(args); 172 strBuffer = OSDParser.SerializeJsonString(args);
173 System.Text.UTF8Encoding str = new System.Text.UTF8Encoding(); 173 System.Text.UTF8Encoding str = new System.Text.UTF8Encoding();
174 buffer = str.GetBytes(strBuffer); 174 buffer = str.GetBytes(strBuffer);
175 175
176 } 176 }
177 catch (Exception e) 177 catch (Exception e)
178 { 178 {
179 m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildUpdate: {0}", e.Message); 179 m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildUpdate: {0}", e.Message);
180 // ignore. buffer will be empty, caller should check. 180 // ignore. buffer will be empty, caller should check.
181 } 181 }
182 182
183 Stream os = null; 183 Stream os = null;
184 try 184 try
185 { // send the Post 185 { // send the Post
186 ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send 186 ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send
187 os = ChildUpdateRequest.GetRequestStream(); 187 os = ChildUpdateRequest.GetRequestStream();
188 os.Write(buffer, 0, strBuffer.Length); //Send it 188 os.Write(buffer, 0, strBuffer.Length); //Send it
189 os.Close(); 189 os.Close();
190 //m_log.InfoFormat("[REST COMMS]: Posted ChildAgentUpdate request to remote sim {0}", uri); 190 //m_log.InfoFormat("[REST COMMS]: Posted ChildAgentUpdate request to remote sim {0}", uri);
191 } 191 }
192 catch (WebException ex) 192 catch (WebException ex)
193 { 193 {
194 //m_log.InfoFormat("[REST COMMS]: Bad send on ChildAgentUpdate {0}", ex.Message); 194 //m_log.InfoFormat("[REST COMMS]: Bad send on ChildAgentUpdate {0}", ex.Message);
195 195
196 return false; 196 return false;
197 } 197 }
198 198
199 // Let's wait for the response 199 // Let's wait for the response
200 //m_log.Info("[REST COMMS]: Waiting for a reply after ChildAgentUpdate"); 200 //m_log.Info("[REST COMMS]: Waiting for a reply after ChildAgentUpdate");
201 string reply = null; 201 string reply = null;
202 try 202 try
203 { 203 {
204 WebResponse webResponse = ChildUpdateRequest.GetResponse(); 204 WebResponse webResponse = ChildUpdateRequest.GetResponse();
205 if (webResponse == null) 205 if (webResponse == null)
206 { 206 {
207 m_log.Info("[REST COMMS]: Null reply on ChilAgentUpdate post"); 207 m_log.Info("[REST COMMS]: Null reply on ChilAgentUpdate post");
208 } 208 }
209 209
210 StreamReader sr = new StreamReader(webResponse.GetResponseStream()); 210 StreamReader sr = new StreamReader(webResponse.GetResponseStream());
211 reply = sr.ReadToEnd().Trim(); 211 reply = sr.ReadToEnd().Trim();
212 sr.Close(); 212 sr.Close();
213 //m_log.InfoFormat("[REST COMMS]: ChilAgentUpdate reply was {0} ", reply); 213 //m_log.InfoFormat("[REST COMMS]: ChilAgentUpdate reply was {0} ", reply);
214 214
215 } 215 }
216 catch (WebException ex) 216 catch (WebException ex)
217 { 217 {
218 m_log.InfoFormat("[REST COMMS]: exception on reply of ChilAgentUpdate {0}", ex.Message); 218 m_log.InfoFormat("[REST COMMS]: exception on reply of ChilAgentUpdate {0}", ex.Message);
219 // ignore, really 219 // ignore, really
220 } 220 }
221 221
222 return true; 222 return true;
223 223
224 } 224 }
225 225
226 #endregion /* IInterregionComms */ 226 #endregion /* IInterregionComms */
227 227
228 #region Called from remote instances on this instance 228 #region Called from remote instances on this instance
229 229
230 public Hashtable ChildAgentUpdateHandler(Hashtable request) 230 public Hashtable ChildAgentUpdateHandler(Hashtable request)
231 { 231 {
232 //m_log.Debug("[CONNECTION DEBUGGING]: ChildDataUpdateHandler Called"); 232 //m_log.Debug("[CONNECTION DEBUGGING]: ChildDataUpdateHandler Called");
233 233
234 Hashtable responsedata = new Hashtable(); 234 Hashtable responsedata = new Hashtable();
235 responsedata["content_type"] = "text/html"; 235 responsedata["content_type"] = "text/html";
236 236
237 OSDMap args = null; 237 OSDMap args = null;
238 try 238 try
239 { 239 {
240 OSD buffer; 240 OSD buffer;
241 // We should pay attention to the content-type, but let's assume we know it's Json 241 // We should pay attention to the content-type, but let's assume we know it's Json
242 buffer = OSDParser.DeserializeJson((string)request["body"]); 242 buffer = OSDParser.DeserializeJson((string)request["body"]);
243 if (buffer.Type == OSDType.Map) 243 if (buffer.Type == OSDType.Map)
244 args = (OSDMap)buffer; 244 args = (OSDMap)buffer;
245 else 245 else
246 { 246 {
247 // uh? 247 // uh?
248 m_log.Debug("[REST COMMS]: Got OSD of type " + buffer.Type.ToString()); 248 m_log.Debug("[REST COMMS]: Got OSD of type " + buffer.Type.ToString());
249 } 249 }
250 } 250 }
251 catch (Exception ex) 251 catch (Exception ex)
252 { 252 {
253 m_log.InfoFormat("[REST COMMS]: exception on parse of ChildAgentUpdate message {0}", ex.Message); 253 m_log.InfoFormat("[REST COMMS]: exception on parse of ChildAgentUpdate message {0}", ex.Message);
254 responsedata["int_response_code"] = 400; 254 responsedata["int_response_code"] = 400;
255 responsedata["str_response_string"] = "false"; 255 responsedata["str_response_string"] = "false";
256 256
257 return responsedata; 257 return responsedata;
258 } 258 }
259 259
260 // retrieve the regionhandle 260 // retrieve the regionhandle
261 ulong regionhandle = 0; 261 ulong regionhandle = 0;
262 if (args["destination_handle"] != null) 262 if (args["destination_handle"] != null)
263 UInt64.TryParse(args["destination_handle"].AsString(), out regionhandle); 263 UInt64.TryParse(args["destination_handle"].AsString(), out regionhandle);
264 264
265 AgentData agent = new AgentData(); 265 AgentData agent = new AgentData();
266 try 266 try
267 { 267 {
268 agent.UnpackUpdateMessage(args); 268 agent.UnpackUpdateMessage(args);
269 } 269 }
270 catch (Exception ex) 270 catch (Exception ex)
271 { 271 {
272 m_log.InfoFormat("[REST COMMS]: exception on unpacking ChildAgentUpdate message {0}", ex.Message); 272 m_log.InfoFormat("[REST COMMS]: exception on unpacking ChildAgentUpdate message {0}", ex.Message);
273 } 273 }
274 //agent.Dump(); 274 //agent.Dump();
275 275
276 bool result = m_localBackend.SendChildAgentUpdate(regionhandle, agent); 276 bool result = m_localBackend.SendChildAgentUpdate(regionhandle, agent);
277 277
278 278
279 responsedata["int_response_code"] = 200; 279 responsedata["int_response_code"] = 200;
280 responsedata["str_response_string"] = result.ToString(); 280 responsedata["str_response_string"] = result.ToString();
281 return responsedata; 281 return responsedata;
282 } 282 }
283 283
284 #endregion 284 #endregion
285 285
286 #region Misc 286 #region Misc
287 287
288 protected virtual ulong GetRegionHandle(RegionInfo region) 288 protected virtual ulong GetRegionHandle(RegionInfo region)
289 { 289 {
290 return region.RegionHandle; 290 return region.RegionHandle;
291 } 291 }
292 292
293 #endregion /* Misc */ 293 #endregion /* Misc */
294 294
295 } 295 }
296} 296}
diff --git a/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs
index 6b9fde4..f8a9879 100644
--- a/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs
+++ b/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs
@@ -325,7 +325,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender
325 int hex = 0; 325 int hex = 0;
326 326
327 Color newColour; 327 Color newColour;
328 if(Int32.TryParse(nextLine, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out hex)) 328 if (Int32.TryParse(nextLine, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out hex))
329 { 329 {
330 newColour = Color.FromArgb(hex); 330 newColour = Color.FromArgb(hex);
331 } 331 }
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
index 1117c7b..96e7919 100644
--- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
@@ -533,7 +533,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
533 { 533 {
534 permission = true; 534 permission = true;
535 } 535 }
536 else if(group.IsAttachment) 536 else if (group.IsAttachment)
537 { 537 {
538 permission = false; 538 permission = false;
539 } 539 }
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 6aa34e4..56b5df6 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -4456,14 +4456,14 @@ namespace OpenSim.Region.Environment.Scenes
4456 // update non-physical objects like the joint proxy objects that represent the position 4456 // update non-physical objects like the joint proxy objects that represent the position
4457 // of the joints in the scene. 4457 // of the joints in the scene.
4458 4458
4459 // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene 4459 // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene
4460 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called 4460 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called
4461 // from within the OdePhysicsScene. 4461 // from within the OdePhysicsScene.
4462 4462
4463 protected internal void jointMoved(PhysicsJoint joint) 4463 protected internal void jointMoved(PhysicsJoint joint)
4464 { 4464 {
4465 4465
4466 // m_parentScene.PhysicsScene.DumpJointInfo(); // non-thread-locked version; we should already be in a lock(OdeLock) when this callback is invoked 4466 // m_parentScene.PhysicsScene.DumpJointInfo(); // non-thread-locked version; we should already be in a lock (OdeLock) when this callback is invoked
4467 // FIXME: this causes a sequential lookup of all objects in the scene; use a dictionary 4467 // FIXME: this causes a sequential lookup of all objects in the scene; use a dictionary
4468 SceneObjectPart jointProxyObject = GetSceneObjectPart(joint.ObjectNameInScene); 4468 SceneObjectPart jointProxyObject = GetSceneObjectPart(joint.ObjectNameInScene);
4469 if (jointProxyObject == null) 4469 if (jointProxyObject == null)
@@ -4521,7 +4521,7 @@ namespace OpenSim.Region.Environment.Scenes
4521 // update non-physical objects like the joint proxy objects that represent the position 4521 // update non-physical objects like the joint proxy objects that represent the position
4522 // of the joints in the scene. 4522 // of the joints in the scene.
4523 4523
4524 // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene 4524 // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene
4525 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called 4525 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called
4526 // from within the OdePhysicsScene. 4526 // from within the OdePhysicsScene.
4527 protected internal void jointDeactivated(PhysicsJoint joint) 4527 protected internal void jointDeactivated(PhysicsJoint joint)
@@ -4547,7 +4547,7 @@ namespace OpenSim.Region.Environment.Scenes
4547 // alert the user of errors by using the debug channel in the same way that scripts alert 4547 // alert the user of errors by using the debug channel in the same way that scripts alert
4548 // the user of compile errors. 4548 // the user of compile errors.
4549 4549
4550 // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene 4550 // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene
4551 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called 4551 // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called
4552 // from within the OdePhysicsScene. 4552 // from within the OdePhysicsScene.
4553 public void jointErrorMessage(PhysicsJoint joint, string message) 4553 public void jointErrorMessage(PhysicsJoint joint, string message)
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 0f3e065..8b45484 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -1624,7 +1624,7 @@ if (m_shape != null) {
1624 part.m_fromUserInventoryItemID = fromUserInventoryItemId; 1624 part.m_fromUserInventoryItemID = fromUserInventoryItemId;
1625 1625
1626 // for tempOnRez objects, we have to fix the Expire date. 1626 // for tempOnRez objects, we have to fix the Expire date.
1627 if((part.Flags & PrimFlags.TemporaryOnRez) != 0) part.ResetExpire(); 1627 if ((part.Flags & PrimFlags.TemporaryOnRez) != 0) part.ResetExpire();
1628 1628
1629 return part; 1629 return part;
1630 } 1630 }
diff --git a/OpenSim/Region/Physics/Manager/PhysicsJoint.cs b/OpenSim/Region/Physics/Manager/PhysicsJoint.cs
index 9ef1c84..9474ee4 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsJoint.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsJoint.cs
@@ -1,55 +1,55 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using OpenSim.Framework; 30using OpenSim.Framework;
31using OpenMetaverse; 31using OpenMetaverse;
32 32
33namespace OpenSim.Region.Physics.Manager 33namespace OpenSim.Region.Physics.Manager
34{ 34{
35 public enum PhysicsJointType : int 35 public enum PhysicsJointType : int
36 { 36 {
37 Ball = 0, 37 Ball = 0,
38 Hinge = 1 38 Hinge = 1
39 } 39 }
40 40
41 public class PhysicsJoint 41 public class PhysicsJoint
42 { 42 {
43 public virtual bool IsInPhysicsEngine { get { return false; } } // set internally to indicate if this joint has already been passed to the physics engine or is still pending 43 public virtual bool IsInPhysicsEngine { get { return false; } } // set internally to indicate if this joint has already been passed to the physics engine or is still pending
44 public PhysicsJointType Type; 44 public PhysicsJointType Type;
45 public string RawParams; 45 public string RawParams;
46 public List<string> BodyNames = new List<string>(); 46 public List<string> BodyNames = new List<string>();
47 public PhysicsVector Position; // global coords 47 public PhysicsVector Position; // global coords
48 public Quaternion Rotation; // global coords 48 public Quaternion Rotation; // global coords
49 public string ObjectNameInScene; // proxy object in scene that represents the joint position/orientation 49 public string ObjectNameInScene; // proxy object in scene that represents the joint position/orientation
50 public string TrackedBodyName; // body name that this joint is attached to (ObjectNameInScene will follow TrackedBodyName) 50 public string TrackedBodyName; // body name that this joint is attached to (ObjectNameInScene will follow TrackedBodyName)
51 public Quaternion LocalRotation; // joint orientation relative to one of the involved bodies, the tracked body 51 public Quaternion LocalRotation; // joint orientation relative to one of the involved bodies, the tracked body
52 public int ErrorMessageCount; // total # of error messages printed for this joint since its creation. if too many, further error messages are suppressed to prevent flooding. 52 public int ErrorMessageCount; // total # of error messages printed for this joint since its creation. if too many, further error messages are suppressed to prevent flooding.
53 public const int maxErrorMessages = 100; // no more than this # of error messages will be printed for each joint 53 public const int maxErrorMessages = 100; // no more than this # of error messages will be printed for each joint
54 } 54 }
55} 55}
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
index d080e9b..9858d6a 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs
@@ -1,49 +1,49 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using OpenMetaverse; 29using OpenMetaverse;
30using Ode.NET; 30using Ode.NET;
31using OpenSim.Framework; 31using OpenSim.Framework;
32using OpenSim.Region.Physics.Manager; 32using OpenSim.Region.Physics.Manager;
33using OpenSim.Region.Physics.Manager; 33using OpenSim.Region.Physics.Manager;
34using OpenSim.Region.Physics.OdePlugin; 34using OpenSim.Region.Physics.OdePlugin;
35 35
36namespace OpenSim.Region.Physics.OdePlugin 36namespace OpenSim.Region.Physics.OdePlugin
37{ 37{
38 class OdePhysicsJoint : PhysicsJoint 38 class OdePhysicsJoint : PhysicsJoint
39 { 39 {
40 public override bool IsInPhysicsEngine 40 public override bool IsInPhysicsEngine
41 { 41 {
42 get 42 get
43 { 43 {
44 return (jointID != IntPtr.Zero); 44 return (jointID != IntPtr.Zero);
45 } 45 }
46 } 46 }
47 public IntPtr jointID; 47 public IntPtr jointID;
48 } 48 }
49} 49}
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index acd2569..a250a6a 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -1366,28 +1366,28 @@ namespace OpenSim.Region.Physics.OdePlugin
1366 get { return m_NINJA_physics_joints_enabled; } 1366 get { return m_NINJA_physics_joints_enabled; }
1367 } 1367 }
1368 1368
1369 // internal utility function: must be called within a lock(OdeLock) 1369 // internal utility function: must be called within a lock (OdeLock)
1370 private void InternalAddActiveJoint(PhysicsJoint joint) 1370 private void InternalAddActiveJoint(PhysicsJoint joint)
1371 { 1371 {
1372 activeJoints.Add(joint); 1372 activeJoints.Add(joint);
1373 SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint); 1373 SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint);
1374 } 1374 }
1375 1375
1376 // internal utility function: must be called within a lock(OdeLock) 1376 // internal utility function: must be called within a lock (OdeLock)
1377 private void InternalAddPendingJoint(OdePhysicsJoint joint) 1377 private void InternalAddPendingJoint(OdePhysicsJoint joint)
1378 { 1378 {
1379 pendingJoints.Add(joint); 1379 pendingJoints.Add(joint);
1380 SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint); 1380 SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint);
1381 } 1381 }
1382 1382
1383 // internal utility function: must be called within a lock(OdeLock) 1383 // internal utility function: must be called within a lock (OdeLock)
1384 private void InternalRemovePendingJoint(PhysicsJoint joint) 1384 private void InternalRemovePendingJoint(PhysicsJoint joint)
1385 { 1385 {
1386 pendingJoints.Remove(joint); 1386 pendingJoints.Remove(joint);
1387 SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene); 1387 SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene);
1388 } 1388 }
1389 1389
1390 // internal utility function: must be called within a lock(OdeLock) 1390 // internal utility function: must be called within a lock (OdeLock)
1391 private void InternalRemoveActiveJoint(PhysicsJoint joint) 1391 private void InternalRemoveActiveJoint(PhysicsJoint joint)
1392 { 1392 {
1393 activeJoints.Remove(joint); 1393 activeJoints.Remove(joint);
@@ -1640,7 +1640,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1640 } 1640 }
1641 } 1641 }
1642 1642
1643 // normally called from within OnJointMoved, which is called from within a lock(OdeLock) 1643 // normally called from within OnJointMoved, which is called from within a lock (OdeLock)
1644 public override PhysicsVector GetJointAnchor(PhysicsJoint joint) 1644 public override PhysicsVector GetJointAnchor(PhysicsJoint joint)
1645 { 1645 {
1646 Debug.Assert(joint.IsInPhysicsEngine); 1646 Debug.Assert(joint.IsInPhysicsEngine);
@@ -1666,7 +1666,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1666 return new PhysicsVector(pos.X, pos.Y, pos.Z); 1666 return new PhysicsVector(pos.X, pos.Y, pos.Z);
1667 } 1667 }
1668 1668
1669 // normally called from within OnJointMoved, which is called from within a lock(OdeLock) 1669 // normally called from within OnJointMoved, which is called from within a lock (OdeLock)
1670 // WARNING: ODE sometimes returns <0,0,0> as the joint axis! Therefore this function 1670 // WARNING: ODE sometimes returns <0,0,0> as the joint axis! Therefore this function
1671 // appears to be unreliable. Fortunately we can compute the joint axis ourselves by 1671 // appears to be unreliable. Fortunately we can compute the joint axis ourselves by
1672 // keeping track of the joint's original orientation relative to one of the involved bodies. 1672 // keeping track of the joint's original orientation relative to one of the involved bodies.
@@ -2230,8 +2230,8 @@ namespace OpenSim.Region.Physics.OdePlugin
2230 2230
2231 if (SupportsNINJAJoints) 2231 if (SupportsNINJAJoints)
2232 { 2232 {
2233 DeleteRequestedJoints(); // this must be outside of the lock(OdeLock) to avoid deadlocks 2233 DeleteRequestedJoints(); // this must be outside of the lock (OdeLock) to avoid deadlocks
2234 CreateRequestedJoints(); // this must be outside of the lock(OdeLock) to avoid deadlocks 2234 CreateRequestedJoints(); // this must be outside of the lock (OdeLock) to avoid deadlocks
2235 } 2235 }
2236 2236
2237 lock (OdeLock) 2237 lock (OdeLock)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 89911ec..bb77c1e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3644,7 +3644,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3644 3644
3645 partItemID = item.ItemID; 3645 partItemID = item.ItemID;
3646 int linkNumber = m_host.LinkNum; 3646 int linkNumber = m_host.LinkNum;
3647 if(m_host.ParentGroup.Children.Count == 1) 3647 if (m_host.ParentGroup.Children.Count == 1)
3648 linkNumber = 0; 3648 linkNumber = 0;
3649 3649
3650 3650
diff --git a/ThirdPartyLicenses/DotNetOpenid.txt b/ThirdPartyLicenses/DotNetOpenid.txt
index 1b6f678..6833494 100644
--- a/ThirdPartyLicenses/DotNetOpenid.txt
+++ b/ThirdPartyLicenses/DotNetOpenid.txt
@@ -1,10 +1,10 @@
1Copyright (c) 2008, Andrew Arnott, Scott Hanselman, Jason Alexander, et. al 1Copyright (c) 2008, Andrew Arnott, Scott Hanselman, Jason Alexander, et. al
2All rights reserved. 2All rights reserved.
3 3
4Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 5
6 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 * 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. 7 * 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.
8 * Neither the name of the DotNetOpenId nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 8 * Neither the name of the DotNetOpenId nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9 9
10THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR 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. \ No newline at end of file 10THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR 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. \ No newline at end of file