diff options
Diffstat (limited to 'linden/indra/llmessage')
36 files changed, 2346 insertions, 2264 deletions
diff --git a/linden/indra/llmessage/files.lst b/linden/indra/llmessage/files.lst index 456dffe..00a22b0 100644 --- a/linden/indra/llmessage/files.lst +++ b/linden/indra/llmessage/files.lst | |||
@@ -27,10 +27,12 @@ llmessage/llmessagebuilder.cpp | |||
27 | llmessage/llmessageconfig.cpp | 27 | llmessage/llmessageconfig.cpp |
28 | llmessage/llmessagereader.cpp | 28 | llmessage/llmessagereader.cpp |
29 | llmessage/llmessagetemplate.cpp | 29 | llmessage/llmessagetemplate.cpp |
30 | llmessage/llmessagetemplateparser.cpp | ||
30 | llmessage/llmessagethrottle.cpp | 31 | llmessage/llmessagethrottle.cpp |
31 | llmessage/llmime.cpp | 32 | llmessage/llmime.cpp |
32 | llmessage/llnamevalue.cpp | 33 | llmessage/llnamevalue.cpp |
33 | llmessage/llnullcipher.cpp | 34 | llmessage/llnullcipher.cpp |
35 | llmessage/llpacketack.cpp | ||
34 | llmessage/llpacketbuffer.cpp | 36 | llmessage/llpacketbuffer.cpp |
35 | llmessage/llpacketring.cpp | 37 | llmessage/llpacketring.cpp |
36 | llmessage/llpartdata.cpp | 38 | llmessage/llpartdata.cpp |
diff --git a/linden/indra/llmessage/llcircuit.h b/linden/indra/llmessage/llcircuit.h index 1eea203..33c0e10 100644 --- a/linden/indra/llmessage/llcircuit.h +++ b/linden/indra/llmessage/llcircuit.h | |||
@@ -58,7 +58,11 @@ const F32 LL_AVERAGED_PING_MIN = 100; // msec // IW: increased to avoid ret | |||
58 | const U32 INITIAL_PING_VALUE_MSEC = 1000; // initial value for the ping delay, or for ping delay for an unknown circuit | 58 | const U32 INITIAL_PING_VALUE_MSEC = 1000; // initial value for the ping delay, or for ping delay for an unknown circuit |
59 | 59 | ||
60 | const TPACKETID LL_MAX_OUT_PACKET_ID = 0x01000000; | 60 | const TPACKETID LL_MAX_OUT_PACKET_ID = 0x01000000; |
61 | const U8 LL_PACKET_ID_SIZE = 4; | 61 | |
62 | // 0 - flags | ||
63 | // [1,4] - packetid | ||
64 | // 5 - data offset (after message name) | ||
65 | const U8 LL_PACKET_ID_SIZE = 6; | ||
62 | 66 | ||
63 | const S32 LL_MAX_RESENT_PACKETS_PER_FRAME = 100; | 67 | const S32 LL_MAX_RESENT_PACKETS_PER_FRAME = 100; |
64 | const S32 LL_MAX_ACKED_PACKETS_PER_FRAME = 200; | 68 | const S32 LL_MAX_ACKED_PACKETS_PER_FRAME = 200; |
diff --git a/linden/indra/llmessage/llhost.cpp b/linden/indra/llmessage/llhost.cpp index 50ef301..d57d52d 100644 --- a/linden/indra/llmessage/llhost.cpp +++ b/linden/indra/llmessage/llhost.cpp | |||
@@ -230,9 +230,9 @@ std::ostream& operator<< (std::ostream& os, const LLHost &hh) | |||
230 | } | 230 | } |
231 | 231 | ||
232 | 232 | ||
233 | std::istream& operator>> (std::istream& is, LLHost &rh) | 233 | //std::istream& operator>> (std::istream& is, LLHost &rh) |
234 | { | 234 | //{ |
235 | is >> rh.mIP; | 235 | // is >> rh.mIP; |
236 | is >> rh.mPort; | 236 | // is >> rh.mPort; |
237 | return is; | 237 | // return is; |
238 | } | 238 | //} |
diff --git a/linden/indra/llmessage/llhost.h b/linden/indra/llmessage/llhost.h index 5b477e0..1d37639 100644 --- a/linden/indra/llmessage/llhost.h +++ b/linden/indra/llmessage/llhost.h | |||
@@ -103,7 +103,11 @@ public: | |||
103 | std::string getIPandPort() const; | 103 | std::string getIPandPort() const; |
104 | 104 | ||
105 | friend std::ostream& operator<< (std::ostream& os, const LLHost &hh); | 105 | friend std::ostream& operator<< (std::ostream& os, const LLHost &hh); |
106 | friend std::istream& operator>> (std::istream& is, LLHost &hh); | 106 | |
107 | // This operator is not well defined. does it expect a | ||
108 | // "192.168.1.1:80" notation or "int int" format? Phoenix 2007-05-18 | ||
109 | //friend std::istream& operator>> (std::istream& is, LLHost &hh); | ||
110 | |||
107 | friend bool operator==( const LLHost &lhs, const LLHost &rhs ); | 111 | friend bool operator==( const LLHost &lhs, const LLHost &rhs ); |
108 | friend bool operator!=( const LLHost &lhs, const LLHost &rhs ); | 112 | friend bool operator!=( const LLHost &lhs, const LLHost &rhs ); |
109 | friend bool operator<(const LLHost &lhs, const LLHost &rhs); | 113 | friend bool operator<(const LLHost &lhs, const LLHost &rhs); |
diff --git a/linden/indra/llmessage/llhttpclient.cpp b/linden/indra/llmessage/llhttpclient.cpp index a1f8e29..392dfd0 100644 --- a/linden/indra/llmessage/llhttpclient.cpp +++ b/linden/indra/llmessage/llhttpclient.cpp | |||
@@ -43,12 +43,9 @@ | |||
43 | #include <curl/curl.h> | 43 | #include <curl/curl.h> |
44 | 44 | ||
45 | const F32 HTTP_REQUEST_EXPIRY_SECS = 60.0f; | 45 | const F32 HTTP_REQUEST_EXPIRY_SECS = 60.0f; |
46 | |||
47 | static std::string gCABundle; | 46 | static std::string gCABundle; |
48 | 47 | ||
49 | 48 | ||
50 | |||
51 | |||
52 | LLHTTPClient::Responder::Responder() | 49 | LLHTTPClient::Responder::Responder() |
53 | : mReferenceCount(0) | 50 | : mReferenceCount(0) |
54 | { | 51 | { |
diff --git a/linden/indra/llmessage/llhttpsender.cpp b/linden/indra/llmessage/llhttpsender.cpp index f96e6d2..3796a52 100644 --- a/linden/indra/llmessage/llhttpsender.cpp +++ b/linden/indra/llmessage/llhttpsender.cpp | |||
@@ -40,6 +40,7 @@ namespace | |||
40 | { | 40 | { |
41 | typedef std::map<LLHost, LLHTTPSender*> SenderMap; | 41 | typedef std::map<LLHost, LLHTTPSender*> SenderMap; |
42 | static SenderMap senderMap; | 42 | static SenderMap senderMap; |
43 | static LLHTTPSender* defaultSender = new LLHTTPSender(); | ||
43 | } | 44 | } |
44 | 45 | ||
45 | //virtual | 46 | //virtual |
@@ -69,11 +70,10 @@ void LLHTTPSender::setSender(const LLHost& host, LLHTTPSender* sender) | |||
69 | //static | 70 | //static |
70 | const LLHTTPSender& LLHTTPSender::getSender(const LLHost& host) | 71 | const LLHTTPSender& LLHTTPSender::getSender(const LLHost& host) |
71 | { | 72 | { |
72 | static LLHTTPSender defaultSender; | ||
73 | SenderMap::const_iterator iter = senderMap.find(host); | 73 | SenderMap::const_iterator iter = senderMap.find(host); |
74 | if(iter == senderMap.end()) | 74 | if(iter == senderMap.end()) |
75 | { | 75 | { |
76 | return defaultSender; | 76 | return *defaultSender; |
77 | } | 77 | } |
78 | return *(iter->second); | 78 | return *(iter->second); |
79 | } | 79 | } |
@@ -88,3 +88,10 @@ void LLHTTPSender::clearSender(const LLHost& host) | |||
88 | senderMap.erase(iter); | 88 | senderMap.erase(iter); |
89 | } | 89 | } |
90 | } | 90 | } |
91 | |||
92 | //static | ||
93 | void LLHTTPSender::setDefaultSender(LLHTTPSender* sender) | ||
94 | { | ||
95 | delete defaultSender; | ||
96 | defaultSender = sender; | ||
97 | } | ||
diff --git a/linden/indra/llmessage/llhttpsender.h b/linden/indra/llmessage/llhttpsender.h index 650a0e9..5d8b028 100644 --- a/linden/indra/llmessage/llhttpsender.h +++ b/linden/indra/llmessage/llhttpsender.h | |||
@@ -53,6 +53,9 @@ class LLHTTPSender | |||
53 | 53 | ||
54 | /** @brief Clear sender for host. */ | 54 | /** @brief Clear sender for host. */ |
55 | static void clearSender(const LLHost& host); | 55 | static void clearSender(const LLHost& host); |
56 | |||
57 | /** @brief Set default sender, takes ownership of sender. */ | ||
58 | static void setDefaultSender(LLHTTPSender* sender); | ||
56 | }; | 59 | }; |
57 | 60 | ||
58 | #endif // LL_HTTP_SENDER_H | 61 | #endif // LL_HTTP_SENDER_H |
diff --git a/linden/indra/llmessage/lliosocket.cpp b/linden/indra/llmessage/lliosocket.cpp index 8bc347c..fdb4a89 100644 --- a/linden/indra/llmessage/lliosocket.cpp +++ b/linden/indra/llmessage/lliosocket.cpp | |||
@@ -421,6 +421,7 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
421 | PUMP_DEBUG; | 421 | PUMP_DEBUG; |
422 | apr_size_t len; | 422 | apr_size_t len; |
423 | bool done = false; | 423 | bool done = false; |
424 | apr_status_t status = APR_SUCCESS; | ||
424 | while(it != end) | 425 | while(it != end) |
425 | { | 426 | { |
426 | 427 | ||
@@ -428,9 +429,8 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
428 | if((*it).isOnChannel(channels.in())) | 429 | if((*it).isOnChannel(channels.in())) |
429 | { | 430 | { |
430 | PUMP_DEBUG; | 431 | PUMP_DEBUG; |
431 | // *FIX: check return code - sockets will fail (broken, etc.) | ||
432 | len = (apr_size_t)segment.size(); | 432 | len = (apr_size_t)segment.size(); |
433 | apr_status_t status = apr_socket_send( | 433 | status = apr_socket_send( |
434 | mDestination->getSocket(), | 434 | mDestination->getSocket(), |
435 | (const char*)segment.data(), | 435 | (const char*)segment.data(), |
436 | &len); | 436 | &len); |
@@ -438,12 +438,12 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
438 | // completed immediately' error from apr_socket_send. In this | 438 | // completed immediately' error from apr_socket_send. In this |
439 | // case we break and the data will be sent the next time the chain | 439 | // case we break and the data will be sent the next time the chain |
440 | // is pumped. | 440 | // is pumped. |
441 | #if LL_WINDOWS | 441 | if(APR_STATUS_IS_EAGAIN(status)) |
442 | if (status == 730035) | 442 | { |
443 | ll_apr_warn_status(status); | ||
443 | break; | 444 | break; |
444 | #else | 445 | } |
445 | (void) status; | 446 | |
446 | #endif | ||
447 | mLastWritten = segment.data() + len - 1; | 447 | mLastWritten = segment.data() + len - 1; |
448 | 448 | ||
449 | PUMP_DEBUG; | 449 | PUMP_DEBUG; |
diff --git a/linden/indra/llmessage/llmessage.vcproj b/linden/indra/llmessage/llmessage.vcproj index d3e0d89..bb404f0 100644 --- a/linden/indra/llmessage/llmessage.vcproj +++ b/linden/indra/llmessage/llmessage.vcproj | |||
@@ -240,6 +240,9 @@ | |||
240 | RelativePath=".\llmessagetemplate.cpp"> | 240 | RelativePath=".\llmessagetemplate.cpp"> |
241 | </File> | 241 | </File> |
242 | <File | 242 | <File |
243 | RelativePath=".\llmessagetemplateparser.cpp"> | ||
244 | </File> | ||
245 | <File | ||
243 | RelativePath=".\llmessagethrottle.cpp"> | 246 | RelativePath=".\llmessagethrottle.cpp"> |
244 | </File> | 247 | </File> |
245 | <File | 248 | <File |
@@ -252,6 +255,9 @@ | |||
252 | RelativePath=".\llnullcipher.cpp"> | 255 | RelativePath=".\llnullcipher.cpp"> |
253 | </File> | 256 | </File> |
254 | <File | 257 | <File |
258 | RelativePath=".\llpacketack.cpp"> | ||
259 | </File> | ||
260 | <File | ||
255 | RelativePath=".\llpacketbuffer.cpp"> | 261 | RelativePath=".\llpacketbuffer.cpp"> |
256 | </File> | 262 | </File> |
257 | <File | 263 | <File |
@@ -437,10 +443,10 @@ | |||
437 | RelativePath=".\llhttpclient.h"> | 443 | RelativePath=".\llhttpclient.h"> |
438 | </File> | 444 | </File> |
439 | <File | 445 | <File |
440 | RelativePath=".\llhttpsender.h"> | 446 | RelativePath=".\llhttpnode.h"> |
441 | </File> | 447 | </File> |
442 | <File | 448 | <File |
443 | RelativePath=".\llhttpnode.h"> | 449 | RelativePath=".\llhttpsender.h"> |
444 | </File> | 450 | </File> |
445 | <File | 451 | <File |
446 | RelativePath=".\llinstantmessage.h"> | 452 | RelativePath=".\llinstantmessage.h"> |
@@ -482,6 +488,9 @@ | |||
482 | RelativePath=".\llmessagetemplate.h"> | 488 | RelativePath=".\llmessagetemplate.h"> |
483 | </File> | 489 | </File> |
484 | <File | 490 | <File |
491 | RelativePath=".\llmessagetemplateparser.h"> | ||
492 | </File> | ||
493 | <File | ||
485 | RelativePath=".\llmessagethrottle.h"> | 494 | RelativePath=".\llmessagethrottle.h"> |
486 | </File> | 495 | </File> |
487 | <File | 496 | <File |
diff --git a/linden/indra/llmessage/llmessage_vc8.vcproj b/linden/indra/llmessage/llmessage_vc8.vcproj index 9692930..eec76e5 100644 --- a/linden/indra/llmessage/llmessage_vc8.vcproj +++ b/linden/indra/llmessage/llmessage_vc8.vcproj | |||
@@ -347,6 +347,10 @@ | |||
347 | > | 347 | > |
348 | </File> | 348 | </File> |
349 | <File | 349 | <File |
350 | RelativePath=".\llmessagetemplateparser.cpp" | ||
351 | > | ||
352 | </File> | ||
353 | <File | ||
350 | RelativePath=".\llmessagethrottle.cpp" | 354 | RelativePath=".\llmessagethrottle.cpp" |
351 | > | 355 | > |
352 | </File> | 356 | </File> |
@@ -363,6 +367,10 @@ | |||
363 | > | 367 | > |
364 | </File> | 368 | </File> |
365 | <File | 369 | <File |
370 | RelativePath=".\llpacketack.cpp" | ||
371 | > | ||
372 | </File> | ||
373 | <File | ||
366 | RelativePath=".\llpacketbuffer.cpp" | 374 | RelativePath=".\llpacketbuffer.cpp" |
367 | > | 375 | > |
368 | </File> | 376 | </File> |
@@ -677,6 +685,10 @@ | |||
677 | > | 685 | > |
678 | </File> | 686 | </File> |
679 | <File | 687 | <File |
688 | RelativePath=".\llmessagetemplateparser.h" | ||
689 | > | ||
690 | </File> | ||
691 | <File | ||
680 | RelativePath=".\llmessagethrottle.h" | 692 | RelativePath=".\llmessagethrottle.h" |
681 | > | 693 | > |
682 | </File> | 694 | </File> |
diff --git a/linden/indra/llmessage/llmessagebuilder.h b/linden/indra/llmessage/llmessagebuilder.h index 7ae09c5..5c231bd 100644 --- a/linden/indra/llmessage/llmessagebuilder.h +++ b/linden/indra/llmessage/llmessagebuilder.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llmessagebuilder.h | ||
3 | * @brief Declaration of LLMessageBuilder class. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLMESSAGEBUILDER_H | 29 | #ifndef LL_LLMESSAGEBUILDER_H |
2 | #define LL_LLMESSAGEBUILDER_H | 30 | #define LL_LLMESSAGEBUILDER_H |
3 | 31 | ||
@@ -20,31 +48,33 @@ public: | |||
20 | //CLASS_LOG_TYPE(LLMessageBuilder); | 48 | //CLASS_LOG_TYPE(LLMessageBuilder); |
21 | 49 | ||
22 | virtual ~LLMessageBuilder(); | 50 | virtual ~LLMessageBuilder(); |
23 | virtual void newMessage(const char *name) = 0; | 51 | virtual void newMessage(const char* name) = 0; |
24 | 52 | ||
25 | virtual void nextBlock(const char* blockname) = 0; | 53 | virtual void nextBlock(const char* blockname) = 0; |
26 | virtual BOOL removeLastBlock() = 0; // TODO: babbage: remove this horror | 54 | virtual BOOL removeLastBlock() = 0; // TODO: babbage: remove this horror |
27 | 55 | ||
28 | /** All add* methods expect pointers to canonical strings. */ | 56 | /** All add* methods expect pointers to canonical strings. */ |
29 | virtual void addBinaryData(const char *varname, const void *data, | 57 | virtual void addBinaryData( |
30 | S32 size) = 0; | 58 | const char* varname, |
59 | const void* data, | ||
60 | S32 size) = 0; | ||
31 | virtual void addBOOL(const char* varname, BOOL b) = 0; | 61 | virtual void addBOOL(const char* varname, BOOL b) = 0; |
32 | virtual void addS8(const char *varname, S8 s) = 0; | 62 | virtual void addS8(const char* varname, S8 s) = 0; |
33 | virtual void addU8(const char *varname, U8 u) = 0; | 63 | virtual void addU8(const char* varname, U8 u) = 0; |
34 | virtual void addS16(const char *varname, S16 i) = 0; | 64 | virtual void addS16(const char* varname, S16 i) = 0; |
35 | virtual void addU16(const char *varname, U16 i) = 0; | 65 | virtual void addU16(const char* varname, U16 i) = 0; |
36 | virtual void addF32(const char *varname, F32 f) = 0; | 66 | virtual void addF32(const char* varname, F32 f) = 0; |
37 | virtual void addS32(const char *varname, S32 s) = 0; | 67 | virtual void addS32(const char* varname, S32 s) = 0; |
38 | virtual void addU32(const char *varname, U32 u) = 0; | 68 | virtual void addU32(const char* varname, U32 u) = 0; |
39 | virtual void addU64(const char *varname, U64 lu) = 0; | 69 | virtual void addU64(const char* varname, U64 lu) = 0; |
40 | virtual void addF64(const char *varname, F64 d) = 0; | 70 | virtual void addF64(const char* varname, F64 d) = 0; |
41 | virtual void addVector3(const char *varname, const LLVector3& vec) = 0; | 71 | virtual void addVector3(const char* varname, const LLVector3& vec) = 0; |
42 | virtual void addVector4(const char *varname, const LLVector4& vec) = 0; | 72 | virtual void addVector4(const char* varname, const LLVector4& vec) = 0; |
43 | virtual void addVector3d(const char *varname, const LLVector3d& vec) = 0; | 73 | virtual void addVector3d(const char* varname, const LLVector3d& vec) = 0; |
44 | virtual void addQuat(const char *varname, const LLQuaternion& quat) = 0; | 74 | virtual void addQuat(const char* varname, const LLQuaternion& quat) = 0; |
45 | virtual void addUUID(const char *varname, const LLUUID& uuid) = 0; | 75 | virtual void addUUID(const char* varname, const LLUUID& uuid) = 0; |
46 | virtual void addIPAddr(const char *varname, const U32 ip) = 0; | 76 | virtual void addIPAddr(const char* varname, const U32 ip) = 0; |
47 | virtual void addIPPort(const char *varname, const U16 port) = 0; | 77 | virtual void addIPPort(const char* varname, const U16 port) = 0; |
48 | virtual void addString(const char* varname, const char* s) = 0; | 78 | virtual void addString(const char* varname, const char* s) = 0; |
49 | virtual void addString(const char* varname, const std::string& s) = 0; | 79 | virtual void addString(const char* varname, const std::string& s) = 0; |
50 | 80 | ||
@@ -54,7 +84,10 @@ public: | |||
54 | 84 | ||
55 | virtual BOOL isBuilt() const = 0; | 85 | virtual BOOL isBuilt() const = 0; |
56 | virtual BOOL isClear() const = 0; | 86 | virtual BOOL isClear() const = 0; |
57 | virtual U32 buildMessage(U8* buffer, U32 buffer_size) = 0; | 87 | virtual U32 buildMessage( |
88 | U8* buffer, | ||
89 | U32 buffer_size, | ||
90 | U8 offset_to_data) = 0; | ||
58 | /**< Return built message size */ | 91 | /**< Return built message size */ |
59 | virtual void clearMessage() = 0; | 92 | virtual void clearMessage() = 0; |
60 | 93 | ||
diff --git a/linden/indra/llmessage/llmessageconfig.cpp b/linden/indra/llmessage/llmessageconfig.cpp index 687896b..8d114a9 100644 --- a/linden/indra/llmessage/llmessageconfig.cpp +++ b/linden/indra/llmessage/llmessageconfig.cpp | |||
@@ -32,37 +32,44 @@ | |||
32 | #include "llfile.h" | 32 | #include "llfile.h" |
33 | #include "lllivefile.h" | 33 | #include "lllivefile.h" |
34 | #include "llsd.h" | 34 | #include "llsd.h" |
35 | #include "llsdutil.h" | ||
35 | #include "llsdserialize.h" | 36 | #include "llsdserialize.h" |
37 | #include "message.h" | ||
36 | 38 | ||
37 | static const char messageConfigFileName[] = "message.xml"; | 39 | static const char messageConfigFileName[] = "message.xml"; |
38 | static const F32 messageConfigRefreshRate = 5.0; // seconds | 40 | static const F32 messageConfigRefreshRate = 5.0; // seconds |
41 | |||
39 | static std::string sServerName = ""; | 42 | static std::string sServerName = ""; |
40 | static std::string sConfigDir = ""; | 43 | static std::string sConfigDir = ""; |
41 | 44 | ||
45 | static std::string sServerDefault; | ||
46 | static LLSD sMessages; | ||
47 | |||
48 | |||
42 | class LLMessageConfigFile : public LLLiveFile | 49 | class LLMessageConfigFile : public LLLiveFile |
43 | { | 50 | { |
44 | private: | 51 | public: |
45 | LLMessageConfigFile() | 52 | LLMessageConfigFile() |
46 | : LLLiveFile(fileName(), messageConfigRefreshRate), | 53 | : LLLiveFile(fileName(), messageConfigRefreshRate) |
47 | mChanged(false) | ||
48 | { } | 54 | { } |
49 | 55 | ||
50 | static std::string fileName(); | 56 | static std::string fileName(); |
51 | 57 | ||
52 | public: | 58 | LLSD mMessages; |
59 | std::string mServerDefault; | ||
60 | |||
53 | static LLMessageConfigFile& instance(); | 61 | static LLMessageConfigFile& instance(); |
54 | // return the singleton configuration file | 62 | // return the singleton configuration file |
55 | 63 | ||
56 | protected: | ||
57 | /* virtual */ void loadFile(); | 64 | /* virtual */ void loadFile(); |
58 | void loadServerDefaults(const LLSD& data); | 65 | void loadServerDefaults(const LLSD& data); |
59 | void loadMessages(const LLSD& data); | 66 | void loadMessages(const LLSD& data); |
67 | void loadCapBans(const LLSD& blacklist); | ||
68 | void loadMessageBans(const LLSD& blacklist); | ||
69 | bool isCapBanned(const std::string& cap_name) const; | ||
60 | 70 | ||
61 | public: | 71 | public: |
62 | bool mChanged; | 72 | LLSD mCapBans; |
63 | |||
64 | std::string mServerDefault; | ||
65 | LLSD mMessages; | ||
66 | }; | 73 | }; |
67 | 74 | ||
68 | std::string LLMessageConfigFile::fileName() | 75 | std::string LLMessageConfigFile::fileName() |
@@ -102,26 +109,63 @@ void LLMessageConfigFile::loadFile() | |||
102 | } | 109 | } |
103 | loadServerDefaults(data); | 110 | loadServerDefaults(data); |
104 | loadMessages(data); | 111 | loadMessages(data); |
112 | loadCapBans(data); | ||
113 | loadMessageBans(data); | ||
105 | } | 114 | } |
106 | 115 | ||
107 | void LLMessageConfigFile::loadServerDefaults(const LLSD& data) | 116 | void LLMessageConfigFile::loadServerDefaults(const LLSD& data) |
108 | { | 117 | { |
109 | mServerDefault = data["serverDefaults"][sServerName].asString(); | 118 | mServerDefault = data["serverDefaults"][sServerName].asString(); |
110 | lldebugs << "loading default " << mServerDefault << llendl; | ||
111 | } | 119 | } |
112 | 120 | ||
113 | void LLMessageConfigFile::loadMessages(const LLSD& data) | 121 | void LLMessageConfigFile::loadMessages(const LLSD& data) |
114 | { | 122 | { |
115 | LLPointer<LLSDXMLFormatter> formatter = new LLSDXMLFormatter; | ||
116 | std::ostringstream out; | ||
117 | |||
118 | mMessages = data["messages"]; | 123 | mMessages = data["messages"]; |
124 | |||
125 | #ifdef DEBUG | ||
126 | std::ostringstream out; | ||
127 | LLSDXMLFormatter *formatter = new LLSDXMLFormatter; | ||
119 | formatter->format(mMessages, out); | 128 | formatter->format(mMessages, out); |
120 | lldebugs << "loading ... " << out.str() | 129 | llinfos << "loading ... " << out.str() |
121 | << " LLMessageConfigFile::loadMessages loaded " | 130 | << " LLMessageConfigFile::loadMessages loaded " |
122 | << mMessages.size() << " messages" << llendl; | 131 | << mMessages.size() << " messages" << llendl; |
132 | #endif | ||
123 | } | 133 | } |
124 | 134 | ||
135 | void LLMessageConfigFile::loadCapBans(const LLSD& data) | ||
136 | { | ||
137 | LLSD bans = data["capBans"]; | ||
138 | if (!bans.isMap()) | ||
139 | { | ||
140 | llinfos << "LLMessageConfigFile::loadCapBans: missing capBans section" | ||
141 | << llendl; | ||
142 | return; | ||
143 | } | ||
144 | |||
145 | mCapBans = bans; | ||
146 | |||
147 | llinfos << "LLMessageConfigFile::loadCapBans: " | ||
148 | << bans.size() << " ban tests" << llendl; | ||
149 | } | ||
150 | |||
151 | void LLMessageConfigFile::loadMessageBans(const LLSD& data) | ||
152 | { | ||
153 | LLSD bans = data["messageBans"]; | ||
154 | if (!bans.isMap()) | ||
155 | { | ||
156 | llinfos << "LLMessageConfigFile::loadMessageBans: missing messageBans section" | ||
157 | << llendl; | ||
158 | return; | ||
159 | } | ||
160 | |||
161 | gMessageSystem->setMessageBans(bans["trusted"], bans["untrusted"]); | ||
162 | } | ||
163 | |||
164 | bool LLMessageConfigFile::isCapBanned(const std::string& cap_name) const | ||
165 | { | ||
166 | llinfos << "mCapBans is " << LLSDXMLStreamer(mCapBans) << llendl; | ||
167 | return mCapBans[cap_name]; | ||
168 | } | ||
125 | 169 | ||
126 | //--------------------------------------------------------------- | 170 | //--------------------------------------------------------------- |
127 | // LLMessageConfig | 171 | // LLMessageConfig |
@@ -134,98 +178,77 @@ void LLMessageConfig::initClass(const std::string& server_name, | |||
134 | sServerName = server_name; | 178 | sServerName = server_name; |
135 | sConfigDir = config_dir; | 179 | sConfigDir = config_dir; |
136 | (void) LLMessageConfigFile::instance(); | 180 | (void) LLMessageConfigFile::instance(); |
137 | llinfos << "LLMessageConfig::intiClass config file " | 181 | llinfos << "LLMessageConfig::initClass config file " |
138 | << config_dir << "/" << messageConfigFileName << llendl; | 182 | << config_dir << "/" << messageConfigFileName << llendl; |
139 | } | 183 | } |
140 | 184 | ||
141 | //static | 185 | //static |
142 | bool LLMessageConfig::isServerDefaultBuilderLLSD() | 186 | void LLMessageConfig::useConfig(const LLSD& config) |
143 | { | 187 | { |
144 | if (sServerName.empty()) | 188 | LLMessageConfigFile &the_file = LLMessageConfigFile::instance(); |
145 | { | 189 | the_file.loadServerDefaults(config); |
146 | llerrs << "LLMessageConfig::isServerDefaultBuilderLLSD() before" | 190 | the_file.loadMessages(config); |
147 | << " LLMessageConfig::initClass()" << llendl; | 191 | the_file.loadCapBans(config); |
148 | } | 192 | the_file.loadMessageBans(config); |
149 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | ||
150 | return (file.mServerDefault == "llsd"); | ||
151 | } | ||
152 | 193 | ||
153 | //static | ||
154 | bool LLMessageConfig::isServerDefaultBuilderTemplate() | ||
155 | { | ||
156 | if (sServerName.empty()) | ||
157 | { | ||
158 | llerrs << "LLMessageConfig::isServerDefaultBuilderTemplate() before" | ||
159 | << " LLMessageConfig::initClass()" << llendl; | ||
160 | } | ||
161 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | ||
162 | return (file.mServerDefault == "template"); | ||
163 | } | 194 | } |
164 | 195 | ||
165 | //static | 196 | //static |
166 | bool LLMessageConfig::isMessageBuiltLLSD(const std::string& msg_name) | 197 | LLMessageConfig::Flavor LLMessageConfig::getServerDefaultFlavor() |
167 | { | 198 | { |
168 | if (sServerName.empty()) | 199 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); |
200 | if (file.mServerDefault == "llsd") | ||
169 | { | 201 | { |
170 | llerrs << "LLMessageConfig::isMessageBuiltLLSD(name) before" | 202 | return LLSD_FLAVOR; |
171 | << " LLMessageConfig::initClass()" << llendl; | ||
172 | } | 203 | } |
173 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | 204 | if (file.mServerDefault == "template") |
174 | LLSD config = file.mMessages[msg_name]; | ||
175 | if (!config.has("builder")) | ||
176 | { | 205 | { |
177 | return isServerDefaultBuilderLLSD(); | 206 | return TEMPLATE_FLAVOR; |
178 | } | 207 | } |
179 | return (config["builder"].asString() == "llsd"); | 208 | return NO_FLAVOR; |
180 | } | 209 | } |
181 | 210 | ||
182 | //static | 211 | //static |
183 | bool LLMessageConfig::isMessageBuiltTemplate(const std::string& msg_name) | 212 | LLMessageConfig::Flavor LLMessageConfig::getMessageFlavor(const std::string& msg_name) |
184 | { | 213 | { |
185 | if (sServerName.empty()) | ||
186 | { | ||
187 | llerrs << "LLMessageConfig::isMessageBuiltTemplate(name) before" | ||
188 | << " LLMessageConfig::initClass()" << llendl; | ||
189 | } | ||
190 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | 214 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); |
191 | LLSD config = file.mMessages[msg_name]; | 215 | LLSD config = file.mMessages[msg_name]; |
192 | if (!config.has("builder")) | 216 | if (config["flavor"].asString() == "llsd") |
193 | { | 217 | { |
194 | return isServerDefaultBuilderTemplate(); | 218 | return LLSD_FLAVOR; |
195 | } | 219 | } |
196 | return (config["builder"].asString() == "template"); | 220 | if (config["flavor"].asString() == "template") |
221 | { | ||
222 | return TEMPLATE_FLAVOR; | ||
223 | } | ||
224 | return NO_FLAVOR; | ||
197 | } | 225 | } |
198 | 226 | ||
199 | //static | 227 | //static |
200 | bool LLMessageConfig::isMessageTrusted(const std::string& msg_name) | 228 | LLMessageConfig::SenderTrust LLMessageConfig::getSenderTrustedness( |
229 | const std::string& msg_name) | ||
201 | { | 230 | { |
202 | if (sServerName.empty()) | ||
203 | { | ||
204 | llerrs << "LLMessageConfig::isMessageTrusted(name) before" | ||
205 | << " LLMessageConfig::initClass()" << llendl; | ||
206 | } | ||
207 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | 231 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); |
208 | LLSD config = file.mMessages[msg_name]; | 232 | LLSD config = file.mMessages[msg_name]; |
209 | if (!config.has("trusted-sender")) | 233 | if (config.has("trusted-sender")) |
210 | { | 234 | { |
211 | return false; | 235 | return config["trusted-sender"].asBoolean() ? TRUSTED : UNTRUSTED; |
212 | } | 236 | } |
213 | return config["trusted-sender"].asBoolean(); | 237 | return NOT_SET; |
214 | } | 238 | } |
215 | 239 | ||
216 | //static | 240 | //static |
217 | bool LLMessageConfig::isValidUntrustedMessage(const std::string& msg_name) | 241 | bool LLMessageConfig::isValidMessage(const std::string& msg_name) |
218 | { | 242 | { |
219 | if (sServerName.empty()) | 243 | if (sServerName.empty()) |
220 | { | 244 | { |
221 | llerrs << "LLMessageConfig::isMessageTrusted(name) before" | 245 | llerrs << "LLMessageConfig::initClass() not called" << llendl; |
222 | << " LLMessageConfig::initClass()" << llendl; | ||
223 | } | 246 | } |
224 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); | 247 | LLMessageConfigFile& file = LLMessageConfigFile::instance(); |
225 | LLSD config = file.mMessages[msg_name]; | 248 | return file.mMessages.has(msg_name); |
226 | if (!config.has("trusted-sender")) | 249 | } |
227 | { | 250 | |
228 | return false; | 251 | bool LLMessageConfig::isCapBanned(const std::string& cap_name) |
229 | } | 252 | { |
230 | return !(config["trusted-sender"].asBoolean()); | 253 | return LLMessageConfigFile::instance().isCapBanned(cap_name); |
231 | } | 254 | } |
diff --git a/linden/indra/llmessage/llmessageconfig.h b/linden/indra/llmessage/llmessageconfig.h index 1664ce6..ca09c27 100644 --- a/linden/indra/llmessage/llmessageconfig.h +++ b/linden/indra/llmessage/llmessageconfig.h | |||
@@ -31,21 +31,24 @@ | |||
31 | 31 | ||
32 | #include <string> | 32 | #include <string> |
33 | 33 | ||
34 | class LLSD; | ||
35 | |||
34 | class LLMessageConfig | 36 | class LLMessageConfig |
35 | { | 37 | { |
36 | public: | 38 | public: |
39 | enum Flavor { NO_FLAVOR=0, LLSD_FLAVOR=1, TEMPLATE_FLAVOR=2 }; | ||
40 | enum SenderTrust { NOT_SET=0, UNTRUSTED=1, TRUSTED=2 }; | ||
41 | |||
37 | static void initClass(const std::string& server_name, | 42 | static void initClass(const std::string& server_name, |
38 | const std::string& config_dir); | 43 | const std::string& config_dir); |
39 | // force loading of config file during startup process | 44 | static void useConfig(const LLSD& config); |
40 | // so it can be used for startup features | ||
41 | 45 | ||
42 | static bool isServerDefaultBuilderLLSD(); | 46 | static Flavor getServerDefaultFlavor(); |
43 | static bool isServerDefaultBuilderTemplate(); | ||
44 | 47 | ||
45 | // For individual messages | 48 | // For individual messages |
46 | static bool isMessageBuiltLLSD(const std::string& msg_name); | 49 | static Flavor getMessageFlavor(const std::string& msg_name); |
47 | static bool isMessageBuiltTemplate(const std::string& msg_name); | 50 | static SenderTrust getSenderTrustedness(const std::string& msg_name); |
48 | static bool isMessageTrusted(const std::string& msg_name); | 51 | static bool isValidMessage(const std::string& msg_name); |
49 | static bool isValidUntrustedMessage(const std::string& msg_name); | 52 | static bool isCapBanned(const std::string& cap_name); |
50 | }; | 53 | }; |
51 | #endif // LL_MESSAGECONFIG_H | 54 | #endif // LL_MESSAGECONFIG_H |
diff --git a/linden/indra/llmessage/llmessagereader.cpp b/linden/indra/llmessage/llmessagereader.cpp index 4824480..db4cbdf 100644 --- a/linden/indra/llmessage/llmessagereader.cpp +++ b/linden/indra/llmessage/llmessagereader.cpp | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llsdmessagereader.cpp | ||
3 | * @brief LLMessageReader class implementation | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #include "llmessagereader.h" | 29 | #include "llmessagereader.h" |
2 | 30 | ||
3 | static BOOL sTimeDecodes = FALSE; | 31 | static BOOL sTimeDecodes = FALSE; |
diff --git a/linden/indra/llmessage/llmessagereader.h b/linden/indra/llmessage/llmessagereader.h index 33ce928..9c1923a 100644 --- a/linden/indra/llmessage/llmessagereader.h +++ b/linden/indra/llmessage/llmessagereader.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llmessagereader.h | ||
3 | * @brief Declaration of LLMessageReader class. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLMESSAGEREADER_H | 29 | #ifndef LL_LLMESSAGEREADER_H |
2 | #define LL_LLMESSAGEREADER_H | 30 | #define LL_LLMESSAGEREADER_H |
3 | 31 | ||
@@ -45,6 +73,7 @@ class LLMessageReader | |||
45 | 73 | ||
46 | virtual void clearMessage() = 0; | 74 | virtual void clearMessage() = 0; |
47 | 75 | ||
76 | /** Returns pointer to canonical (prehashed) string. */ | ||
48 | virtual const char* getMessageName() const = 0; | 77 | virtual const char* getMessageName() const = 0; |
49 | virtual S32 getMessageSize() const = 0; | 78 | virtual S32 getMessageSize() const = 0; |
50 | 79 | ||
diff --git a/linden/indra/llmessage/llmessagetemplate.cpp b/linden/indra/llmessage/llmessagetemplate.cpp index 026843d..daf7f7a 100644 --- a/linden/indra/llmessage/llmessagetemplate.cpp +++ b/linden/indra/llmessage/llmessagetemplate.cpp | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llmessagetemplate.cpp | ||
3 | * @brief Implementation of message template classes. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #include "linden_common.h" | 29 | #include "linden_common.h" |
2 | 30 | ||
3 | #include "llmessagetemplate.h" | 31 | #include "llmessagetemplate.h" |
@@ -94,7 +122,7 @@ std::ostream& operator<<(std::ostream& s, LLMessageBlock &msg) | |||
94 | for (LLMessageBlock::message_variable_map_t::iterator iter = msg.mMemberVariables.begin(); | 122 | for (LLMessageBlock::message_variable_map_t::iterator iter = msg.mMemberVariables.begin(); |
95 | iter != msg.mMemberVariables.end(); iter++) | 123 | iter != msg.mMemberVariables.end(); iter++) |
96 | { | 124 | { |
97 | LLMessageVariable& ci = *(iter->second); | 125 | LLMessageVariable& ci = *(*iter); |
98 | s << ci; | 126 | s << ci; |
99 | } | 127 | } |
100 | 128 | ||
@@ -138,7 +166,7 @@ std::ostream& operator<<(std::ostream& s, LLMessageTemplate &msg) | |||
138 | for (LLMessageTemplate::message_block_map_t::iterator iter = msg.mMemberBlocks.begin(); | 166 | for (LLMessageTemplate::message_block_map_t::iterator iter = msg.mMemberBlocks.begin(); |
139 | iter != msg.mMemberBlocks.end(); iter++) | 167 | iter != msg.mMemberBlocks.end(); iter++) |
140 | { | 168 | { |
141 | LLMessageBlock* ci = iter->second; | 169 | LLMessageBlock* ci = *iter; |
142 | s << *ci; | 170 | s << *ci; |
143 | } | 171 | } |
144 | 172 | ||
diff --git a/linden/indra/llmessage/llmessagetemplate.h b/linden/indra/llmessage/llmessagetemplate.h index 8847ddc..804c343 100644 --- a/linden/indra/llmessage/llmessagetemplate.h +++ b/linden/indra/llmessage/llmessagetemplate.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llmessagetemplate.h | ||
3 | * @brief Declaration of the message template classes. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLMESSAGETEMPLATE_H | 29 | #ifndef LL_LLMESSAGETEMPLATE_H |
2 | #define LL_LLMESSAGETEMPLATE_H | 30 | #define LL_LLMESSAGETEMPLATE_H |
3 | 31 | ||
@@ -123,7 +151,7 @@ public: | |||
123 | mName = name; | 151 | mName = name; |
124 | } | 152 | } |
125 | 153 | ||
126 | LLMessageVariable(char *name, const EMsgVariableType type, const S32 size) : mType(type), mSize(size) | 154 | LLMessageVariable(const char *name, const EMsgVariableType type, const S32 size) : mType(type), mSize(size) |
127 | { | 155 | { |
128 | mName = gMessageStringTable.getString(name); | 156 | mName = gMessageStringTable.getString(name); |
129 | } | 157 | } |
@@ -154,14 +182,14 @@ typedef enum e_message_block_type | |||
154 | class LLMessageBlock | 182 | class LLMessageBlock |
155 | { | 183 | { |
156 | public: | 184 | public: |
157 | LLMessageBlock(char *name, EMsgBlockType type, S32 number = 1) : mType(type), mNumber(number), mTotalSize(0) | 185 | LLMessageBlock(const char *name, EMsgBlockType type, S32 number = 1) : mType(type), mNumber(number), mTotalSize(0) |
158 | { | 186 | { |
159 | mName = gMessageStringTable.getString(name); | 187 | mName = gMessageStringTable.getString(name); |
160 | } | 188 | } |
161 | 189 | ||
162 | ~LLMessageBlock() | 190 | ~LLMessageBlock() |
163 | { | 191 | { |
164 | for_each(mMemberVariables.begin(), mMemberVariables.end(), DeletePairedPointer()); | 192 | for_each(mMemberVariables.begin(), mMemberVariables.end(), DeletePointer()); |
165 | } | 193 | } |
166 | 194 | ||
167 | void addVariable(char *name, const EMsgVariableType type, const S32 size) | 195 | void addVariable(char *name, const EMsgVariableType type, const S32 size) |
@@ -193,9 +221,15 @@ public: | |||
193 | return (mMemberVariables[name])->getSize(); | 221 | return (mMemberVariables[name])->getSize(); |
194 | } | 222 | } |
195 | 223 | ||
224 | const LLMessageVariable* getVariable(char* name) const | ||
225 | { | ||
226 | message_variable_map_t::const_iterator iter = mMemberVariables.find(name); | ||
227 | return iter != mMemberVariables.end()? *iter : NULL; | ||
228 | } | ||
229 | |||
196 | friend std::ostream& operator<<(std::ostream& s, LLMessageBlock &msg); | 230 | friend std::ostream& operator<<(std::ostream& s, LLMessageBlock &msg); |
197 | 231 | ||
198 | typedef std::map<const char *, LLMessageVariable*> message_variable_map_t; | 232 | typedef LLDynamicArrayIndexed<LLMessageVariable*, const char *, 8> message_variable_map_t; |
199 | message_variable_map_t mMemberVariables; | 233 | message_variable_map_t mMemberVariables; |
200 | char *mName; | 234 | char *mName; |
201 | EMsgBlockType mType; | 235 | EMsgBlockType mType; |
@@ -224,6 +258,13 @@ enum EMsgEncoding | |||
224 | ME_ZEROCODED | 258 | ME_ZEROCODED |
225 | }; | 259 | }; |
226 | 260 | ||
261 | enum EMsgDeprecation | ||
262 | { | ||
263 | MD_NOTDEPRECATED, | ||
264 | MD_UDPDEPRECATED, | ||
265 | MD_DEPRECATED | ||
266 | }; | ||
267 | |||
227 | class LLMessageTemplate | 268 | class LLMessageTemplate |
228 | { | 269 | { |
229 | public: | 270 | public: |
@@ -234,7 +275,8 @@ public: | |||
234 | mFrequency(freq), | 275 | mFrequency(freq), |
235 | mTrust(MT_NOTRUST), | 276 | mTrust(MT_NOTRUST), |
236 | mEncoding(ME_ZEROCODED), | 277 | mEncoding(ME_ZEROCODED), |
237 | mMessageNumber(message_number), | 278 | mDeprecation(MD_NOTDEPRECATED), |
279 | mMessageNumber(message_number), | ||
238 | mTotalSize(0), | 280 | mTotalSize(0), |
239 | mReceiveCount(0), | 281 | mReceiveCount(0), |
240 | mReceiveBytes(0), | 282 | mReceiveBytes(0), |
@@ -253,8 +295,8 @@ public: | |||
253 | 295 | ||
254 | ~LLMessageTemplate() | 296 | ~LLMessageTemplate() |
255 | { | 297 | { |
256 | for_each(mMemberBlocks.begin(), mMemberBlocks.end(), DeletePairedPointer()); | 298 | for_each(mMemberBlocks.begin(), mMemberBlocks.end(), DeletePointer()); |
257 | } | 299 | } |
258 | 300 | ||
259 | void addBlock(LLMessageBlock *blockp) | 301 | void addBlock(LLMessageBlock *blockp) |
260 | { | 302 | { |
@@ -289,7 +331,7 @@ public: | |||
289 | mTrust = t; | 331 | mTrust = t; |
290 | } | 332 | } |
291 | 333 | ||
292 | EMsgTrust getTrust(void) | 334 | EMsgTrust getTrust(void) const |
293 | { | 335 | { |
294 | return mTrust; | 336 | return mTrust; |
295 | } | 337 | } |
@@ -299,18 +341,28 @@ public: | |||
299 | { | 341 | { |
300 | mEncoding = e; | 342 | mEncoding = e; |
301 | } | 343 | } |
302 | EMsgEncoding getEncoding() | 344 | EMsgEncoding getEncoding() const |
303 | { | 345 | { |
304 | return mEncoding; | 346 | return mEncoding; |
305 | } | 347 | } |
306 | 348 | ||
349 | void setDeprecation(EMsgDeprecation d) | ||
350 | { | ||
351 | mDeprecation = d; | ||
352 | } | ||
353 | |||
354 | EMsgDeprecation getDeprecation() const | ||
355 | { | ||
356 | return mDeprecation; | ||
357 | } | ||
358 | |||
307 | void setHandlerFunc(void (*handler_func)(LLMessageSystem *msgsystem, void **user_data), void **user_data) | 359 | void setHandlerFunc(void (*handler_func)(LLMessageSystem *msgsystem, void **user_data), void **user_data) |
308 | { | 360 | { |
309 | mHandlerFunc = handler_func; | 361 | mHandlerFunc = handler_func; |
310 | mUserData = user_data; | 362 | mUserData = user_data; |
311 | } | 363 | } |
312 | 364 | ||
313 | BOOL callHandlerFunc(LLMessageSystem *msgsystem) | 365 | BOOL callHandlerFunc(LLMessageSystem *msgsystem) const |
314 | { | 366 | { |
315 | if (mHandlerFunc) | 367 | if (mHandlerFunc) |
316 | { | 368 | { |
@@ -320,20 +372,27 @@ public: | |||
320 | return FALSE; | 372 | return FALSE; |
321 | } | 373 | } |
322 | 374 | ||
323 | bool isBanned(bool trustedSource) | 375 | bool isBanned(bool trustedSource) const |
324 | { | 376 | { |
325 | return trustedSource ? mBanFromTrusted : mBanFromUntrusted; | 377 | return trustedSource ? mBanFromTrusted : mBanFromUntrusted; |
326 | } | 378 | } |
327 | 379 | ||
328 | friend std::ostream& operator<<(std::ostream& s, LLMessageTemplate &msg); | 380 | friend std::ostream& operator<<(std::ostream& s, LLMessageTemplate &msg); |
329 | 381 | ||
382 | const LLMessageBlock* getBlock(char* name) const | ||
383 | { | ||
384 | message_block_map_t::const_iterator iter = mMemberBlocks.find(name); | ||
385 | return iter != mMemberBlocks.end()? *iter : NULL; | ||
386 | } | ||
387 | |||
330 | public: | 388 | public: |
331 | typedef std::map<char*, LLMessageBlock*> message_block_map_t; | 389 | typedef LLDynamicArrayIndexed<LLMessageBlock*, char*, 8> message_block_map_t; |
332 | message_block_map_t mMemberBlocks; | 390 | message_block_map_t mMemberBlocks; |
333 | char *mName; | 391 | char *mName; |
334 | EMsgFrequency mFrequency; | 392 | EMsgFrequency mFrequency; |
335 | EMsgTrust mTrust; | 393 | EMsgTrust mTrust; |
336 | EMsgEncoding mEncoding; | 394 | EMsgEncoding mEncoding; |
395 | EMsgDeprecation mDeprecation; | ||
337 | U32 mMessageNumber; | 396 | U32 mMessageNumber; |
338 | S32 mTotalSize; | 397 | S32 mTotalSize; |
339 | U32 mReceiveCount; // how many of this template have been received since last reset | 398 | U32 mReceiveCount; // how many of this template have been received since last reset |
diff --git a/linden/indra/llmessage/llmessagetemplateparser.cpp b/linden/indra/llmessage/llmessagetemplateparser.cpp new file mode 100644 index 0000000..eb5e87e --- /dev/null +++ b/linden/indra/llmessage/llmessagetemplateparser.cpp | |||
@@ -0,0 +1,754 @@ | |||
1 | /** | ||
2 | * @file llmessagetemplateparser.cpp | ||
3 | * @brief LLMessageTemplateParser implementation | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "llmessagetemplateparser.h" | ||
30 | #include <boost/tokenizer.hpp> | ||
31 | |||
32 | |||
33 | // What follows is a bunch of C functions to do validation. | ||
34 | |||
35 | // Lets support a small subset of regular expressions here | ||
36 | // Syntax is a string made up of: | ||
37 | // a - checks against alphanumeric ([A-Za-z0-9]) | ||
38 | // c - checks against character ([A-Za-z]) | ||
39 | // f - checks against first variable character ([A-Za-z_]) | ||
40 | // v - checks against variable ([A-Za-z0-9_]) | ||
41 | // s - checks against sign of integer ([-0-9]) | ||
42 | // d - checks against integer digit ([0-9]) | ||
43 | // * - repeat last check | ||
44 | |||
45 | // checks 'a' | ||
46 | BOOL b_return_alphanumeric_ok(char c) | ||
47 | { | ||
48 | if ( ( (c < 'A') | ||
49 | ||(c > 'Z')) | ||
50 | &&( (c < 'a') | ||
51 | ||(c > 'z')) | ||
52 | &&( (c < '0') | ||
53 | ||(c > '9'))) | ||
54 | { | ||
55 | return FALSE; | ||
56 | } | ||
57 | return TRUE; | ||
58 | } | ||
59 | |||
60 | // checks 'c' | ||
61 | BOOL b_return_character_ok(char c) | ||
62 | { | ||
63 | if ( ( (c < 'A') | ||
64 | ||(c > 'Z')) | ||
65 | &&( (c < 'a') | ||
66 | ||(c > 'z'))) | ||
67 | { | ||
68 | return FALSE; | ||
69 | } | ||
70 | return TRUE; | ||
71 | } | ||
72 | |||
73 | // checks 'f' | ||
74 | BOOL b_return_first_variable_ok(char c) | ||
75 | { | ||
76 | if ( ( (c < 'A') | ||
77 | ||(c > 'Z')) | ||
78 | &&( (c < 'a') | ||
79 | ||(c > 'z')) | ||
80 | &&(c != '_')) | ||
81 | { | ||
82 | return FALSE; | ||
83 | } | ||
84 | return TRUE; | ||
85 | } | ||
86 | |||
87 | // checks 'v' | ||
88 | BOOL b_return_variable_ok(char c) | ||
89 | { | ||
90 | if ( ( (c < 'A') | ||
91 | ||(c > 'Z')) | ||
92 | &&( (c < 'a') | ||
93 | ||(c > 'z')) | ||
94 | &&( (c < '0') | ||
95 | ||(c > '9')) | ||
96 | &&(c != '_')) | ||
97 | { | ||
98 | return FALSE; | ||
99 | } | ||
100 | return TRUE; | ||
101 | } | ||
102 | |||
103 | // checks 's' | ||
104 | BOOL b_return_signed_integer_ok(char c) | ||
105 | { | ||
106 | if ( ( (c < '0') | ||
107 | ||(c > '9')) | ||
108 | &&(c != '-')) | ||
109 | { | ||
110 | return FALSE; | ||
111 | } | ||
112 | return TRUE; | ||
113 | } | ||
114 | |||
115 | // checks 'd' | ||
116 | BOOL b_return_integer_ok(char c) | ||
117 | { | ||
118 | if ( (c < '0') | ||
119 | ||(c > '9')) | ||
120 | { | ||
121 | return FALSE; | ||
122 | } | ||
123 | return TRUE; | ||
124 | } | ||
125 | |||
126 | BOOL (*gParseCheckCharacters[])(char c) = | ||
127 | { | ||
128 | b_return_alphanumeric_ok, | ||
129 | b_return_character_ok, | ||
130 | b_return_first_variable_ok, | ||
131 | b_return_variable_ok, | ||
132 | b_return_signed_integer_ok, | ||
133 | b_return_integer_ok | ||
134 | }; | ||
135 | |||
136 | S32 get_checker_number(char checker) | ||
137 | { | ||
138 | switch(checker) | ||
139 | { | ||
140 | case 'a': | ||
141 | return 0; | ||
142 | case 'c': | ||
143 | return 1; | ||
144 | case 'f': | ||
145 | return 2; | ||
146 | case 'v': | ||
147 | return 3; | ||
148 | case 's': | ||
149 | return 4; | ||
150 | case 'd': | ||
151 | return 5; | ||
152 | case '*': | ||
153 | return 9999; | ||
154 | default: | ||
155 | return -1; | ||
156 | } | ||
157 | } | ||
158 | |||
159 | // check token based on passed simplified regular expression | ||
160 | BOOL b_check_token(const char *token, char *regexp) | ||
161 | { | ||
162 | S32 tptr, rptr = 0; | ||
163 | S32 current_checker, next_checker = 0; | ||
164 | |||
165 | current_checker = get_checker_number(regexp[rptr++]); | ||
166 | |||
167 | if (current_checker == -1) | ||
168 | { | ||
169 | llerrs << "Invalid regular expression value!" << llendl; | ||
170 | return FALSE; | ||
171 | } | ||
172 | |||
173 | if (current_checker == 9999) | ||
174 | { | ||
175 | llerrs << "Regular expression can't start with *!" << llendl; | ||
176 | return FALSE; | ||
177 | } | ||
178 | |||
179 | for (tptr = 0; token[tptr]; tptr++) | ||
180 | { | ||
181 | if (current_checker == -1) | ||
182 | { | ||
183 | llerrs << "Input exceeds regular expression!\nDid you forget a *?" << llendl; | ||
184 | return FALSE; | ||
185 | } | ||
186 | |||
187 | if (!gParseCheckCharacters[current_checker](token[tptr])) | ||
188 | { | ||
189 | return FALSE; | ||
190 | } | ||
191 | if (next_checker != 9999) | ||
192 | { | ||
193 | next_checker = get_checker_number(regexp[rptr++]); | ||
194 | if (next_checker != 9999) | ||
195 | { | ||
196 | current_checker = next_checker; | ||
197 | } | ||
198 | } | ||
199 | } | ||
200 | return TRUE; | ||
201 | } | ||
202 | |||
203 | // C variable can be made up of upper or lower case letters, underscores, or numbers, but can't start with a number | ||
204 | BOOL b_variable_ok(const char *token) | ||
205 | { | ||
206 | if (!b_check_token(token, "fv*")) | ||
207 | { | ||
208 | llwarns << "Token '" << token << "' isn't a variable!" << llendl; | ||
209 | return FALSE; | ||
210 | } | ||
211 | return TRUE; | ||
212 | } | ||
213 | |||
214 | // An integer is made up of the digits 0-9 and may be preceded by a '-' | ||
215 | BOOL b_integer_ok(const char *token) | ||
216 | { | ||
217 | if (!b_check_token(token, "sd*")) | ||
218 | { | ||
219 | llwarns << "Token isn't an integer!" << llendl; | ||
220 | return FALSE; | ||
221 | } | ||
222 | return TRUE; | ||
223 | } | ||
224 | |||
225 | // An integer is made up of the digits 0-9 | ||
226 | BOOL b_positive_integer_ok(const char *token) | ||
227 | { | ||
228 | if (!b_check_token(token, "d*")) | ||
229 | { | ||
230 | llwarns << "Token isn't an integer!" << llendl; | ||
231 | return FALSE; | ||
232 | } | ||
233 | return TRUE; | ||
234 | } | ||
235 | |||
236 | |||
237 | // Done with C functions, here's the tokenizer. | ||
238 | |||
239 | typedef boost::tokenizer< boost::char_separator<char> > tokenizer; | ||
240 | |||
241 | LLTemplateTokenizer::LLTemplateTokenizer(const std::string & contents) : mStarted(false), mTokens() | ||
242 | { | ||
243 | boost::char_separator<char> newline("\r\n", "", boost::keep_empty_tokens); | ||
244 | boost::char_separator<char> spaces(" \t"); | ||
245 | U32 line_counter = 1; | ||
246 | |||
247 | tokenizer line_tokens(contents, newline); | ||
248 | for(tokenizer::iterator line_iter = line_tokens.begin(); | ||
249 | line_iter != line_tokens.end(); | ||
250 | ++line_iter, ++line_counter) | ||
251 | { | ||
252 | tokenizer word_tokens(*line_iter, spaces); | ||
253 | for(tokenizer::iterator word_iter = word_tokens.begin(); | ||
254 | word_iter != word_tokens.end(); | ||
255 | ++word_iter) | ||
256 | { | ||
257 | if((*word_iter)[0] == '/') | ||
258 | { | ||
259 | break; // skip to end of line on comments | ||
260 | } | ||
261 | positioned_token pt;// = new positioned_token(); | ||
262 | pt.str = std::string(*word_iter); | ||
263 | pt.line = line_counter; | ||
264 | mTokens.push_back(pt); | ||
265 | } | ||
266 | } | ||
267 | mCurrent = mTokens.begin(); | ||
268 | } | ||
269 | void LLTemplateTokenizer::inc() | ||
270 | { | ||
271 | if(atEOF()) | ||
272 | { | ||
273 | error("trying to increment token of EOF"); | ||
274 | } | ||
275 | else if(mStarted) | ||
276 | { | ||
277 | ++mCurrent; | ||
278 | } | ||
279 | else | ||
280 | { | ||
281 | mStarted = true; | ||
282 | mCurrent = mTokens.begin(); | ||
283 | } | ||
284 | } | ||
285 | void LLTemplateTokenizer::dec() | ||
286 | { | ||
287 | if(mCurrent == mTokens.begin()) | ||
288 | { | ||
289 | if(mStarted) | ||
290 | { | ||
291 | mStarted = false; | ||
292 | } | ||
293 | else | ||
294 | { | ||
295 | error("trying to decrement past beginning of file"); | ||
296 | } | ||
297 | } | ||
298 | else | ||
299 | { | ||
300 | mCurrent--; | ||
301 | } | ||
302 | } | ||
303 | |||
304 | std::string LLTemplateTokenizer::get() const | ||
305 | { | ||
306 | if(atEOF()) | ||
307 | { | ||
308 | error("trying to get EOF"); | ||
309 | } | ||
310 | return mCurrent->str; | ||
311 | } | ||
312 | |||
313 | U32 LLTemplateTokenizer::line() const | ||
314 | { | ||
315 | if(atEOF()) | ||
316 | { | ||
317 | return 0; | ||
318 | } | ||
319 | return mCurrent->line; | ||
320 | } | ||
321 | |||
322 | bool LLTemplateTokenizer::atEOF() const | ||
323 | { | ||
324 | return mCurrent == mTokens.end(); | ||
325 | } | ||
326 | |||
327 | std::string LLTemplateTokenizer::next() | ||
328 | { | ||
329 | inc(); | ||
330 | return get(); | ||
331 | } | ||
332 | |||
333 | bool LLTemplateTokenizer::want(const std::string & token) | ||
334 | { | ||
335 | if(atEOF()) return false; | ||
336 | inc(); | ||
337 | if(atEOF()) return false; | ||
338 | if(get() != token) | ||
339 | { | ||
340 | dec(); // back up a step | ||
341 | return false; | ||
342 | } | ||
343 | return true; | ||
344 | } | ||
345 | |||
346 | bool LLTemplateTokenizer::wantEOF() | ||
347 | { | ||
348 | // see if the next token is EOF | ||
349 | if(atEOF()) return true; | ||
350 | inc(); | ||
351 | if(!atEOF()) | ||
352 | { | ||
353 | dec(); // back up a step | ||
354 | return false; | ||
355 | } | ||
356 | return true; | ||
357 | } | ||
358 | |||
359 | void LLTemplateTokenizer::error(std::string message) const | ||
360 | { | ||
361 | if(atEOF()) | ||
362 | { | ||
363 | llerrs << "Unexpected end of file: " << message << llendl; | ||
364 | } | ||
365 | else | ||
366 | { | ||
367 | llerrs << "Problem parsing message template at line " | ||
368 | << line() << ", with token '" << get() << "' : " | ||
369 | << message << llendl; | ||
370 | } | ||
371 | } | ||
372 | |||
373 | |||
374 | // Done with tokenizer, next is the parser. | ||
375 | |||
376 | LLTemplateParser::LLTemplateParser(LLTemplateTokenizer & tokens): | ||
377 | mVersion(0.f), | ||
378 | mMessages() | ||
379 | { | ||
380 | // the version number should be the first thing in the file | ||
381 | if (tokens.want("version")) | ||
382 | { | ||
383 | // version number | ||
384 | std::string vers_string = tokens.next(); | ||
385 | mVersion = (F32)atof(vers_string.c_str()); | ||
386 | |||
387 | llinfos << "### Message template version " << mVersion << " ###" << llendl; | ||
388 | } | ||
389 | else | ||
390 | { | ||
391 | llerrs << "Version must be first in the message template, found " | ||
392 | << tokens.next() << llendl; | ||
393 | } | ||
394 | |||
395 | while(LLMessageTemplate * templatep = parseMessage(tokens)) | ||
396 | { | ||
397 | if (templatep->getDeprecation() != MD_DEPRECATED) | ||
398 | { | ||
399 | mMessages.push_back(templatep); | ||
400 | } | ||
401 | } | ||
402 | |||
403 | if(!tokens.wantEOF()) | ||
404 | { | ||
405 | llerrs << "Expected end of template or a message, instead found: " | ||
406 | << tokens.next() << " at " << tokens.line() << llendl; | ||
407 | } | ||
408 | } | ||
409 | |||
410 | F32 LLTemplateParser::getVersion() const | ||
411 | { | ||
412 | return mVersion; | ||
413 | } | ||
414 | |||
415 | LLTemplateParser::message_iterator LLTemplateParser::getMessagesBegin() const | ||
416 | { | ||
417 | return mMessages.begin(); | ||
418 | } | ||
419 | |||
420 | LLTemplateParser::message_iterator LLTemplateParser::getMessagesEnd() const | ||
421 | { | ||
422 | return mMessages.end(); | ||
423 | } | ||
424 | |||
425 | |||
426 | // static | ||
427 | LLMessageTemplate * LLTemplateParser::parseMessage(LLTemplateTokenizer & tokens) | ||
428 | { | ||
429 | LLMessageTemplate *templatep = NULL; | ||
430 | if(!tokens.want("{")) | ||
431 | { | ||
432 | return NULL; | ||
433 | } | ||
434 | |||
435 | // name first | ||
436 | std::string template_name = tokens.next(); | ||
437 | |||
438 | // is name a legit C variable name | ||
439 | if (!b_variable_ok(template_name.c_str())) | ||
440 | { | ||
441 | llerrs << "Not legit variable name: " << template_name << " at " << tokens.line() << llendl; | ||
442 | } | ||
443 | |||
444 | // ok, now get Frequency ("High", "Medium", or "Low") | ||
445 | EMsgFrequency frequency = MFT_LOW; | ||
446 | std::string freq_string = tokens.next(); | ||
447 | if (freq_string == "High") | ||
448 | { | ||
449 | frequency = MFT_HIGH; | ||
450 | } | ||
451 | else if (freq_string == "Medium") | ||
452 | { | ||
453 | frequency = MFT_MEDIUM; | ||
454 | } | ||
455 | else if (freq_string == "Low" || freq_string == "Fixed") | ||
456 | { | ||
457 | frequency = MFT_LOW; | ||
458 | } | ||
459 | else | ||
460 | { | ||
461 | llerrs << "Expected frequency, got " << freq_string << " at " << tokens.line() << llendl; | ||
462 | } | ||
463 | |||
464 | // TODO more explicit checking here pls | ||
465 | U32 message_number = strtoul(tokens.next().c_str(),NULL,0); | ||
466 | |||
467 | switch (frequency) { | ||
468 | case MFT_HIGH: | ||
469 | break; | ||
470 | case MFT_MEDIUM: | ||
471 | message_number = (255 << 8) | message_number; | ||
472 | break; | ||
473 | case MFT_LOW: | ||
474 | message_number = (255 << 24) | (255 << 16) | message_number; | ||
475 | break; | ||
476 | default: | ||
477 | llerrs << "Unknown frequency enum: " << frequency << llendl; | ||
478 | } | ||
479 | |||
480 | templatep = new LLMessageTemplate( | ||
481 | template_name.c_str(), | ||
482 | message_number, | ||
483 | frequency); | ||
484 | |||
485 | // Now get trust ("Trusted", "NotTrusted") | ||
486 | std::string trust = tokens.next(); | ||
487 | if (trust == "Trusted") | ||
488 | { | ||
489 | templatep->setTrust(MT_TRUST); | ||
490 | } | ||
491 | else if (trust == "NotTrusted") | ||
492 | { | ||
493 | templatep->setTrust(MT_NOTRUST); | ||
494 | } | ||
495 | else | ||
496 | { | ||
497 | llerrs << "Bad trust " << trust << " at " << tokens.line() << llendl; | ||
498 | } | ||
499 | |||
500 | // get encoding | ||
501 | std::string encoding = tokens.next(); | ||
502 | if(encoding == "Unencoded") | ||
503 | { | ||
504 | templatep->setEncoding(ME_UNENCODED); | ||
505 | } | ||
506 | else if(encoding == "Zerocoded") | ||
507 | { | ||
508 | templatep->setEncoding(ME_ZEROCODED); | ||
509 | } | ||
510 | else | ||
511 | { | ||
512 | llerrs << "Bad encoding " << encoding << " at " << tokens.line() << llendl; | ||
513 | } | ||
514 | |||
515 | // get deprecation | ||
516 | if(tokens.want("Deprecated")) | ||
517 | { | ||
518 | templatep->setDeprecation(MD_DEPRECATED); | ||
519 | } | ||
520 | else if (tokens.want("UDPDeprecated")) | ||
521 | { | ||
522 | templatep->setDeprecation(MD_UDPDEPRECATED); | ||
523 | } | ||
524 | else if (tokens.want("NotDeprecated")) | ||
525 | { | ||
526 | // this is the default value, but it can't hurt to set it twice | ||
527 | templatep->setDeprecation(MD_NOTDEPRECATED); | ||
528 | } | ||
529 | else { | ||
530 | // It's probably a brace, let's just start block processing | ||
531 | } | ||
532 | |||
533 | while(LLMessageBlock * blockp = parseBlock(tokens)) | ||
534 | { | ||
535 | templatep->addBlock(blockp); | ||
536 | } | ||
537 | |||
538 | if(!tokens.want("}")) | ||
539 | { | ||
540 | llerrs << "Expecting closing } for message " << template_name | ||
541 | << " at " << tokens.line() << llendl; | ||
542 | } | ||
543 | return templatep; | ||
544 | } | ||
545 | |||
546 | // static | ||
547 | LLMessageBlock * LLTemplateParser::parseBlock(LLTemplateTokenizer & tokens) | ||
548 | { | ||
549 | LLMessageBlock * blockp = NULL; | ||
550 | |||
551 | if(!tokens.want("{")) | ||
552 | { | ||
553 | return NULL; | ||
554 | } | ||
555 | |||
556 | // name first | ||
557 | std::string block_name = tokens.next(); | ||
558 | |||
559 | // is name a legit C variable name | ||
560 | if (!b_variable_ok(block_name.c_str())) | ||
561 | { | ||
562 | llerrs << "not a legal block name: " << block_name | ||
563 | << " at " << tokens.line() << llendl; | ||
564 | } | ||
565 | |||
566 | // now, block type ("Single", "Multiple", or "Variable") | ||
567 | std::string block_type = tokens.next(); | ||
568 | // which one is it? | ||
569 | if (block_type == "Single") | ||
570 | { | ||
571 | // ok, we can create a block | ||
572 | blockp = new LLMessageBlock(block_name.c_str(), MBT_SINGLE); | ||
573 | } | ||
574 | else if (block_type == "Multiple") | ||
575 | { | ||
576 | // need to get the number of repeats | ||
577 | std::string repeats = tokens.next(); | ||
578 | |||
579 | // is it a legal integer | ||
580 | if (!b_positive_integer_ok(repeats.c_str())) | ||
581 | { | ||
582 | llerrs << "not a legal integer for block multiple count: " | ||
583 | << repeats << " at " << tokens.line() << llendl; | ||
584 | } | ||
585 | |||
586 | // ok, we can create a block | ||
587 | blockp = new LLMessageBlock(block_name.c_str(), | ||
588 | MBT_MULTIPLE, | ||
589 | atoi(repeats.c_str())); | ||
590 | } | ||
591 | else if (block_type == "Variable") | ||
592 | { | ||
593 | // ok, we can create a block | ||
594 | blockp = new LLMessageBlock(block_name.c_str(), MBT_VARIABLE); | ||
595 | } | ||
596 | else | ||
597 | { | ||
598 | llerrs << "bad block type: " << block_type | ||
599 | << " at " << tokens.line() << llendl; | ||
600 | } | ||
601 | |||
602 | |||
603 | while(LLMessageVariable * varp = parseVariable(tokens)) | ||
604 | { | ||
605 | blockp->addVariable(varp->getName(), | ||
606 | varp->getType(), | ||
607 | varp->getSize()); | ||
608 | delete varp; | ||
609 | } | ||
610 | |||
611 | if(!tokens.want("}")) | ||
612 | { | ||
613 | llerrs << "Expecting closing } for block " << block_name | ||
614 | << " at " << tokens.line() << llendl; | ||
615 | } | ||
616 | return blockp; | ||
617 | |||
618 | } | ||
619 | |||
620 | // static | ||
621 | LLMessageVariable * LLTemplateParser::parseVariable(LLTemplateTokenizer & tokens) | ||
622 | { | ||
623 | LLMessageVariable * varp = NULL; | ||
624 | if(!tokens.want("{")) | ||
625 | { | ||
626 | return NULL; | ||
627 | } | ||
628 | |||
629 | std::string var_name = tokens.next(); | ||
630 | |||
631 | if (!b_variable_ok(var_name.c_str())) | ||
632 | { | ||
633 | llerrs << "Not a legit variable name: " << var_name | ||
634 | << " at " << tokens.line() << llendl; | ||
635 | } | ||
636 | |||
637 | std::string var_type = tokens.next(); | ||
638 | |||
639 | if (var_type == "U8") | ||
640 | { | ||
641 | varp = new LLMessageVariable(var_name.c_str(), MVT_U8, 1); | ||
642 | } | ||
643 | else if (var_type == "U16") | ||
644 | { | ||
645 | varp = new LLMessageVariable(var_name.c_str(), MVT_U16, 2); | ||
646 | } | ||
647 | else if (var_type == "U32") | ||
648 | { | ||
649 | varp = new LLMessageVariable(var_name.c_str(), MVT_U32, 4); | ||
650 | } | ||
651 | else if (var_type == "U64") | ||
652 | { | ||
653 | varp = new LLMessageVariable(var_name.c_str(), MVT_U64, 8); | ||
654 | } | ||
655 | else if (var_type == "S8") | ||
656 | { | ||
657 | varp = new LLMessageVariable(var_name.c_str(), MVT_S8, 1); | ||
658 | } | ||
659 | else if (var_type == "S16") | ||
660 | { | ||
661 | varp = new LLMessageVariable(var_name.c_str(), MVT_S16, 2); | ||
662 | } | ||
663 | else if (var_type == "S32") | ||
664 | { | ||
665 | varp = new LLMessageVariable(var_name.c_str(), MVT_S32, 4); | ||
666 | } | ||
667 | else if (var_type == "S64") | ||
668 | { | ||
669 | varp = new LLMessageVariable(var_name.c_str(), MVT_S64, 8); | ||
670 | } | ||
671 | else if (var_type == "F32") | ||
672 | { | ||
673 | varp = new LLMessageVariable(var_name.c_str(), MVT_F32, 4); | ||
674 | } | ||
675 | else if (var_type == "F64") | ||
676 | { | ||
677 | varp = new LLMessageVariable(var_name.c_str(), MVT_F64, 8); | ||
678 | } | ||
679 | else if (var_type == "LLVector3") | ||
680 | { | ||
681 | varp = new LLMessageVariable(var_name.c_str(), MVT_LLVector3, 12); | ||
682 | } | ||
683 | else if (var_type == "LLVector3d") | ||
684 | { | ||
685 | varp = new LLMessageVariable(var_name.c_str(), MVT_LLVector3d, 24); | ||
686 | } | ||
687 | else if (var_type == "LLVector4") | ||
688 | { | ||
689 | varp = new LLMessageVariable(var_name.c_str(), MVT_LLVector4, 16); | ||
690 | } | ||
691 | else if (var_type == "LLQuaternion") | ||
692 | { | ||
693 | varp = new LLMessageVariable(var_name.c_str(), MVT_LLQuaternion, 12); | ||
694 | } | ||
695 | else if (var_type == "LLUUID") | ||
696 | { | ||
697 | varp = new LLMessageVariable(var_name.c_str(), MVT_LLUUID, 16); | ||
698 | } | ||
699 | else if (var_type == "BOOL") | ||
700 | { | ||
701 | varp = new LLMessageVariable(var_name.c_str(), MVT_BOOL, 1); | ||
702 | } | ||
703 | else if (var_type == "IPADDR") | ||
704 | { | ||
705 | varp = new LLMessageVariable(var_name.c_str(), MVT_IP_ADDR, 4); | ||
706 | } | ||
707 | else if (var_type == "IPPORT") | ||
708 | { | ||
709 | varp = new LLMessageVariable(var_name.c_str(), MVT_IP_PORT, 2); | ||
710 | } | ||
711 | else if (var_type == "Fixed" || var_type == "Variable") | ||
712 | { | ||
713 | std::string variable_size = tokens.next(); | ||
714 | |||
715 | if (!b_positive_integer_ok(variable_size.c_str())) | ||
716 | { | ||
717 | llerrs << "not a legal integer variable size: " << variable_size | ||
718 | << " at " << tokens.line() << llendl; | ||
719 | } | ||
720 | |||
721 | EMsgVariableType type_enum; | ||
722 | if(var_type == "Variable") | ||
723 | { | ||
724 | type_enum = MVT_VARIABLE; | ||
725 | } | ||
726 | else if(var_type == "Fixed") | ||
727 | { | ||
728 | type_enum = MVT_FIXED; | ||
729 | } | ||
730 | else | ||
731 | { | ||
732 | type_enum = MVT_FIXED; // removes a warning | ||
733 | llerrs << "bad variable type: " << var_type | ||
734 | << " at " << tokens.line() << llendl; | ||
735 | } | ||
736 | |||
737 | varp = new LLMessageVariable( | ||
738 | var_name.c_str(), | ||
739 | type_enum, | ||
740 | atoi(variable_size.c_str())); | ||
741 | } | ||
742 | else | ||
743 | { | ||
744 | llerrs << "bad variable type:" << var_type | ||
745 | << " at " << tokens.line() << llendl; | ||
746 | } | ||
747 | |||
748 | if(!tokens.want("}")) | ||
749 | { | ||
750 | llerrs << "Expecting closing } for variable " << var_name | ||
751 | << " at " << tokens.line() << llendl; | ||
752 | } | ||
753 | return varp; | ||
754 | } | ||
diff --git a/linden/indra/llmessage/llmessagetemplateparser.h b/linden/indra/llmessage/llmessagetemplateparser.h new file mode 100644 index 0000000..f56dfec --- /dev/null +++ b/linden/indra/llmessage/llmessagetemplateparser.h | |||
@@ -0,0 +1,82 @@ | |||
1 | /** | ||
2 | * @file llmessagetemplateparser.h | ||
3 | * @brief Classes to parse message template. | ||
4 | * | ||
5 | * Copyright (c) 2000-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_MESSAGETEMPLATEPARSER_H | ||
30 | #define LL_MESSAGETEMPLATEPARSER_H | ||
31 | |||
32 | #include <string> | ||
33 | #include "llmessagetemplate.h" | ||
34 | |||
35 | class LLTemplateTokenizer | ||
36 | { | ||
37 | public: | ||
38 | LLTemplateTokenizer(const std::string & contents); | ||
39 | |||
40 | U32 line() const; | ||
41 | bool atEOF() const; | ||
42 | std::string next(); | ||
43 | |||
44 | bool want(const std::string & token); | ||
45 | bool wantEOF(); | ||
46 | private: | ||
47 | void inc(); | ||
48 | void dec(); | ||
49 | std::string get() const; | ||
50 | void error(std::string message = "generic") const; | ||
51 | |||
52 | struct positioned_token | ||
53 | { | ||
54 | std::string str; | ||
55 | U32 line; | ||
56 | }; | ||
57 | |||
58 | bool mStarted; | ||
59 | std::list<positioned_token> mTokens; | ||
60 | std::list<positioned_token>::const_iterator mCurrent; | ||
61 | }; | ||
62 | |||
63 | class LLTemplateParser | ||
64 | { | ||
65 | public: | ||
66 | typedef std::list<LLMessageTemplate *>::const_iterator message_iterator; | ||
67 | |||
68 | static LLMessageTemplate * parseMessage(LLTemplateTokenizer & tokens); | ||
69 | static LLMessageBlock * parseBlock(LLTemplateTokenizer & tokens); | ||
70 | static LLMessageVariable * parseVariable(LLTemplateTokenizer & tokens); | ||
71 | |||
72 | LLTemplateParser(LLTemplateTokenizer & tokens); | ||
73 | message_iterator getMessagesBegin() const; | ||
74 | message_iterator getMessagesEnd() const; | ||
75 | F32 getVersion() const; | ||
76 | |||
77 | private: | ||
78 | F32 mVersion; | ||
79 | std::list<LLMessageTemplate *> mMessages; | ||
80 | }; | ||
81 | |||
82 | #endif | ||
diff --git a/linden/indra/llmessage/llmsgvariabletype.h b/linden/indra/llmessage/llmsgvariabletype.h index 360d949..59fba7c 100644 --- a/linden/indra/llmessage/llmsgvariabletype.h +++ b/linden/indra/llmessage/llmsgvariabletype.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llmsgvariabletype.h | ||
3 | * @brief Declaration of the EMsgVariableType enumeration. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLMSGVARIABLETYPE_H | 29 | #ifndef LL_LLMSGVARIABLETYPE_H |
2 | #define LL_LLMSGVARIABLETYPE_H | 30 | #define LL_LLMSGVARIABLETYPE_H |
3 | 31 | ||
diff --git a/linden/indra/llmessage/llpacketack.cpp b/linden/indra/llmessage/llpacketack.cpp new file mode 100644 index 0000000..27d9916 --- /dev/null +++ b/linden/indra/llmessage/llpacketack.cpp | |||
@@ -0,0 +1,84 @@ | |||
1 | /** | ||
2 | * @file llpacketack.cpp | ||
3 | * @author Phoenix | ||
4 | * @date 2007-05-09 | ||
5 | * @brief Implementation of the LLReliablePacket. | ||
6 | * | ||
7 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlife.com/developers/opensource/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | */ | ||
30 | |||
31 | #include "linden_common.h" | ||
32 | #include "llpacketack.h" | ||
33 | |||
34 | #if !LL_WINDOWS | ||
35 | #include <netinet/in.h> | ||
36 | #else | ||
37 | #include "winsock2.h" | ||
38 | #endif | ||
39 | |||
40 | #include "message.h" | ||
41 | |||
42 | LLReliablePacket::LLReliablePacket( | ||
43 | S32 socket, | ||
44 | U8* buf_ptr, | ||
45 | S32 buf_len, | ||
46 | LLReliablePacketParams* params) : | ||
47 | mBuffer(NULL), | ||
48 | mBufferLength(0) | ||
49 | { | ||
50 | if (params) | ||
51 | { | ||
52 | mHost = params->mHost; | ||
53 | mRetries = params->mRetries; | ||
54 | mPingBasedRetry = params->mPingBasedRetry; | ||
55 | mTimeout = params->mTimeout; | ||
56 | mCallback = params->mCallback; | ||
57 | mCallbackData = params->mCallbackData; | ||
58 | mMessageName = params->mMessageName; | ||
59 | } | ||
60 | else | ||
61 | { | ||
62 | mRetries = 0; | ||
63 | mPingBasedRetry = TRUE; | ||
64 | mTimeout = 0.f; | ||
65 | mCallback = NULL; | ||
66 | mCallbackData = NULL; | ||
67 | mMessageName = NULL; | ||
68 | } | ||
69 | |||
70 | mExpirationTime = (F64)((S64)totalTime())/1000000.0 + mTimeout; | ||
71 | mPacketID = ntohl(*((U32*)(&buf_ptr[PHL_PACKET_ID]))); | ||
72 | |||
73 | mSocket = socket; | ||
74 | if (mRetries) | ||
75 | { | ||
76 | mBuffer = new U8[buf_len]; | ||
77 | if (mBuffer != NULL) | ||
78 | { | ||
79 | memcpy(mBuffer,buf_ptr,buf_len); /*Flawfinder: ignore*/ | ||
80 | mBufferLength = buf_len; | ||
81 | } | ||
82 | |||
83 | } | ||
84 | } | ||
diff --git a/linden/indra/llmessage/llpacketack.h b/linden/indra/llmessage/llpacketack.h index c86fb0f..33fb5a0 100644 --- a/linden/indra/llmessage/llpacketack.h +++ b/linden/indra/llmessage/llpacketack.h | |||
@@ -29,37 +29,18 @@ | |||
29 | #ifndef LL_LLPACKETACK_H | 29 | #ifndef LL_LLPACKETACK_H |
30 | #define LL_LLPACKETACK_H | 30 | #define LL_LLPACKETACK_H |
31 | 31 | ||
32 | #include <cstring> | ||
33 | #include <stdio.h> | ||
34 | |||
35 | #include "llerror.h" | ||
36 | #include "lltimer.h" | ||
37 | #include "llhost.h" | 32 | #include "llhost.h" |
38 | 33 | ||
39 | //class LLPacketAck | ||
40 | //{ | ||
41 | //public: | ||
42 | // LLHost mHost; | ||
43 | // TPACKETID mPacketID; | ||
44 | //public: | ||
45 | // LLPacketAck(const LLHost &host, TPACKETID packet_id) | ||
46 | // { | ||
47 | // mHost = host; | ||
48 | // mPacketID = packet_id; | ||
49 | // }; | ||
50 | // ~LLPacketAck(){}; | ||
51 | //}; | ||
52 | |||
53 | class LLReliablePacketParams | 34 | class LLReliablePacketParams |
54 | { | 35 | { |
55 | public: | 36 | public: |
56 | LLHost mHost; | 37 | LLHost mHost; |
57 | S32 mRetries; | 38 | S32 mRetries; |
58 | BOOL mPingBasedRetry; | 39 | BOOL mPingBasedRetry; |
59 | F32 mTimeout; | 40 | F32 mTimeout; |
60 | void (*mCallback)(void **,S32); | 41 | void (*mCallback)(void **,S32); |
61 | void **mCallbackData; | 42 | void** mCallbackData; |
62 | char *mMessageName; | 43 | char* mMessageName; |
63 | 44 | ||
64 | public: | 45 | public: |
65 | LLReliablePacketParams() | 46 | LLReliablePacketParams() |
@@ -80,9 +61,13 @@ public: | |||
80 | mMessageName = NULL; | 61 | mMessageName = NULL; |
81 | }; | 62 | }; |
82 | 63 | ||
83 | void set ( const LLHost &host, S32 retries, BOOL ping_based_retry, | 64 | void set( |
84 | F32 timeout, | 65 | const LLHost& host, |
85 | void (*callback)(void **,S32), void **callback_data, char *name ) | 66 | S32 retries, |
67 | BOOL ping_based_retry, | ||
68 | F32 timeout, | ||
69 | void (*callback)(void**,S32), | ||
70 | void** callback_data, char* name) | ||
86 | { | 71 | { |
87 | mHost = host; | 72 | mHost = host; |
88 | mRetries = retries; | 73 | mRetries = retries; |
@@ -97,53 +82,11 @@ public: | |||
97 | class LLReliablePacket | 82 | class LLReliablePacket |
98 | { | 83 | { |
99 | public: | 84 | public: |
100 | LLReliablePacket(S32 socket, U8 *buf_ptr, S32 buf_len, LLReliablePacketParams *params) : | 85 | LLReliablePacket( |
101 | mBuffer(NULL), | 86 | S32 socket, |
102 | mBufferLength(0) | 87 | U8* buf_ptr, |
103 | { | 88 | S32 buf_len, |
104 | if (params) | 89 | LLReliablePacketParams* params); |
105 | { | ||
106 | mHost = params->mHost; | ||
107 | mRetries = params->mRetries; | ||
108 | mPingBasedRetry = params->mPingBasedRetry; | ||
109 | mTimeout = params->mTimeout; | ||
110 | mCallback = params->mCallback; | ||
111 | mCallbackData = params->mCallbackData; | ||
112 | mMessageName = params->mMessageName; | ||
113 | } | ||
114 | else | ||
115 | { | ||
116 | mRetries = 0; | ||
117 | mPingBasedRetry = TRUE; | ||
118 | mTimeout = 0.f; | ||
119 | mCallback = NULL; | ||
120 | mCallbackData = NULL; | ||
121 | mMessageName = NULL; | ||
122 | } | ||
123 | |||
124 | mExpirationTime = (F64)((S64)totalTime())/1000000.0 + mTimeout; | ||
125 | mPacketID = buf_ptr[1] + ((buf_ptr[0] & 0x0f ) * 256); | ||
126 | if (sizeof(TPACKETID) == 4) | ||
127 | { | ||
128 | mPacketID *= 256; | ||
129 | mPacketID += buf_ptr[2]; | ||
130 | mPacketID *= 256; | ||
131 | mPacketID += buf_ptr[3]; | ||
132 | } | ||
133 | |||
134 | mSocket = socket; | ||
135 | if (mRetries) | ||
136 | { | ||
137 | mBuffer = new U8[buf_len]; | ||
138 | if (mBuffer != NULL) | ||
139 | { | ||
140 | memcpy(mBuffer,buf_ptr,buf_len); /*Flawfinder: ignore*/ | ||
141 | mBufferLength = buf_len; | ||
142 | } | ||
143 | |||
144 | } | ||
145 | }; | ||
146 | |||
147 | ~LLReliablePacket() | 90 | ~LLReliablePacket() |
148 | { | 91 | { |
149 | mCallback = NULL; | 92 | mCallback = NULL; |
@@ -153,22 +96,21 @@ public: | |||
153 | 96 | ||
154 | friend class LLCircuitData; | 97 | friend class LLCircuitData; |
155 | protected: | 98 | protected: |
156 | S32 mSocket; | 99 | S32 mSocket; |
157 | LLHost mHost; | 100 | LLHost mHost; |
158 | S32 mRetries; | 101 | S32 mRetries; |
159 | BOOL mPingBasedRetry; | 102 | BOOL mPingBasedRetry; |
160 | F32 mTimeout; | 103 | F32 mTimeout; |
161 | void (*mCallback)(void **,S32); | 104 | void (*mCallback)(void**,S32); |
162 | void **mCallbackData; | 105 | void** mCallbackData; |
163 | char *mMessageName; | 106 | char* mMessageName; |
164 | 107 | ||
165 | U8 *mBuffer; | 108 | U8* mBuffer; |
166 | S32 mBufferLength; | 109 | S32 mBufferLength; |
167 | 110 | ||
168 | TPACKETID mPacketID; | 111 | TPACKETID mPacketID; |
169 | 112 | ||
170 | F64 mExpirationTime; | 113 | F64 mExpirationTime; |
171 | |||
172 | }; | 114 | }; |
173 | 115 | ||
174 | #endif | 116 | #endif |
diff --git a/linden/indra/llmessage/llsdmessagebuilder.cpp b/linden/indra/llmessage/llsdmessagebuilder.cpp index b7deb48..d3dcd5b 100755 --- a/linden/indra/llmessage/llsdmessagebuilder.cpp +++ b/linden/indra/llmessage/llsdmessagebuilder.cpp | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llsdmessagebuilder.cpp | ||
3 | * @brief LLSDMessageBuilder class implementation. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #include "linden_common.h" | 29 | #include "linden_common.h" |
2 | 30 | ||
3 | #include "llsdmessagebuilder.h" | 31 | #include "llsdmessagebuilder.h" |
@@ -28,13 +56,13 @@ LLSDMessageBuilder::~LLSDMessageBuilder() | |||
28 | 56 | ||
29 | 57 | ||
30 | // virtual | 58 | // virtual |
31 | void LLSDMessageBuilder::newMessage(const char *name) | 59 | void LLSDMessageBuilder::newMessage(const char* name) |
32 | { | 60 | { |
33 | mbSBuilt = FALSE; | 61 | mbSBuilt = FALSE; |
34 | mbSClear = FALSE; | 62 | mbSClear = FALSE; |
35 | 63 | ||
36 | mCurrentMessage = LLSD::emptyMap(); | 64 | mCurrentMessage = LLSD::emptyMap(); |
37 | mCurrentMessageName = (char *)name; | 65 | mCurrentMessageName = (char*)name; |
38 | } | 66 | } |
39 | 67 | ||
40 | // virtual | 68 | // virtual |
@@ -74,8 +102,10 @@ BOOL LLSDMessageBuilder::removeLastBlock() | |||
74 | return FALSE; | 102 | return FALSE; |
75 | } | 103 | } |
76 | 104 | ||
77 | void LLSDMessageBuilder::addBinaryData(const char *varname, | 105 | void LLSDMessageBuilder::addBinaryData( |
78 | const void *data, S32 size) | 106 | const char* varname, |
107 | const void* data, | ||
108 | S32 size) | ||
79 | { | 109 | { |
80 | std::vector<U8> v; | 110 | std::vector<U8> v; |
81 | v.resize(size); | 111 | v.resize(size); |
@@ -83,57 +113,57 @@ void LLSDMessageBuilder::addBinaryData(const char *varname, | |||
83 | (*mCurrentBlock)[varname] = v; | 113 | (*mCurrentBlock)[varname] = v; |
84 | } | 114 | } |
85 | 115 | ||
86 | void LLSDMessageBuilder::addS8(const char *varname, S8 v) | 116 | void LLSDMessageBuilder::addS8(const char* varname, S8 v) |
87 | { | 117 | { |
88 | (*mCurrentBlock)[varname] = v; | 118 | (*mCurrentBlock)[varname] = v; |
89 | } | 119 | } |
90 | 120 | ||
91 | void LLSDMessageBuilder::addU8(const char *varname, U8 v) | 121 | void LLSDMessageBuilder::addU8(const char* varname, U8 v) |
92 | { | 122 | { |
93 | (*mCurrentBlock)[varname] = v; | 123 | (*mCurrentBlock)[varname] = v; |
94 | } | 124 | } |
95 | 125 | ||
96 | void LLSDMessageBuilder::addS16(const char *varname, S16 v) | 126 | void LLSDMessageBuilder::addS16(const char* varname, S16 v) |
97 | { | 127 | { |
98 | (*mCurrentBlock)[varname] = v; | 128 | (*mCurrentBlock)[varname] = v; |
99 | } | 129 | } |
100 | 130 | ||
101 | void LLSDMessageBuilder::addU16(const char *varname, U16 v) | 131 | void LLSDMessageBuilder::addU16(const char* varname, U16 v) |
102 | { | 132 | { |
103 | (*mCurrentBlock)[varname] = v; | 133 | (*mCurrentBlock)[varname] = v; |
104 | } | 134 | } |
105 | 135 | ||
106 | void LLSDMessageBuilder::addF32(const char *varname, F32 v) | 136 | void LLSDMessageBuilder::addF32(const char* varname, F32 v) |
107 | { | 137 | { |
108 | (*mCurrentBlock)[varname] = v; | 138 | (*mCurrentBlock)[varname] = v; |
109 | } | 139 | } |
110 | 140 | ||
111 | void LLSDMessageBuilder::addS32(const char *varname, S32 v) | 141 | void LLSDMessageBuilder::addS32(const char* varname, S32 v) |
112 | { | 142 | { |
113 | (*mCurrentBlock)[varname] = v; | 143 | (*mCurrentBlock)[varname] = v; |
114 | } | 144 | } |
115 | 145 | ||
116 | void LLSDMessageBuilder::addU32(const char *varname, U32 v) | 146 | void LLSDMessageBuilder::addU32(const char* varname, U32 v) |
117 | { | 147 | { |
118 | (*mCurrentBlock)[varname] = ll_sd_from_U32(v); | 148 | (*mCurrentBlock)[varname] = ll_sd_from_U32(v); |
119 | } | 149 | } |
120 | 150 | ||
121 | void LLSDMessageBuilder::addU64(const char *varname, U64 v) | 151 | void LLSDMessageBuilder::addU64(const char* varname, U64 v) |
122 | { | 152 | { |
123 | (*mCurrentBlock)[varname] = ll_sd_from_U64(v); | 153 | (*mCurrentBlock)[varname] = ll_sd_from_U64(v); |
124 | } | 154 | } |
125 | 155 | ||
126 | void LLSDMessageBuilder::addF64(const char *varname, F64 v) | 156 | void LLSDMessageBuilder::addF64(const char* varname, F64 v) |
127 | { | 157 | { |
128 | (*mCurrentBlock)[varname] = v; | 158 | (*mCurrentBlock)[varname] = v; |
129 | } | 159 | } |
130 | 160 | ||
131 | void LLSDMessageBuilder::addIPAddr(const char *varname, U32 v) | 161 | void LLSDMessageBuilder::addIPAddr(const char* varname, U32 v) |
132 | { | 162 | { |
133 | (*mCurrentBlock)[varname] = ll_sd_from_ipaddr(v); | 163 | (*mCurrentBlock)[varname] = ll_sd_from_ipaddr(v); |
134 | } | 164 | } |
135 | 165 | ||
136 | void LLSDMessageBuilder::addIPPort(const char *varname, U16 v) | 166 | void LLSDMessageBuilder::addIPPort(const char* varname, U16 v) |
137 | { | 167 | { |
138 | (*mCurrentBlock)[varname] = v; | 168 | (*mCurrentBlock)[varname] = v; |
139 | } | 169 | } |
@@ -159,27 +189,27 @@ void LLSDMessageBuilder::addString(const char* varname, const std::string& v) | |||
159 | (*mCurrentBlock)[varname] = ""; | 189 | (*mCurrentBlock)[varname] = ""; |
160 | } | 190 | } |
161 | 191 | ||
162 | void LLSDMessageBuilder::addVector3(const char *varname, const LLVector3& v) | 192 | void LLSDMessageBuilder::addVector3(const char* varname, const LLVector3& v) |
163 | { | 193 | { |
164 | (*mCurrentBlock)[varname] = ll_sd_from_vector3(v); | 194 | (*mCurrentBlock)[varname] = ll_sd_from_vector3(v); |
165 | } | 195 | } |
166 | 196 | ||
167 | void LLSDMessageBuilder::addVector4(const char *varname, const LLVector4& v) | 197 | void LLSDMessageBuilder::addVector4(const char* varname, const LLVector4& v) |
168 | { | 198 | { |
169 | (*mCurrentBlock)[varname] = ll_sd_from_vector4(v); | 199 | (*mCurrentBlock)[varname] = ll_sd_from_vector4(v); |
170 | } | 200 | } |
171 | 201 | ||
172 | void LLSDMessageBuilder::addVector3d(const char *varname, const LLVector3d& v) | 202 | void LLSDMessageBuilder::addVector3d(const char* varname, const LLVector3d& v) |
173 | { | 203 | { |
174 | (*mCurrentBlock)[varname] = ll_sd_from_vector3d(v); | 204 | (*mCurrentBlock)[varname] = ll_sd_from_vector3d(v); |
175 | } | 205 | } |
176 | 206 | ||
177 | void LLSDMessageBuilder::addQuat(const char *varname, const LLQuaternion& v) | 207 | void LLSDMessageBuilder::addQuat(const char* varname, const LLQuaternion& v) |
178 | { | 208 | { |
179 | (*mCurrentBlock)[varname] = ll_sd_from_quaternion(v); | 209 | (*mCurrentBlock)[varname] = ll_sd_from_quaternion(v); |
180 | } | 210 | } |
181 | 211 | ||
182 | void LLSDMessageBuilder::addUUID(const char *varname, const LLUUID& v) | 212 | void LLSDMessageBuilder::addUUID(const char* varname, const LLUUID& v) |
183 | { | 213 | { |
184 | (*mCurrentBlock)[varname] = v; | 214 | (*mCurrentBlock)[varname] = v; |
185 | } | 215 | } |
@@ -193,9 +223,7 @@ BOOL LLSDMessageBuilder::isMessageFull(const char* blockname) const | |||
193 | return FALSE; | 223 | return FALSE; |
194 | } | 224 | } |
195 | 225 | ||
196 | // make sure that all the desired data is in place and then copy the data | 226 | U32 LLSDMessageBuilder::buildMessage(U8*, U32, U8) |
197 | // into MAX_BUFFER_SIZEd buffer | ||
198 | U32 LLSDMessageBuilder::buildMessage(U8* buffer, U32 buffer_size) | ||
199 | { | 227 | { |
200 | return 0; | 228 | return 0; |
201 | } | 229 | } |
@@ -205,7 +233,7 @@ void LLSDMessageBuilder::copyFromMessageData(const LLMsgData& data) | |||
205 | // copy the blocks | 233 | // copy the blocks |
206 | // counting variables used to encode multiple block info | 234 | // counting variables used to encode multiple block info |
207 | S32 block_count = 0; | 235 | S32 block_count = 0; |
208 | char *block_name = NULL; | 236 | char* block_name = NULL; |
209 | 237 | ||
210 | // loop through msg blocks to loop through variables, totalling up size | 238 | // loop through msg blocks to loop through variables, totalling up size |
211 | // data and filling the new (send) message | 239 | // data and filling the new (send) message |
@@ -222,7 +250,7 @@ void LLSDMessageBuilder::copyFromMessageData(const LLMsgData& data) | |||
222 | if (block_count == 0) | 250 | if (block_count == 0) |
223 | { | 251 | { |
224 | block_count = mbci->mBlockNumber; | 252 | block_count = mbci->mBlockNumber; |
225 | block_name = (char *)mbci->mName; | 253 | block_name = (char*)mbci->mName; |
226 | } | 254 | } |
227 | 255 | ||
228 | // counting down mutliple blocks | 256 | // counting down mutliple blocks |
@@ -248,7 +276,7 @@ void LLSDMessageBuilder::copyFromMessageData(const LLMsgData& data) | |||
248 | void LLSDMessageBuilder::copyFromLLSD(const LLSD& msg) | 276 | void LLSDMessageBuilder::copyFromLLSD(const LLSD& msg) |
249 | { | 277 | { |
250 | mCurrentMessage = msg; | 278 | mCurrentMessage = msg; |
251 | llinfos << LLSDXMLStreamer(mCurrentMessage) << llendl; | 279 | lldebugs << LLSDXMLStreamer(mCurrentMessage) << llendl; |
252 | } | 280 | } |
253 | 281 | ||
254 | const LLSD& LLSDMessageBuilder::getMessage() const | 282 | const LLSD& LLSDMessageBuilder::getMessage() const |
diff --git a/linden/indra/llmessage/llsdmessagebuilder.h b/linden/indra/llmessage/llsdmessagebuilder.h index f04194d..8ea7763 100755 --- a/linden/indra/llmessage/llsdmessagebuilder.h +++ b/linden/indra/llmessage/llsdmessagebuilder.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file llsdmessagebuilder.h | ||
3 | * @brief Declaration of LLSDMessageBuilder class. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLSDMESSAGEBUILDER_H | 29 | #ifndef LL_LLSDMESSAGEBUILDER_H |
2 | #define LL_LLSDMESSAGEBUILDER_H | 30 | #define LL_LLSDMESSAGEBUILDER_H |
3 | 31 | ||
@@ -19,31 +47,33 @@ public: | |||
19 | LLSDMessageBuilder(); | 47 | LLSDMessageBuilder(); |
20 | virtual ~LLSDMessageBuilder(); | 48 | virtual ~LLSDMessageBuilder(); |
21 | 49 | ||
22 | virtual void newMessage(const char *name); | 50 | virtual void newMessage(const char* name); |
23 | 51 | ||
24 | virtual void nextBlock(const char* blockname); | 52 | virtual void nextBlock(const char* blockname); |
25 | virtual BOOL removeLastBlock(); // TODO: babbage: remove this horror... | 53 | virtual BOOL removeLastBlock(); // TODO: babbage: remove this horror... |
26 | 54 | ||
27 | /** All add* methods expect pointers to canonical varname strings. */ | 55 | /** All add* methods expect pointers to canonical varname strings. */ |
28 | virtual void addBinaryData(const char *varname, const void *data, | 56 | virtual void addBinaryData( |
29 | S32 size); | 57 | const char* varname, |
58 | const void* data, | ||
59 | S32 size); | ||
30 | virtual void addBOOL(const char* varname, BOOL b); | 60 | virtual void addBOOL(const char* varname, BOOL b); |
31 | virtual void addS8(const char *varname, S8 s); | 61 | virtual void addS8(const char* varname, S8 s); |
32 | virtual void addU8(const char *varname, U8 u); | 62 | virtual void addU8(const char* varname, U8 u); |
33 | virtual void addS16(const char *varname, S16 i); | 63 | virtual void addS16(const char* varname, S16 i); |
34 | virtual void addU16(const char *varname, U16 i); | 64 | virtual void addU16(const char* varname, U16 i); |
35 | virtual void addF32(const char *varname, F32 f); | 65 | virtual void addF32(const char* varname, F32 f); |
36 | virtual void addS32(const char *varname, S32 s); | 66 | virtual void addS32(const char* varname, S32 s); |
37 | virtual void addU32(const char *varname, U32 u); | 67 | virtual void addU32(const char* varname, U32 u); |
38 | virtual void addU64(const char *varname, U64 lu); | 68 | virtual void addU64(const char* varname, U64 lu); |
39 | virtual void addF64(const char *varname, F64 d); | 69 | virtual void addF64(const char* varname, F64 d); |
40 | virtual void addVector3(const char *varname, const LLVector3& vec); | 70 | virtual void addVector3(const char* varname, const LLVector3& vec); |
41 | virtual void addVector4(const char *varname, const LLVector4& vec); | 71 | virtual void addVector4(const char* varname, const LLVector4& vec); |
42 | virtual void addVector3d(const char *varname, const LLVector3d& vec); | 72 | virtual void addVector3d(const char* varname, const LLVector3d& vec); |
43 | virtual void addQuat(const char *varname, const LLQuaternion& quat); | 73 | virtual void addQuat(const char* varname, const LLQuaternion& quat); |
44 | virtual void addUUID(const char *varname, const LLUUID& uuid); | 74 | virtual void addUUID(const char* varname, const LLUUID& uuid); |
45 | virtual void addIPAddr(const char *varname, const U32 ip); | 75 | virtual void addIPAddr(const char* varname, const U32 ip); |
46 | virtual void addIPPort(const char *varname, const U16 port); | 76 | virtual void addIPPort(const char* varname, const U16 port); |
47 | virtual void addString(const char* varname, const char* s); | 77 | virtual void addString(const char* varname, const char* s); |
48 | virtual void addString(const char* varname, const std::string& s); | 78 | virtual void addString(const char* varname, const std::string& s); |
49 | 79 | ||
@@ -52,8 +82,8 @@ public: | |||
52 | 82 | ||
53 | virtual BOOL isBuilt() const; | 83 | virtual BOOL isBuilt() const; |
54 | virtual BOOL isClear() const; | 84 | virtual BOOL isClear() const; |
55 | virtual U32 buildMessage(U8* buffer, U32 buffer_size); | 85 | virtual U32 buildMessage(U8* buffer, U32 buffer_size, U8 offset_to_data); |
56 | /**< Return built message size */ | 86 | /**< Null implementation which returns 0. */ |
57 | 87 | ||
58 | virtual void clearMessage(); | 88 | virtual void clearMessage(); |
59 | 89 | ||
diff --git a/linden/indra/llmessage/llsdmessagereader.cpp b/linden/indra/llmessage/llsdmessagereader.cpp index 6312bee..6742edb 100755 --- a/linden/indra/llmessage/llsdmessagereader.cpp +++ b/linden/indra/llmessage/llsdmessagereader.cpp | |||
@@ -1,7 +1,38 @@ | |||
1 | /** | ||
2 | * @file llsdmessagereader.cpp | ||
3 | * @brief LLSDMessageReader class implementation. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "linden_common.h" | ||
30 | |||
1 | #include "llsdmessagereader.h" | 31 | #include "llsdmessagereader.h" |
2 | #include "llsdutil.h" | 32 | |
3 | #include "llmessagebuilder.h" | 33 | #include "llmessagebuilder.h" |
4 | #include "llsdmessagebuilder.h" | 34 | #include "llsdmessagebuilder.h" |
35 | #include "llsdutil.h" | ||
5 | 36 | ||
6 | LLSDMessageReader::LLSDMessageReader() | 37 | LLSDMessageReader::LLSDMessageReader() |
7 | { | 38 | { |
@@ -15,11 +46,30 @@ LLSDMessageReader::~LLSDMessageReader() | |||
15 | 46 | ||
16 | LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum) | 47 | LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum) |
17 | { | 48 | { |
18 | if(input[block].isArray()) | 49 | // babbage: log error to llerrs if variable not found to mimic |
50 | // LLTemplateMessageReader::getData behaviour | ||
51 | if(NULL == block) | ||
52 | { | ||
53 | llerrs << "NULL block name" << llendl; | ||
54 | return LLSD(); | ||
55 | } | ||
56 | if(NULL == var) | ||
57 | { | ||
58 | llerrs << "NULL var name" << llendl; | ||
59 | return LLSD(); | ||
60 | } | ||
61 | if(! input[block].isArray()) | ||
19 | { | 62 | { |
20 | return input[block][blocknum][var]; | 63 | llerrs << "block " << block << " not found" << llendl; |
64 | return LLSD(); | ||
21 | } | 65 | } |
22 | return LLSD(); | 66 | |
67 | LLSD result = input[block][blocknum][var]; | ||
68 | if(result.isUndefined()) | ||
69 | { | ||
70 | llerrs << "var " << var << " not found" << llendl; | ||
71 | } | ||
72 | return result; | ||
23 | } | 73 | } |
24 | 74 | ||
25 | //virtual | 75 | //virtual |
@@ -167,8 +217,12 @@ void LLSDMessageReader::getIPPort(const char *block, const char *var, | |||
167 | void LLSDMessageReader::getString(const char *block, const char *var, | 217 | void LLSDMessageReader::getString(const char *block, const char *var, |
168 | S32 buffer_size, char *buffer, S32 blocknum) | 218 | S32 buffer_size, char *buffer, S32 blocknum) |
169 | { | 219 | { |
220 | if(buffer_size <= 0) | ||
221 | { | ||
222 | llwarns << "buffer_size <= 0" << llendl; | ||
223 | return; | ||
224 | } | ||
170 | std::string data = getLLSD(mMessage, block, var, blocknum); | 225 | std::string data = getLLSD(mMessage, block, var, blocknum); |
171 | |||
172 | S32 data_size = data.size(); | 226 | S32 data_size = data.size(); |
173 | if (data_size >= buffer_size) | 227 | if (data_size >= buffer_size) |
174 | { | 228 | { |
@@ -241,7 +295,7 @@ void LLSDMessageReader::clearMessage() | |||
241 | //virtual | 295 | //virtual |
242 | const char* LLSDMessageReader::getMessageName() const | 296 | const char* LLSDMessageReader::getMessageName() const |
243 | { | 297 | { |
244 | return mMessageName.c_str(); | 298 | return mMessageName; |
245 | } | 299 | } |
246 | 300 | ||
247 | // virtual | 301 | // virtual |
@@ -256,7 +310,7 @@ void LLSDMessageReader::copyToBuilder(LLMessageBuilder& builder) const | |||
256 | builder.copyFromLLSD(mMessage); | 310 | builder.copyFromLLSD(mMessage); |
257 | } | 311 | } |
258 | 312 | ||
259 | void LLSDMessageReader::setMessage(const std::string& name, const LLSD& message) | 313 | void LLSDMessageReader::setMessage(const char* name, const LLSD& message) |
260 | { | 314 | { |
261 | mMessageName = name; | 315 | mMessageName = name; |
262 | // TODO: Validate | 316 | // TODO: Validate |
diff --git a/linden/indra/llmessage/llsdmessagereader.h b/linden/indra/llmessage/llsdmessagereader.h index 5785194..d6d9f3d 100755 --- a/linden/indra/llmessage/llsdmessagereader.h +++ b/linden/indra/llmessage/llsdmessagereader.h | |||
@@ -69,10 +69,11 @@ public: | |||
69 | 69 | ||
70 | virtual void copyToBuilder(LLMessageBuilder&) const; | 70 | virtual void copyToBuilder(LLMessageBuilder&) const; |
71 | 71 | ||
72 | void setMessage(const std::string& name, const LLSD& msg); | 72 | /** Expects a pointer to a canonical name string */ |
73 | void setMessage(const char* name, const LLSD& msg); | ||
73 | 74 | ||
74 | private: | 75 | private: |
75 | std::string mMessageName; | 76 | const char* mMessageName; // Canonical (prehashed) string. |
76 | LLSD mMessage; | 77 | LLSD mMessage; |
77 | }; | 78 | }; |
78 | 79 | ||
diff --git a/linden/indra/llmessage/lltemplatemessagebuilder.cpp b/linden/indra/llmessage/lltemplatemessagebuilder.cpp index 806f034..9473343 100644 --- a/linden/indra/llmessage/lltemplatemessagebuilder.cpp +++ b/linden/indra/llmessage/lltemplatemessagebuilder.cpp | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file lltemplatemessagebuilder.cpp | ||
3 | * @brief LLTemplateMessageBuilder class implementation. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #include "linden_common.h" | 29 | #include "linden_common.h" |
2 | 30 | ||
3 | #include "lltemplatemessagebuilder.h" | 31 | #include "lltemplatemessagebuilder.h" |
@@ -41,28 +69,30 @@ void LLTemplateMessageBuilder::newMessage(const char *name) | |||
41 | delete mCurrentSMessageData; | 69 | delete mCurrentSMessageData; |
42 | mCurrentSMessageData = NULL; | 70 | mCurrentSMessageData = NULL; |
43 | 71 | ||
44 | char *namep = (char *)name; | 72 | char* namep = (char*)name; |
45 | |||
46 | if (mMessageTemplates.count(namep) > 0) | 73 | if (mMessageTemplates.count(namep) > 0) |
47 | { | 74 | { |
48 | mCurrentSMessageTemplate = mMessageTemplates[namep]; | 75 | mCurrentSMessageTemplate = mMessageTemplates[namep]; |
49 | if (mCurrentSMessageData) | ||
50 | { | ||
51 | delete mCurrentSMessageData; | ||
52 | } | ||
53 | mCurrentSMessageData = new LLMsgData(namep); | 76 | mCurrentSMessageData = new LLMsgData(namep); |
54 | mCurrentSMessageName = namep; | 77 | mCurrentSMessageName = namep; |
55 | mCurrentSDataBlock = NULL; | 78 | mCurrentSDataBlock = NULL; |
56 | mCurrentSBlockName = NULL; | 79 | mCurrentSBlockName = NULL; |
57 | 80 | ||
58 | // add at one of each block | 81 | // add at one of each block |
59 | LLMessageTemplate* msg_template = mMessageTemplates[namep]; | 82 | const LLMessageTemplate* msg_template = mMessageTemplates[namep]; |
60 | for (LLMessageTemplate::message_block_map_t::iterator iter = msg_template->mMemberBlocks.begin(); | 83 | |
61 | iter != msg_template->mMemberBlocks.end(); iter++) | 84 | if (msg_template->getDeprecation() != MD_NOTDEPRECATED) |
62 | { | 85 | { |
63 | LLMessageBlock* ci = iter->second; | 86 | llwarns << "Sending deprecated message " << namep << llendl; |
64 | LLMsgBlkData *tblockp; | 87 | } |
65 | tblockp = new LLMsgBlkData(ci->mName, 0); | 88 | |
89 | LLMessageTemplate::message_block_map_t::const_iterator iter; | ||
90 | for(iter = msg_template->mMemberBlocks.begin(); | ||
91 | iter != msg_template->mMemberBlocks.end(); | ||
92 | ++iter) | ||
93 | { | ||
94 | LLMessageBlock* ci = *iter; | ||
95 | LLMsgBlkData* tblockp = new LLMsgBlkData(ci->mName, 0); | ||
66 | mCurrentSMessageData->addBlock(tblockp); | 96 | mCurrentSMessageData->addBlock(tblockp); |
67 | } | 97 | } |
68 | } | 98 | } |
@@ -102,16 +132,14 @@ void LLTemplateMessageBuilder::nextBlock(const char* blockname) | |||
102 | } | 132 | } |
103 | 133 | ||
104 | // now, does this block exist? | 134 | // now, does this block exist? |
105 | LLMessageTemplate::message_block_map_t::iterator temp_iter = mCurrentSMessageTemplate->mMemberBlocks.find(bnamep); | 135 | const LLMessageBlock* template_data = mCurrentSMessageTemplate->getBlock(bnamep); |
106 | if (temp_iter == mCurrentSMessageTemplate->mMemberBlocks.end()) | 136 | if (!template_data) |
107 | { | 137 | { |
108 | llerrs << "LLTemplateMessageBuilder::nextBlock " << bnamep | 138 | llerrs << "LLTemplateMessageBuilder::nextBlock " << bnamep |
109 | << " not a block in " << mCurrentSMessageTemplate->mName << llendl; | 139 | << " not a block in " << mCurrentSMessageTemplate->mName << llendl; |
110 | return; | 140 | return; |
111 | } | 141 | } |
112 | 142 | ||
113 | LLMessageBlock* template_data = temp_iter->second; | ||
114 | |||
115 | // ok, have we already set this block? | 143 | // ok, have we already set this block? |
116 | LLMsgBlkData* block_data = mCurrentSMessageData->mMemberBlocks[bnamep]; | 144 | LLMsgBlkData* block_data = mCurrentSMessageData->mMemberBlocks[bnamep]; |
117 | if (block_data->mBlockNumber == 0) | 145 | if (block_data->mBlockNumber == 0) |
@@ -122,10 +150,10 @@ void LLTemplateMessageBuilder::nextBlock(const char* blockname) | |||
122 | mCurrentSBlockName = bnamep; | 150 | mCurrentSBlockName = bnamep; |
123 | 151 | ||
124 | // add placeholders for each of the variables | 152 | // add placeholders for each of the variables |
125 | for (LLMessageBlock::message_variable_map_t::iterator iter = template_data->mMemberVariables.begin(); | 153 | for (LLMessageBlock::message_variable_map_t::const_iterator iter = template_data->mMemberVariables.begin(); |
126 | iter != template_data->mMemberVariables.end(); iter++) | 154 | iter != template_data->mMemberVariables.end(); iter++) |
127 | { | 155 | { |
128 | LLMessageVariable& ci = *(iter->second); | 156 | LLMessageVariable& ci = **iter; |
129 | mCurrentSDataBlock->addVariable(ci.getName(), ci.getType()); | 157 | mCurrentSDataBlock->addVariable(ci.getName(), ci.getType()); |
130 | } | 158 | } |
131 | return; | 159 | return; |
@@ -181,12 +209,12 @@ void LLTemplateMessageBuilder::nextBlock(const char* blockname) | |||
181 | mCurrentSMessageData->mMemberBlocks[nbnamep] = mCurrentSDataBlock; | 209 | mCurrentSMessageData->mMemberBlocks[nbnamep] = mCurrentSDataBlock; |
182 | 210 | ||
183 | // add placeholders for each of the variables | 211 | // add placeholders for each of the variables |
184 | for (LLMessageBlock::message_variable_map_t::iterator | 212 | for (LLMessageBlock::message_variable_map_t::const_iterator |
185 | iter = template_data->mMemberVariables.begin(), | 213 | iter = template_data->mMemberVariables.begin(), |
186 | end = template_data->mMemberVariables.end(); | 214 | end = template_data->mMemberVariables.end(); |
187 | iter != end; iter++) | 215 | iter != end; iter++) |
188 | { | 216 | { |
189 | LLMessageVariable& ci = *(iter->second); | 217 | LLMessageVariable& ci = **iter; |
190 | mCurrentSDataBlock->addVariable(ci.getName(), ci.getType()); | 218 | mCurrentSDataBlock->addVariable(ci.getName(), ci.getType()); |
191 | } | 219 | } |
192 | return; | 220 | return; |
@@ -211,12 +239,12 @@ BOOL LLTemplateMessageBuilder::removeLastBlock() | |||
211 | // Decrement the sent total by the size of the | 239 | // Decrement the sent total by the size of the |
212 | // data in the message block that we're currently building. | 240 | // data in the message block that we're currently building. |
213 | 241 | ||
214 | LLMessageBlock* template_data = mCurrentSMessageTemplate->mMemberBlocks[mCurrentSBlockName]; | 242 | const LLMessageBlock* template_data = mCurrentSMessageTemplate->getBlock(mCurrentSBlockName); |
215 | 243 | ||
216 | for (LLMessageBlock::message_variable_map_t::iterator iter = template_data->mMemberVariables.begin(); | 244 | for (LLMessageBlock::message_variable_map_t::const_iterator iter = template_data->mMemberVariables.begin(); |
217 | iter != template_data->mMemberVariables.end(); iter++) | 245 | iter != template_data->mMemberVariables.end(); iter++) |
218 | { | 246 | { |
219 | LLMessageVariable& ci = *(iter->second); | 247 | LLMessageVariable& ci = **iter; |
220 | mCurrentSendTotal -= ci.getSize(); | 248 | mCurrentSendTotal -= ci.getSize(); |
221 | } | 249 | } |
222 | 250 | ||
@@ -276,7 +304,7 @@ void LLTemplateMessageBuilder::addData(const char *varname, const void *data, EM | |||
276 | } | 304 | } |
277 | 305 | ||
278 | // kewl, add the data if it exists | 306 | // kewl, add the data if it exists |
279 | LLMessageVariable* var_data = mCurrentSMessageTemplate->mMemberBlocks[mCurrentSBlockName]->mMemberVariables[vnamep]; | 307 | const LLMessageVariable* var_data = mCurrentSMessageTemplate->getBlock(mCurrentSBlockName)->getVariable(vnamep); |
280 | if (!var_data || !var_data->getName()) | 308 | if (!var_data || !var_data->getName()) |
281 | { | 309 | { |
282 | llerrs << vnamep << " not a variable in block " << mCurrentSBlockName << " of " << mCurrentSMessageTemplate->mName << llendl; | 310 | llerrs << vnamep << " not a variable in block " << mCurrentSBlockName << " of " << mCurrentSMessageTemplate->mName << llendl; |
@@ -336,7 +364,7 @@ void LLTemplateMessageBuilder::addData(const char *varname, const void *data, EM | |||
336 | } | 364 | } |
337 | 365 | ||
338 | // kewl, add the data if it exists | 366 | // kewl, add the data if it exists |
339 | LLMessageVariable* var_data = mCurrentSMessageTemplate->mMemberBlocks[mCurrentSBlockName]->mMemberVariables[vnamep]; | 367 | const LLMessageVariable* var_data = mCurrentSMessageTemplate->getBlock(mCurrentSBlockName)->getVariable(vnamep); |
340 | if (!var_data->getName()) | 368 | if (!var_data->getName()) |
341 | { | 369 | { |
342 | llerrs << vnamep << " not a variable in block " << mCurrentSBlockName << " of " << mCurrentSMessageTemplate->mName << llendl; | 370 | llerrs << vnamep << " not a variable in block " << mCurrentSBlockName << " of " << mCurrentSMessageTemplate->mName << llendl; |
@@ -484,7 +512,7 @@ static S32 zero_code(U8 **data, U32 *data_size) | |||
484 | 512 | ||
485 | // skip the packet id field | 513 | // skip the packet id field |
486 | 514 | ||
487 | for (U32 i=0;i<LL_PACKET_ID_SIZE;i++) | 515 | for (U32 ii = 0; ii < LL_PACKET_ID_SIZE ; ++ii) |
488 | { | 516 | { |
489 | count--; | 517 | count--; |
490 | *outptr++ = *inptr++; | 518 | *outptr++ = *inptr++; |
@@ -571,7 +599,7 @@ BOOL LLTemplateMessageBuilder::isMessageFull(const char* blockname) const | |||
571 | char* bnamep = (char*)blockname; | 599 | char* bnamep = (char*)blockname; |
572 | S32 max; | 600 | S32 max; |
573 | 601 | ||
574 | LLMessageBlock* template_data = mCurrentSMessageTemplate->mMemberBlocks[bnamep]; | 602 | const LLMessageBlock* template_data = mCurrentSMessageTemplate->getBlock(bnamep); |
575 | 603 | ||
576 | switch(template_data->mType) | 604 | switch(template_data->mType) |
577 | { | 605 | { |
@@ -593,138 +621,59 @@ BOOL LLTemplateMessageBuilder::isMessageFull(const char* blockname) const | |||
593 | return FALSE; | 621 | return FALSE; |
594 | } | 622 | } |
595 | 623 | ||
596 | 624 | static S32 buildBlock(U8* buffer, S32 buffer_size, const LLMessageBlock* template_data, LLMsgData* message_data) | |
597 | // make sure that all the desired data is in place and then copy the data into MAX_BUFFER_SIZEd buffer | ||
598 | U32 LLTemplateMessageBuilder::buildMessage(U8* buffer, U32 buffer_size) | ||
599 | { | 625 | { |
600 | // basic algorithm is to loop through the various pieces, building | 626 | S32 result = 0; |
601 | // size and offset info if we encounter a -1 for mSize at any | 627 | LLMsgData::msg_blk_data_map_t::const_iterator block_iter = message_data->mMemberBlocks.find(template_data->mName); |
602 | // point that variable wasn't given data | 628 | const LLMsgBlkData* mbci = block_iter->second; |
603 | 629 | ||
604 | // do we have a current message? | 630 | // ok, if this is the first block of a repeating pack, set |
605 | if (!mCurrentSMessageTemplate) | 631 | // block_count and, if it's type MBT_VARIABLE encode a byte |
606 | { | 632 | // for how many there are |
607 | llerrs << "newMessage not called prior to buildMessage" << llendl; | 633 | S32 block_count = mbci->mBlockNumber; |
608 | return 0; | 634 | if (template_data->mType == MBT_VARIABLE) |
609 | } | 635 | { |
610 | 636 | // remember that mBlockNumber is a S32 | |
611 | // zero out some useful values | 637 | U8 temp_block_number = (U8)mbci->mBlockNumber; |
612 | 638 | if ((S32)(result + sizeof(U8)) < MAX_BUFFER_SIZE) | |
613 | // leave room for circuit counter | 639 | { |
614 | U32 result = LL_PACKET_ID_SIZE; | 640 | memcpy(&buffer[result], &temp_block_number, sizeof(U8)); |
615 | 641 | result += sizeof(U8); | |
616 | // encode message number and adjust total_offset | 642 | } |
617 | if (mCurrentSMessageTemplate->mFrequency == MFT_HIGH) | 643 | else |
618 | { | 644 | { |
619 | // old, endian-dependant way | 645 | // Just reporting error is likely not enough. Need |
620 | // memcpy(&buffer[result], &mCurrentMessageTemplate->mMessageNumber, sizeof(U8)); | 646 | // to check how to abort or error out gracefully |
621 | 647 | // from this function. XXXTBD | |
622 | // new, independant way | 648 | llerrs << "buildBlock failed. Message excedding " |
623 | buffer[result] = (U8)mCurrentSMessageTemplate->mMessageNumber; | 649 | << "sendBuffersize." << llendl; |
624 | result += sizeof(U8); | 650 | } |
625 | } | ||
626 | else if (mCurrentSMessageTemplate->mFrequency == MFT_MEDIUM) | ||
627 | { | ||
628 | U8 temp = 255; | ||
629 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
630 | result += sizeof(U8); | ||
631 | |||
632 | // mask off unsightly bits | ||
633 | temp = mCurrentSMessageTemplate->mMessageNumber & 255; | ||
634 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
635 | result += sizeof(U8); | ||
636 | } | ||
637 | else if (mCurrentSMessageTemplate->mFrequency == MFT_LOW) | ||
638 | { | ||
639 | U8 temp = 255; | ||
640 | U16 message_num; | ||
641 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
642 | result += sizeof(U8); | ||
643 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
644 | result += sizeof(U8); | ||
645 | |||
646 | // mask off unsightly bits | ||
647 | message_num = mCurrentSMessageTemplate->mMessageNumber & 0xFFFF; | ||
648 | |||
649 | // convert to network byte order | ||
650 | message_num = htons(message_num); | ||
651 | memcpy(&buffer[result], &message_num, sizeof(U16)); /*Flawfinder: ignore*/ | ||
652 | result += sizeof(U16); | ||
653 | } | ||
654 | else | ||
655 | { | ||
656 | llerrs << "unexpected message frequency in buildMessage" << llendl; | ||
657 | return 0; | ||
658 | } | 651 | } |
659 | 652 | else if (template_data->mType == MBT_MULTIPLE) | |
660 | // counting variables used to encode multiple block info | ||
661 | S32 block_count = 0; | ||
662 | U8 temp_block_number; | ||
663 | |||
664 | // loop through msg blocks to loop through variables, | ||
665 | // totalling up size data and copying into buffer | ||
666 | for (LLMsgData::msg_blk_data_map_t::iterator | ||
667 | iter = mCurrentSMessageData->mMemberBlocks.begin(), | ||
668 | end = mCurrentSMessageData->mMemberBlocks.end(); | ||
669 | iter != end; iter++) | ||
670 | { | 653 | { |
671 | LLMsgBlkData* mbci = iter->second; | 654 | if (block_count != template_data->mNumber) |
672 | // do we need to encode a block code? | ||
673 | if (block_count == 0) | ||
674 | { | 655 | { |
675 | block_count = mbci->mBlockNumber; | 656 | // nope! need to fill it in all the way! |
676 | 657 | llerrs << "Block " << mbci->mName | |
677 | LLMessageBlock* template_data = | 658 | << " is type MBT_MULTIPLE but only has data for " |
678 | mCurrentSMessageTemplate->mMemberBlocks[mbci->mName]; | 659 | << block_count << " out of its " |
679 | 660 | << template_data->mNumber << " blocks" << llendl; | |
680 | // ok, if this is the first block of a repeating pack, set | ||
681 | // block_count and, if it's type MBT_VARIABLE encode a byte | ||
682 | // for how many there are | ||
683 | if (template_data->mType == MBT_VARIABLE) | ||
684 | { | ||
685 | // remember that mBlockNumber is a S32 | ||
686 | temp_block_number = (U8)mbci->mBlockNumber; | ||
687 | if ((S32)(result + sizeof(U8)) < MAX_BUFFER_SIZE) | ||
688 | { | ||
689 | memcpy(&buffer[result], &temp_block_number, sizeof(U8)); | ||
690 | result += sizeof(U8); | ||
691 | } | ||
692 | else | ||
693 | { | ||
694 | // Just reporting error is likely not enough. Need | ||
695 | // to check how to abort or error out gracefully | ||
696 | // from this function. XXXTBD | ||
697 | llerrs << "buildMessage failed. Message excedding " | ||
698 | << "sendBuffersize." << llendl; | ||
699 | } | ||
700 | } | ||
701 | else if (template_data->mType == MBT_MULTIPLE) | ||
702 | { | ||
703 | if (block_count != template_data->mNumber) | ||
704 | { | ||
705 | // nope! need to fill it in all the way! | ||
706 | llerrs << "Block " << mbci->mName | ||
707 | << " is type MBT_MULTIPLE but only has data for " | ||
708 | << block_count << " out of its " | ||
709 | << template_data->mNumber << " blocks" << llendl; | ||
710 | } | ||
711 | } | ||
712 | } | 661 | } |
662 | } | ||
713 | 663 | ||
714 | // counting down multiple blocks | 664 | while(block_count > 0) |
715 | block_count--; | 665 | { |
716 | |||
717 | // now loop through the variables | 666 | // now loop through the variables |
718 | for (LLMsgBlkData::msg_var_data_map_t::iterator iter = mbci->mMemberVarData.begin(); | 667 | for (LLMsgBlkData::msg_var_data_map_t::const_iterator iter = mbci->mMemberVarData.begin(); |
719 | iter != mbci->mMemberVarData.end(); iter++) | 668 | iter != mbci->mMemberVarData.end(); iter++) |
720 | { | 669 | { |
721 | LLMsgVarData& mvci = *iter; | 670 | const LLMsgVarData& mvci = *iter; |
722 | if (mvci.getSize() == -1) | 671 | if (mvci.getSize() == -1) |
723 | { | 672 | { |
724 | // oops, this variable wasn't ever set! | 673 | // oops, this variable wasn't ever set! |
725 | llerrs << "The variable " << mvci.getName() << " in block " | 674 | llerrs << "The variable " << mvci.getName() << " in block " |
726 | << mbci->mName << " of message " | 675 | << mbci->mName << " of message " |
727 | << mCurrentSMessageData->mName | 676 | << template_data->mName |
728 | << " wasn't set prior to buildMessage call" << llendl; | 677 | << " wasn't set prior to buildMessage call" << llendl; |
729 | } | 678 | } |
730 | else | 679 | else |
@@ -774,7 +723,7 @@ U32 LLTemplateMessageBuilder::buildMessage(U8* buffer, U32 buffer_size) | |||
774 | // Just reporting error is likely not | 723 | // Just reporting error is likely not |
775 | // enough. Need to check how to abort or error | 724 | // enough. Need to check how to abort or error |
776 | // out gracefully from this function. XXXTBD | 725 | // out gracefully from this function. XXXTBD |
777 | llerrs << "LLMessageSystem::buildMessage failed. " | 726 | llerrs << "buildBlock failed. " |
778 | << "Attempted to pack " | 727 | << "Attempted to pack " |
779 | << result + mvci.getSize() | 728 | << result + mvci.getSize() |
780 | << " bytes into a buffer with size " | 729 | << " bytes into a buffer with size " |
@@ -783,6 +732,94 @@ U32 LLTemplateMessageBuilder::buildMessage(U8* buffer, U32 buffer_size) | |||
783 | } | 732 | } |
784 | } | 733 | } |
785 | } | 734 | } |
735 | |||
736 | --block_count; | ||
737 | ++block_iter; | ||
738 | if (block_iter != message_data->mMemberBlocks.end()) | ||
739 | { | ||
740 | mbci = block_iter->second; | ||
741 | } | ||
742 | } | ||
743 | |||
744 | return result; | ||
745 | } | ||
746 | |||
747 | |||
748 | // make sure that all the desired data is in place and then copy the data into MAX_BUFFER_SIZEd buffer | ||
749 | U32 LLTemplateMessageBuilder::buildMessage( | ||
750 | U8* buffer, | ||
751 | U32 buffer_size, | ||
752 | U8 offset_to_data) | ||
753 | { | ||
754 | // basic algorithm is to loop through the various pieces, building | ||
755 | // size and offset info if we encounter a -1 for mSize at any | ||
756 | // point that variable wasn't given data | ||
757 | |||
758 | // do we have a current message? | ||
759 | if (!mCurrentSMessageTemplate) | ||
760 | { | ||
761 | llerrs << "newMessage not called prior to buildMessage" << llendl; | ||
762 | return 0; | ||
763 | } | ||
764 | |||
765 | // leave room for flags, packet sequence #, and data offset | ||
766 | // information. | ||
767 | buffer[PHL_OFFSET] = offset_to_data; | ||
768 | U32 result = LL_PACKET_ID_SIZE; | ||
769 | |||
770 | // encode message number and adjust total_offset | ||
771 | if (mCurrentSMessageTemplate->mFrequency == MFT_HIGH) | ||
772 | { | ||
773 | // old, endian-dependant way | ||
774 | // memcpy(&buffer[result], &mCurrentMessageTemplate->mMessageNumber, sizeof(U8)); | ||
775 | |||
776 | // new, independant way | ||
777 | buffer[result] = (U8)mCurrentSMessageTemplate->mMessageNumber; | ||
778 | result += sizeof(U8); | ||
779 | } | ||
780 | else if (mCurrentSMessageTemplate->mFrequency == MFT_MEDIUM) | ||
781 | { | ||
782 | U8 temp = 255; | ||
783 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
784 | result += sizeof(U8); | ||
785 | |||
786 | // mask off unsightly bits | ||
787 | temp = mCurrentSMessageTemplate->mMessageNumber & 255; | ||
788 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
789 | result += sizeof(U8); | ||
790 | } | ||
791 | else if (mCurrentSMessageTemplate->mFrequency == MFT_LOW) | ||
792 | { | ||
793 | U8 temp = 255; | ||
794 | U16 message_num; | ||
795 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
796 | result += sizeof(U8); | ||
797 | memcpy(&buffer[result], &temp, sizeof(U8)); /*Flawfinder: ignore*/ | ||
798 | result += sizeof(U8); | ||
799 | |||
800 | // mask off unsightly bits | ||
801 | message_num = mCurrentSMessageTemplate->mMessageNumber & 0xFFFF; | ||
802 | |||
803 | // convert to network byte order | ||
804 | message_num = htons(message_num); | ||
805 | memcpy(&buffer[result], &message_num, sizeof(U16)); /*Flawfinder: ignore*/ | ||
806 | result += sizeof(U16); | ||
807 | } | ||
808 | else | ||
809 | { | ||
810 | llerrs << "unexpected message frequency in buildMessage" << llendl; | ||
811 | return 0; | ||
812 | } | ||
813 | |||
814 | // fast forward through the offset and build the message | ||
815 | result += offset_to_data; | ||
816 | for(LLMessageTemplate::message_block_map_t::const_iterator | ||
817 | iter = mCurrentSMessageTemplate->mMemberBlocks.begin(), | ||
818 | end = mCurrentSMessageTemplate->mMemberBlocks.end(); | ||
819 | iter != end; | ||
820 | ++iter) | ||
821 | { | ||
822 | result += buildBlock(buffer + result, buffer_size - result, *iter, mCurrentSMessageData); | ||
786 | } | 823 | } |
787 | mbSBuilt = TRUE; | 824 | mbSBuilt = TRUE; |
788 | 825 | ||
diff --git a/linden/indra/llmessage/lltemplatemessagebuilder.h b/linden/indra/llmessage/lltemplatemessagebuilder.h index ae53328..40a2f0d 100644 --- a/linden/indra/llmessage/lltemplatemessagebuilder.h +++ b/linden/indra/llmessage/lltemplatemessagebuilder.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file lltemplatemessagebuilder.h | ||
3 | * @brief Declaration of LLTemplateMessageBuilder class. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLTEMPLATEMESSAGEBUILDER_H | 29 | #ifndef LL_LLTEMPLATEMESSAGEBUILDER_H |
2 | #define LL_LLTEMPLATEMESSAGEBUILDER_H | 30 | #define LL_LLTEMPLATEMESSAGEBUILDER_H |
3 | 31 | ||
@@ -15,12 +43,12 @@ class LLTemplateMessageBuilder : public LLMessageBuilder | |||
15 | { | 43 | { |
16 | public: | 44 | public: |
17 | 45 | ||
18 | typedef std::map<const char *, LLMessageTemplate*> message_template_name_map_t; | 46 | typedef std::map<const char* , LLMessageTemplate*> message_template_name_map_t; |
19 | 47 | ||
20 | LLTemplateMessageBuilder(message_template_name_map_t&); | 48 | LLTemplateMessageBuilder(message_template_name_map_t&); |
21 | virtual ~LLTemplateMessageBuilder(); | 49 | virtual ~LLTemplateMessageBuilder(); |
22 | 50 | ||
23 | virtual void newMessage(const char *name); | 51 | virtual void newMessage(const char* name); |
24 | 52 | ||
25 | virtual void nextBlock(const char* blockname); | 53 | virtual void nextBlock(const char* blockname); |
26 | virtual BOOL removeLastBlock(); // TODO: babbage: remove this horror... | 54 | virtual BOOL removeLastBlock(); // TODO: babbage: remove this horror... |
@@ -29,22 +57,22 @@ public: | |||
29 | virtual void addBinaryData(const char *varname, const void *data, | 57 | virtual void addBinaryData(const char *varname, const void *data, |
30 | S32 size); | 58 | S32 size); |
31 | virtual void addBOOL(const char* varname, BOOL b); | 59 | virtual void addBOOL(const char* varname, BOOL b); |
32 | virtual void addS8(const char *varname, S8 s); | 60 | virtual void addS8(const char* varname, S8 s); |
33 | virtual void addU8(const char *varname, U8 u); | 61 | virtual void addU8(const char* varname, U8 u); |
34 | virtual void addS16(const char *varname, S16 i); | 62 | virtual void addS16(const char* varname, S16 i); |
35 | virtual void addU16(const char *varname, U16 i); | 63 | virtual void addU16(const char* varname, U16 i); |
36 | virtual void addF32(const char *varname, F32 f); | 64 | virtual void addF32(const char* varname, F32 f); |
37 | virtual void addS32(const char *varname, S32 s); | 65 | virtual void addS32(const char* varname, S32 s); |
38 | virtual void addU32(const char *varname, U32 u); | 66 | virtual void addU32(const char* varname, U32 u); |
39 | virtual void addU64(const char *varname, U64 lu); | 67 | virtual void addU64(const char* varname, U64 lu); |
40 | virtual void addF64(const char *varname, F64 d); | 68 | virtual void addF64(const char* varname, F64 d); |
41 | virtual void addVector3(const char *varname, const LLVector3& vec); | 69 | virtual void addVector3(const char* varname, const LLVector3& vec); |
42 | virtual void addVector4(const char *varname, const LLVector4& vec); | 70 | virtual void addVector4(const char* varname, const LLVector4& vec); |
43 | virtual void addVector3d(const char *varname, const LLVector3d& vec); | 71 | virtual void addVector3d(const char* varname, const LLVector3d& vec); |
44 | virtual void addQuat(const char *varname, const LLQuaternion& quat); | 72 | virtual void addQuat(const char* varname, const LLQuaternion& quat); |
45 | virtual void addUUID(const char *varname, const LLUUID& uuid); | 73 | virtual void addUUID(const char* varname, const LLUUID& uuid); |
46 | virtual void addIPAddr(const char *varname, const U32 ip); | 74 | virtual void addIPAddr(const char* varname, const U32 ip); |
47 | virtual void addIPPort(const char *varname, const U16 port); | 75 | virtual void addIPPort(const char* varname, const U16 port); |
48 | virtual void addString(const char* varname, const char* s); | 76 | virtual void addString(const char* varname, const char* s); |
49 | virtual void addString(const char* varname, const std::string& s); | 77 | virtual void addString(const char* varname, const std::string& s); |
50 | 78 | ||
@@ -53,7 +81,7 @@ public: | |||
53 | 81 | ||
54 | virtual BOOL isBuilt() const; | 82 | virtual BOOL isBuilt() const; |
55 | virtual BOOL isClear() const; | 83 | virtual BOOL isClear() const; |
56 | virtual U32 buildMessage(U8* buffer, U32 buffer_size); | 84 | virtual U32 buildMessage(U8* buffer, U32 buffer_size, U8 offset_to_data); |
57 | /**< Return built message size */ | 85 | /**< Return built message size */ |
58 | 86 | ||
59 | virtual void clearMessage(); | 87 | virtual void clearMessage(); |
@@ -68,14 +96,14 @@ public: | |||
68 | virtual void copyFromLLSD(const LLSD&); | 96 | virtual void copyFromLLSD(const LLSD&); |
69 | 97 | ||
70 | private: | 98 | private: |
71 | void addData(const char *varname, const void *data, | 99 | void addData(const char* varname, const void* data, |
72 | EMsgVariableType type, S32 size); | 100 | EMsgVariableType type, S32 size); |
73 | 101 | ||
74 | void addData(const char *varname, const void *data, | 102 | void addData(const char* varname, const void* data, |
75 | EMsgVariableType type); | 103 | EMsgVariableType type); |
76 | 104 | ||
77 | LLMsgData* mCurrentSMessageData; | 105 | LLMsgData* mCurrentSMessageData; |
78 | LLMessageTemplate* mCurrentSMessageTemplate; | 106 | const LLMessageTemplate* mCurrentSMessageTemplate; |
79 | LLMsgBlkData* mCurrentSDataBlock; | 107 | LLMsgBlkData* mCurrentSDataBlock; |
80 | char* mCurrentSMessageName; | 108 | char* mCurrentSMessageName; |
81 | char* mCurrentSBlockName; | 109 | char* mCurrentSBlockName; |
diff --git a/linden/indra/llmessage/lltemplatemessagereader.cpp b/linden/indra/llmessage/lltemplatemessagereader.cpp index bb3f4f4..a1f5213 100644 --- a/linden/indra/llmessage/lltemplatemessagereader.cpp +++ b/linden/indra/llmessage/lltemplatemessagereader.cpp | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file lltemplatemessagereader.cpp | ||
3 | * @brief LLTemplateMessageReader class implementation. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #include "lltemplatemessagereader.h" | 29 | #include "lltemplatemessagereader.h" |
2 | 30 | ||
3 | #include "llfasttimer.h" | 31 | #include "llfasttimer.h" |
@@ -53,7 +81,7 @@ void LLTemplateMessageReader::getData(const char *blockname, const char *varname | |||
53 | char *bnamep = (char *)blockname + blocknum; // this works because it's just a hash. The bnamep is never derefference | 81 | char *bnamep = (char *)blockname + blocknum; // this works because it's just a hash. The bnamep is never derefference |
54 | char *vnamep = (char *)varname; | 82 | char *vnamep = (char *)varname; |
55 | 83 | ||
56 | LLMsgData::msg_blk_data_map_t::iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); | 84 | LLMsgData::msg_blk_data_map_t::const_iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); |
57 | 85 | ||
58 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) | 86 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) |
59 | { | 87 | { |
@@ -135,7 +163,7 @@ S32 LLTemplateMessageReader::getNumberOfBlocks(const char *blockname) | |||
135 | 163 | ||
136 | char *bnamep = (char *)blockname; | 164 | char *bnamep = (char *)blockname; |
137 | 165 | ||
138 | LLMsgData::msg_blk_data_map_t::iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); | 166 | LLMsgData::msg_blk_data_map_t::const_iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); |
139 | 167 | ||
140 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) | 168 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) |
141 | { | 169 | { |
@@ -165,7 +193,7 @@ S32 LLTemplateMessageReader::getSize(const char *blockname, const char *varname) | |||
165 | 193 | ||
166 | char *bnamep = (char *)blockname; | 194 | char *bnamep = (char *)blockname; |
167 | 195 | ||
168 | LLMsgData::msg_blk_data_map_t::iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); | 196 | LLMsgData::msg_blk_data_map_t::const_iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); |
169 | 197 | ||
170 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) | 198 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) |
171 | { | 199 | { |
@@ -214,7 +242,7 @@ S32 LLTemplateMessageReader::getSize(const char *blockname, S32 blocknum, const | |||
214 | char *bnamep = (char *)blockname + blocknum; | 242 | char *bnamep = (char *)blockname + blocknum; |
215 | char *vnamep = (char *)varname; | 243 | char *vnamep = (char *)varname; |
216 | 244 | ||
217 | LLMsgData::msg_blk_data_map_t::iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); | 245 | LLMsgData::msg_blk_data_map_t::const_iterator iter = mCurrentRMessageData->mMemberBlocks.find(bnamep); |
218 | 246 | ||
219 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) | 247 | if (iter == mCurrentRMessageData->mMemberBlocks.end()) |
220 | { | 248 | { |
@@ -497,16 +525,21 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
497 | llassert( !mCurrentRMessageData ); | 525 | llassert( !mCurrentRMessageData ); |
498 | delete mCurrentRMessageData; // just to make sure | 526 | delete mCurrentRMessageData; // just to make sure |
499 | 527 | ||
500 | S32 decode_pos = LL_PACKET_ID_SIZE + (S32)(mCurrentRMessageTemplate->mFrequency); | 528 | // The offset tells us how may bytes to skip after the end of the |
529 | // message name. | ||
530 | U8 offset = buffer[PHL_OFFSET]; | ||
531 | S32 decode_pos = LL_PACKET_ID_SIZE + (S32)(mCurrentRMessageTemplate->mFrequency) + offset; | ||
501 | 532 | ||
502 | // create base working data set | 533 | // create base working data set |
503 | mCurrentRMessageData = new LLMsgData(mCurrentRMessageTemplate->mName); | 534 | mCurrentRMessageData = new LLMsgData(mCurrentRMessageTemplate->mName); |
504 | 535 | ||
505 | // loop through the template building the data structure as we go | 536 | // loop through the template building the data structure as we go |
506 | for (LLMessageTemplate::message_block_map_t::iterator iter = mCurrentRMessageTemplate->mMemberBlocks.begin(); | 537 | LLMessageTemplate::message_block_map_t::const_iterator iter; |
507 | iter != mCurrentRMessageTemplate->mMemberBlocks.end(); iter++) | 538 | for(iter = mCurrentRMessageTemplate->mMemberBlocks.begin(); |
539 | iter != mCurrentRMessageTemplate->mMemberBlocks.end(); | ||
540 | ++iter) | ||
508 | { | 541 | { |
509 | LLMessageBlock* mbci = iter->second; | 542 | LLMessageBlock* mbci = *iter; |
510 | U8 repeat_number; | 543 | U8 repeat_number; |
511 | S32 i; | 544 | S32 i; |
512 | 545 | ||
@@ -528,11 +561,16 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
528 | // repeat number is a single byte | 561 | // repeat number is a single byte |
529 | if (decode_pos >= mReceiveSize) | 562 | if (decode_pos >= mReceiveSize) |
530 | { | 563 | { |
531 | logRanOffEndOfPacket( sender ); | 564 | logRanOffEndOfPacket(sender); |
532 | return FALSE; | 565 | |
566 | // default to 0 repeats | ||
567 | repeat_number = 0; | ||
568 | } | ||
569 | else | ||
570 | { | ||
571 | repeat_number = buffer[decode_pos]; | ||
572 | decode_pos++; | ||
533 | } | 573 | } |
534 | repeat_number = buffer[decode_pos]; | ||
535 | decode_pos++; | ||
536 | } | 574 | } |
537 | else | 575 | else |
538 | { | 576 | { |
@@ -561,10 +599,12 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
561 | mCurrentRMessageData->addBlock(cur_data_block); | 599 | mCurrentRMessageData->addBlock(cur_data_block); |
562 | 600 | ||
563 | // now read the variables | 601 | // now read the variables |
564 | for (LLMessageBlock::message_variable_map_t::iterator iter = mbci->mMemberVariables.begin(); | 602 | for (LLMessageBlock::message_variable_map_t::const_iterator iter = |
603 | mbci->mMemberVariables.begin(); | ||
565 | iter != mbci->mMemberVariables.end(); iter++) | 604 | iter != mbci->mMemberVariables.end(); iter++) |
566 | { | 605 | { |
567 | LLMessageVariable& mvci = *(iter->second); | 606 | const LLMessageVariable& mvci = **iter; |
607 | |||
568 | // ok, build out the variables | 608 | // ok, build out the variables |
569 | // add variable block | 609 | // add variable block |
570 | cur_data_block->addVariable(mvci.getName(), mvci.getType()); | 610 | cur_data_block->addVariable(mvci.getName(), mvci.getType()); |
@@ -580,34 +620,33 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
580 | 620 | ||
581 | if ((decode_pos + data_size) > mReceiveSize) | 621 | if ((decode_pos + data_size) > mReceiveSize) |
582 | { | 622 | { |
583 | logRanOffEndOfPacket( sender ); | 623 | logRanOffEndOfPacket(sender); |
584 | return FALSE; | 624 | |
625 | // default to 0 length variable blocks | ||
626 | tsize = 0; | ||
585 | } | 627 | } |
586 | switch(data_size) | 628 | else |
587 | { | 629 | { |
588 | case 1: | 630 | switch(data_size) |
589 | htonmemcpy(&tsizeb, &buffer[decode_pos], MVT_U8, 1); | 631 | { |
590 | tsize = tsizeb; | 632 | case 1: |
591 | break; | 633 | htonmemcpy(&tsizeb, &buffer[decode_pos], MVT_U8, 1); |
592 | case 2: | 634 | tsize = tsizeb; |
593 | htonmemcpy(&tsizeh, &buffer[decode_pos], MVT_U16, 2); | 635 | break; |
594 | tsize = tsizeh; | 636 | case 2: |
595 | break; | 637 | htonmemcpy(&tsizeh, &buffer[decode_pos], MVT_U16, 2); |
596 | case 4: | 638 | tsize = tsizeh; |
597 | htonmemcpy(&tsize, &buffer[decode_pos], MVT_U32, 4); | 639 | break; |
598 | break; | 640 | case 4: |
599 | default: | 641 | htonmemcpy(&tsize, &buffer[decode_pos], MVT_U32, 4); |
600 | llerrs << "Attempting to read variable field with unknown size of " << data_size << llendl; | 642 | break; |
601 | break; | 643 | default: |
602 | 644 | llerrs << "Attempting to read variable field with unknown size of " << data_size << llendl; | |
645 | break; | ||
646 | } | ||
603 | } | 647 | } |
604 | decode_pos += data_size; | 648 | decode_pos += data_size; |
605 | 649 | ||
606 | if ((decode_pos + (S32)tsize) > mReceiveSize) | ||
607 | { | ||
608 | logRanOffEndOfPacket( sender ); | ||
609 | return FALSE; | ||
610 | } | ||
611 | cur_data_block->addData(mvci.getName(), &buffer[decode_pos], tsize, mvci.getType()); | 650 | cur_data_block->addData(mvci.getName(), &buffer[decode_pos], tsize, mvci.getType()); |
612 | decode_pos += tsize; | 651 | decode_pos += tsize; |
613 | } | 652 | } |
@@ -615,14 +654,24 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
615 | { | 654 | { |
616 | // fixed! | 655 | // fixed! |
617 | // so, copy data pointer and set data size to fixed size | 656 | // so, copy data pointer and set data size to fixed size |
618 | |||
619 | if ((decode_pos + mvci.getSize()) > mReceiveSize) | 657 | if ((decode_pos + mvci.getSize()) > mReceiveSize) |
620 | { | 658 | { |
621 | logRanOffEndOfPacket( sender ); | 659 | logRanOffEndOfPacket(sender); |
622 | return FALSE; | 660 | |
661 | // default to 0s. | ||
662 | U32 size = mvci.getSize(); | ||
663 | std::vector<U8> data(size); | ||
664 | memset(&(data[0]), 0, size); | ||
665 | cur_data_block->addData(mvci.getName(), &(data[0]), | ||
666 | size, mvci.getType()); | ||
667 | } | ||
668 | else | ||
669 | { | ||
670 | cur_data_block->addData(mvci.getName(), | ||
671 | &buffer[decode_pos], | ||
672 | mvci.getSize(), | ||
673 | mvci.getType()); | ||
623 | } | 674 | } |
624 | |||
625 | cur_data_block->addData(mvci.getName(), &buffer[decode_pos], mvci.getSize(), mvci.getType()); | ||
626 | decode_pos += mvci.getSize(); | 675 | decode_pos += mvci.getSize(); |
627 | } | 676 | } |
628 | } | 677 | } |
@@ -644,11 +693,6 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
644 | decode_timer.reset(); | 693 | decode_timer.reset(); |
645 | } | 694 | } |
646 | 695 | ||
647 | // if( mCurrentRMessageTemplate->mName == _PREHASH_AgentToNewRegion ) | ||
648 | // { | ||
649 | // VTResume(); // VTune | ||
650 | // } | ||
651 | |||
652 | { | 696 | { |
653 | LLFastTimer t(LLFastTimer::FTM_PROCESS_MESSAGES); | 697 | LLFastTimer t(LLFastTimer::FTM_PROCESS_MESSAGES); |
654 | if( !mCurrentRMessageTemplate->callHandlerFunc(gMessageSystem) ) | 698 | if( !mCurrentRMessageTemplate->callHandlerFunc(gMessageSystem) ) |
@@ -657,11 +701,6 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
657 | } | 701 | } |
658 | } | 702 | } |
659 | 703 | ||
660 | // if( mCurrentRMessageTemplate->mName == _PREHASH_AgentToNewRegion ) | ||
661 | // { | ||
662 | // VTPause(); // VTune | ||
663 | // } | ||
664 | |||
665 | if(LLMessageReader::getTimeDecodes() || gMessageSystem->getTimingCallback()) | 704 | if(LLMessageReader::getTimeDecodes() || gMessageSystem->getTimingCallback()) |
666 | { | 705 | { |
667 | F32 decode_time = decode_timer.getElapsedTimeF32(); | 706 | F32 decode_time = decode_timer.getElapsedTimeF32(); |
@@ -723,8 +762,12 @@ BOOL LLTemplateMessageReader::readMessage(const U8* buffer, | |||
723 | //virtual | 762 | //virtual |
724 | const char* LLTemplateMessageReader::getMessageName() const | 763 | const char* LLTemplateMessageReader::getMessageName() const |
725 | { | 764 | { |
726 | static char empty_string[] = ""; | 765 | if (!mCurrentRMessageTemplate) |
727 | return mCurrentRMessageTemplate ? mCurrentRMessageTemplate->mName : empty_string; | 766 | { |
767 | llwarns << "no mCurrentRMessageTemplate" << llendl; | ||
768 | return ""; | ||
769 | } | ||
770 | return mCurrentRMessageTemplate->mName; | ||
728 | } | 771 | } |
729 | 772 | ||
730 | //virtual | 773 | //virtual |
diff --git a/linden/indra/llmessage/lltemplatemessagereader.h b/linden/indra/llmessage/lltemplatemessagereader.h index dd5ee39..86d4ab6 100644 --- a/linden/indra/llmessage/lltemplatemessagereader.h +++ b/linden/indra/llmessage/lltemplatemessagereader.h | |||
@@ -1,3 +1,31 @@ | |||
1 | /** | ||
2 | * @file lltemplatemessagereader.h | ||
3 | * @brief Declaration of LLTemplateMessageReader class. | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
1 | #ifndef LL_LLTEMPLATEMESSAGEREADER_H | 29 | #ifndef LL_LLTEMPLATEMESSAGEREADER_H |
2 | #define LL_LLTEMPLATEMESSAGEREADER_H | 30 | #define LL_LLTEMPLATEMESSAGEREADER_H |
3 | 31 | ||
diff --git a/linden/indra/llmessage/lltransfermanager.cpp b/linden/indra/llmessage/lltransfermanager.cpp index f42ce45..3de08c6 100644 --- a/linden/indra/llmessage/lltransfermanager.cpp +++ b/linden/indra/llmessage/lltransfermanager.cpp | |||
@@ -601,34 +601,6 @@ void LLTransferManager::processTransferAbort(LLMessageSystem *msgp, void **) | |||
601 | 601 | ||
602 | 602 | ||
603 | //static | 603 | //static |
604 | void LLTransferManager::processTransferPriority(LLMessageSystem *msgp, void **) | ||
605 | { | ||
606 | //llinfos << "LLTransferManager::processTransferPacket" << llendl; | ||
607 | |||
608 | LLUUID transfer_id; | ||
609 | LLTransferChannelType channel_type; | ||
610 | F32 priority = 0.f; | ||
611 | msgp->getUUID("TransferInfo", "TransferID", transfer_id); | ||
612 | msgp->getS32("TransferInfo", "ChannelType", (S32 &)channel_type); | ||
613 | msgp->getF32("TransferInfo", "Priority", priority); | ||
614 | |||
615 | // Hmm, not a target. Maybe it's a source. | ||
616 | LLTransferSourceChannel *tscp = gTransferManager.getSourceChannel(msgp->getSender(), channel_type); | ||
617 | if (tscp) | ||
618 | { | ||
619 | LLTransferSource *tsp = tscp->findTransferSource(transfer_id); | ||
620 | if (tsp) | ||
621 | { | ||
622 | tscp->updatePriority(tsp, priority); | ||
623 | return; | ||
624 | } | ||
625 | } | ||
626 | |||
627 | llwarns << "Couldn't find transfer " << transfer_id << " to set priority!" << llendl; | ||
628 | } | ||
629 | |||
630 | |||
631 | //static | ||
632 | void LLTransferManager::reliablePacketCallback(void **user_data, S32 result) | 604 | void LLTransferManager::reliablePacketCallback(void **user_data, S32 result) |
633 | { | 605 | { |
634 | LLUUID *transfer_idp = (LLUUID *)user_data; | 606 | LLUUID *transfer_idp = (LLUUID *)user_data; |
diff --git a/linden/indra/llmessage/lltransfermanager.h b/linden/indra/llmessage/lltransfermanager.h index 81a0221..d063156 100644 --- a/linden/indra/llmessage/lltransfermanager.h +++ b/linden/indra/llmessage/lltransfermanager.h | |||
@@ -129,7 +129,6 @@ public: | |||
129 | static void processTransferInfo(LLMessageSystem *mesgsys, void **); | 129 | static void processTransferInfo(LLMessageSystem *mesgsys, void **); |
130 | static void processTransferPacket(LLMessageSystem *mesgsys, void **); | 130 | static void processTransferPacket(LLMessageSystem *mesgsys, void **); |
131 | static void processTransferAbort(LLMessageSystem *mesgsys, void **); | 131 | static void processTransferAbort(LLMessageSystem *mesgsys, void **); |
132 | static void processTransferPriority(LLMessageSystem *mesgsys, void **); | ||
133 | 132 | ||
134 | static void reliablePacketCallback(void **, S32 result); | 133 | static void reliablePacketCallback(void **, S32 result); |
135 | 134 | ||
diff --git a/linden/indra/llmessage/message.cpp b/linden/indra/llmessage/message.cpp index d1c2875..01dce40 100644 --- a/linden/indra/llmessage/message.cpp +++ b/linden/indra/llmessage/message.cpp | |||
@@ -67,9 +67,12 @@ | |||
67 | #include "lltemplatemessagebuilder.h" | 67 | #include "lltemplatemessagebuilder.h" |
68 | #include "lltemplatemessagereader.h" | 68 | #include "lltemplatemessagereader.h" |
69 | #include "llmessagetemplate.h" | 69 | #include "llmessagetemplate.h" |
70 | #include "llmessagetemplateparser.h" | ||
70 | #include "llsd.h" | 71 | #include "llsd.h" |
71 | #include "llsdmessagebuilder.h" | 72 | #include "llsdmessagebuilder.h" |
72 | #include "llsdmessagereader.h" | 73 | #include "llsdmessagereader.h" |
74 | #include "llsdserialize.h" | ||
75 | #include "llstring.h" | ||
73 | #include "lltransfermanager.h" | 76 | #include "lltransfermanager.h" |
74 | #include "lluuid.h" | 77 | #include "lluuid.h" |
75 | #include "llxfermanager.h" | 78 | #include "llxfermanager.h" |
@@ -100,220 +103,28 @@ public: | |||
100 | apr_pollfd_t mPollFD; | 103 | apr_pollfd_t mPollFD; |
101 | }; | 104 | }; |
102 | 105 | ||
103 | // Lets support a small subset of regular expressions here | ||
104 | // Syntax is a string made up of: | ||
105 | // a - checks against alphanumeric ([A-Za-z0-9]) | ||
106 | // c - checks against character ([A-Za-z]) | ||
107 | // f - checks against first variable character ([A-Za-z_]) | ||
108 | // v - checks against variable ([A-Za-z0-9_]) | ||
109 | // s - checks against sign of integer ([-0-9]) | ||
110 | // d - checks against integer digit ([0-9]) | ||
111 | // * - repeat last check | ||
112 | |||
113 | // checks 'a' | ||
114 | BOOL b_return_alphanumeric_ok(char c) | ||
115 | { | ||
116 | if ( ( (c < 'A') | ||
117 | ||(c > 'Z')) | ||
118 | &&( (c < 'a') | ||
119 | ||(c > 'z')) | ||
120 | &&( (c < '0') | ||
121 | ||(c > '9'))) | ||
122 | { | ||
123 | return FALSE; | ||
124 | } | ||
125 | return TRUE; | ||
126 | } | ||
127 | |||
128 | // checks 'c' | ||
129 | BOOL b_return_character_ok(char c) | ||
130 | { | ||
131 | if ( ( (c < 'A') | ||
132 | ||(c > 'Z')) | ||
133 | &&( (c < 'a') | ||
134 | ||(c > 'z'))) | ||
135 | { | ||
136 | return FALSE; | ||
137 | } | ||
138 | return TRUE; | ||
139 | } | ||
140 | |||
141 | // checks 'f' | ||
142 | BOOL b_return_first_variable_ok(char c) | ||
143 | { | ||
144 | if ( ( (c < 'A') | ||
145 | ||(c > 'Z')) | ||
146 | &&( (c < 'a') | ||
147 | ||(c > 'z')) | ||
148 | &&(c != '_')) | ||
149 | { | ||
150 | return FALSE; | ||
151 | } | ||
152 | return TRUE; | ||
153 | } | ||
154 | |||
155 | // checks 'v' | ||
156 | BOOL b_return_variable_ok(char c) | ||
157 | { | ||
158 | if ( ( (c < 'A') | ||
159 | ||(c > 'Z')) | ||
160 | &&( (c < 'a') | ||
161 | ||(c > 'z')) | ||
162 | &&( (c < '0') | ||
163 | ||(c > '9')) | ||
164 | &&(c != '_')) | ||
165 | { | ||
166 | return FALSE; | ||
167 | } | ||
168 | return TRUE; | ||
169 | } | ||
170 | |||
171 | // checks 's' | ||
172 | BOOL b_return_signed_integer_ok(char c) | ||
173 | { | ||
174 | if ( ( (c < '0') | ||
175 | ||(c > '9')) | ||
176 | &&(c != '-')) | ||
177 | { | ||
178 | return FALSE; | ||
179 | } | ||
180 | return TRUE; | ||
181 | } | ||
182 | |||
183 | // checks 'd' | ||
184 | BOOL b_return_integer_ok(char c) | ||
185 | { | ||
186 | if ( (c < '0') | ||
187 | ||(c > '9')) | ||
188 | { | ||
189 | return FALSE; | ||
190 | } | ||
191 | return TRUE; | ||
192 | } | ||
193 | |||
194 | BOOL (*gParseCheckCharacters[])(char c) = | ||
195 | { | ||
196 | b_return_alphanumeric_ok, | ||
197 | b_return_character_ok, | ||
198 | b_return_first_variable_ok, | ||
199 | b_return_variable_ok, | ||
200 | b_return_signed_integer_ok, | ||
201 | b_return_integer_ok | ||
202 | }; | ||
203 | |||
204 | S32 get_checker_number(char checker) | ||
205 | { | ||
206 | switch(checker) | ||
207 | { | ||
208 | case 'a': | ||
209 | return 0; | ||
210 | case 'c': | ||
211 | return 1; | ||
212 | case 'f': | ||
213 | return 2; | ||
214 | case 'v': | ||
215 | return 3; | ||
216 | case 's': | ||
217 | return 4; | ||
218 | case 'd': | ||
219 | return 5; | ||
220 | case '*': | ||
221 | return 9999; | ||
222 | default: | ||
223 | return -1; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | // check token based on passed simplified regular expression | ||
228 | BOOL b_check_token(char *token, char *regexp) | ||
229 | { | ||
230 | S32 tptr, rptr = 0; | ||
231 | S32 current_checker, next_checker = 0; | ||
232 | |||
233 | current_checker = get_checker_number(regexp[rptr++]); | ||
234 | |||
235 | if (current_checker == -1) | ||
236 | { | ||
237 | llerrs << "Invalid regular expression value!" << llendl; | ||
238 | return FALSE; | ||
239 | } | ||
240 | |||
241 | if (current_checker == 9999) | ||
242 | { | ||
243 | llerrs << "Regular expression can't start with *!" << llendl; | ||
244 | return FALSE; | ||
245 | } | ||
246 | |||
247 | for (tptr = 0; token[tptr]; tptr++) | ||
248 | { | ||
249 | if (current_checker == -1) | ||
250 | { | ||
251 | llerrs << "Input exceeds regular expression!\nDid you forget a *?" << llendl; | ||
252 | return FALSE; | ||
253 | } | ||
254 | |||
255 | if (!gParseCheckCharacters[current_checker](token[tptr])) | ||
256 | { | ||
257 | return FALSE; | ||
258 | } | ||
259 | if (next_checker != 9999) | ||
260 | { | ||
261 | next_checker = get_checker_number(regexp[rptr++]); | ||
262 | if (next_checker != 9999) | ||
263 | { | ||
264 | current_checker = next_checker; | ||
265 | } | ||
266 | } | ||
267 | } | ||
268 | return TRUE; | ||
269 | } | ||
270 | |||
271 | // C variable can be made up of upper or lower case letters, underscores, or numbers, but can't start with a number | ||
272 | BOOL b_variable_ok(char *token) | ||
273 | { | ||
274 | if (!b_check_token(token, "fv*")) | ||
275 | { | ||
276 | llerrs << "Token '" << token << "' isn't a variable!" << llendl; | ||
277 | return FALSE; | ||
278 | } | ||
279 | return TRUE; | ||
280 | } | ||
281 | |||
282 | // An integer is made up of the digits 0-9 and may be preceded by a '-' | ||
283 | BOOL b_integer_ok(char *token) | ||
284 | { | ||
285 | if (!b_check_token(token, "sd*")) | ||
286 | { | ||
287 | llerrs << "Token isn't an integer!" << llendl; | ||
288 | return FALSE; | ||
289 | } | ||
290 | return TRUE; | ||
291 | } | ||
292 | |||
293 | // An integer is made up of the digits 0-9 | ||
294 | BOOL b_positive_integer_ok(char *token) | ||
295 | { | ||
296 | if (!b_check_token(token, "d*")) | ||
297 | { | ||
298 | llerrs << "Token isn't an integer!" << llendl; | ||
299 | return FALSE; | ||
300 | } | ||
301 | return TRUE; | ||
302 | } | ||
303 | |||
304 | namespace | 106 | namespace |
305 | { | 107 | { |
306 | class LLFnPtrResponder : public LLHTTPClient::Responder | 108 | class LLFnPtrResponder : public LLHTTPClient::Responder |
307 | { | 109 | { |
110 | LOG_CLASS(LLFnPtrResponder); | ||
308 | public: | 111 | public: |
309 | LLFnPtrResponder(void (*callback)(void **,S32), void **callbackData) : | 112 | LLFnPtrResponder(void (*callback)(void **,S32), void **callbackData, const std::string& name) : |
310 | mCallback(callback), | 113 | mCallback(callback), |
311 | mCallbackData(callbackData) | 114 | mCallbackData(callbackData), |
115 | mMessageName(name) | ||
312 | { | 116 | { |
313 | } | 117 | } |
314 | 118 | ||
315 | virtual void error(U32 status, const std::string& reason) | 119 | virtual void error(U32 status, const std::string& reason) |
316 | { | 120 | { |
121 | // don't spam when agent communication disconnected already | ||
122 | if (status != 410) | ||
123 | { | ||
124 | llwarns << "error status " << status | ||
125 | << " for message " << mMessageName | ||
126 | << " reason " << reason << llendl; | ||
127 | } | ||
317 | // TODO: Map status in to useful error code. | 128 | // TODO: Map status in to useful error code. |
318 | if(NULL != mCallback) mCallback(mCallbackData, LL_ERR_TCP_TIMEOUT); | 129 | if(NULL != mCallback) mCallback(mCallbackData, LL_ERR_TCP_TIMEOUT); |
319 | } | 130 | } |
@@ -327,6 +138,7 @@ namespace | |||
327 | 138 | ||
328 | void (*mCallback)(void **,S32); | 139 | void (*mCallback)(void **,S32); |
329 | void **mCallbackData; | 140 | void **mCallbackData; |
141 | std::string mMessageName; | ||
330 | }; | 142 | }; |
331 | } | 143 | } |
332 | 144 | ||
@@ -352,10 +164,28 @@ void LLTrustedMessageService::post(LLHTTPNode::ResponsePtr response, | |||
352 | ["x-secondlife-udp-listen-port"]; | 164 | ["x-secondlife-udp-listen-port"]; |
353 | 165 | ||
354 | LLSD message_data; | 166 | LLSD message_data; |
355 | message_data["sender"] = senderIP + ":" + senderPort; | 167 | std::string sender = senderIP + ":" + senderPort; |
168 | message_data["sender"] = sender; | ||
356 | message_data["body"] = input; | 169 | message_data["body"] = input; |
357 | 170 | ||
358 | LLMessageSystem::dispatch(name, message_data, response); | 171 | // untrusted senders should not have access to the trusted message |
172 | // service, but this can happen in development, so check and warn | ||
173 | LLMessageConfig::SenderTrust trust = | ||
174 | LLMessageConfig::getSenderTrustedness(name); | ||
175 | if ((trust == LLMessageConfig::TRUSTED || | ||
176 | (trust == LLMessageConfig::NOT_SET && | ||
177 | gMessageSystem->isTrustedMessage(name))) | ||
178 | && !gMessageSystem->isTrustedSender(LLHost(sender))) | ||
179 | { | ||
180 | llwarns << "trusted message POST to /trusted-message/" | ||
181 | << name << " from unknown or untrusted sender " | ||
182 | << sender << llendl; | ||
183 | response->status(403, "Unknown or untrusted sender"); | ||
184 | } | ||
185 | else | ||
186 | { | ||
187 | LLMessageSystem::dispatch(name, message_data, response); | ||
188 | } | ||
359 | } | 189 | } |
360 | 190 | ||
361 | class LLMessageHandlerBridge : public LLHTTPNode | 191 | class LLMessageHandlerBridge : public LLHTTPNode |
@@ -372,14 +202,15 @@ void LLMessageHandlerBridge::post(LLHTTPNode::ResponsePtr response, | |||
372 | const LLSD& context, const LLSD& input) const | 202 | const LLSD& context, const LLSD& input) const |
373 | { | 203 | { |
374 | std::string name = context["request"]["wildcard"]["message-name"]; | 204 | std::string name = context["request"]["wildcard"]["message-name"]; |
375 | 205 | char* namePtr = gMessageStringTable.getString(name.c_str()); | |
206 | |||
376 | lldebugs << "Setting mLastSender " << input["sender"].asString() << llendl; | 207 | lldebugs << "Setting mLastSender " << input["sender"].asString() << llendl; |
377 | gMessageSystem->mLastSender = LLHost(input["sender"].asString()); | 208 | gMessageSystem->mLastSender = LLHost(input["sender"].asString()); |
378 | gMessageSystem->mPacketsIn += 1; | 209 | gMessageSystem->mPacketsIn += 1; |
379 | gMessageSystem->mLLSDMessageReader->setMessage(name, input["body"]); | 210 | gMessageSystem->mLLSDMessageReader->setMessage(namePtr, input["body"]); |
380 | gMessageSystem->mMessageReader = gMessageSystem->mLLSDMessageReader; | 211 | gMessageSystem->mMessageReader = gMessageSystem->mLLSDMessageReader; |
381 | 212 | ||
382 | if(gMessageSystem->callHandler(name.c_str(), false, gMessageSystem)) | 213 | if(gMessageSystem->callHandler(namePtr, false, gMessageSystem)) |
383 | { | 214 | { |
384 | response->result(LLSD()); | 215 | response->result(LLSD()); |
385 | } | 216 | } |
@@ -401,6 +232,12 @@ LLUseCircuitCodeResponder::~LLUseCircuitCodeResponder() | |||
401 | // even abstract base classes need a concrete destructor | 232 | // even abstract base classes need a concrete destructor |
402 | } | 233 | } |
403 | 234 | ||
235 | static const char* nullToEmpty(const char* s) | ||
236 | { | ||
237 | static char emptyString[] = ""; | ||
238 | return s? s : emptyString; | ||
239 | } | ||
240 | |||
404 | void LLMessageSystem::init() | 241 | void LLMessageSystem::init() |
405 | { | 242 | { |
406 | // initialize member variables | 243 | // initialize member variables |
@@ -440,7 +277,6 @@ void LLMessageSystem::init() | |||
440 | mIncomingCompressedSize = 0; | 277 | mIncomingCompressedSize = 0; |
441 | mCurrentRecvPacketID = 0; | 278 | mCurrentRecvPacketID = 0; |
442 | 279 | ||
443 | mMessageFileChecksum = 0; | ||
444 | mMessageFileVersionNumber = 0.f; | 280 | mMessageFileVersionNumber = 0.f; |
445 | 281 | ||
446 | mTimingCallback = NULL; | 282 | mTimingCallback = NULL; |
@@ -454,9 +290,7 @@ void LLMessageSystem::init() | |||
454 | LLMessageSystem::LLMessageSystem(const char *filename, U32 port, | 290 | LLMessageSystem::LLMessageSystem(const char *filename, U32 port, |
455 | S32 version_major, | 291 | S32 version_major, |
456 | S32 version_minor, | 292 | S32 version_minor, |
457 | S32 version_patch) : | 293 | S32 version_patch) |
458 | mTemplateConfirmed(FALSE), | ||
459 | mTemplateMatches(FALSE) | ||
460 | { | 294 | { |
461 | init(); | 295 | init(); |
462 | 296 | ||
@@ -529,6 +363,8 @@ LLMessageSystem::LLMessageSystem(const char *filename, U32 port, | |||
529 | mTrueReceiveSize = 0; | 363 | mTrueReceiveSize = 0; |
530 | } | 364 | } |
531 | 365 | ||
366 | |||
367 | |||
532 | // Read file and build message templates | 368 | // Read file and build message templates |
533 | void LLMessageSystem::loadTemplateFile(const char* filename) | 369 | void LLMessageSystem::loadTemplateFile(const char* filename) |
534 | { | 370 | { |
@@ -539,797 +375,23 @@ void LLMessageSystem::loadTemplateFile(const char* filename) | |||
539 | return; | 375 | return; |
540 | } | 376 | } |
541 | 377 | ||
542 | char token[MAX_MESSAGE_INTERNAL_NAME_SIZE]; /* Flawfinder: ignore */ | 378 | LLString template_body; |
543 | 379 | if(!LLString::read(template_body, filename)) | |
544 | // state variables | ||
545 | BOOL b_template_start = TRUE; | ||
546 | BOOL b_template_end = FALSE; | ||
547 | BOOL b_template = FALSE; | ||
548 | BOOL b_block_start = FALSE; | ||
549 | BOOL b_block_end = FALSE; | ||
550 | BOOL b_block = FALSE; | ||
551 | BOOL b_variable_start = FALSE; | ||
552 | BOOL b_variable_end = FALSE; | ||
553 | BOOL b_variable = FALSE; | ||
554 | //BOOL b_in_comment_block = FALSE; // not yet used | ||
555 | |||
556 | // working temp variables | ||
557 | LLMessageTemplate *templatep = NULL; | ||
558 | char template_name[MAX_MESSAGE_INTERNAL_NAME_SIZE]; /* Flawfinder: ignore */ | ||
559 | |||
560 | LLMessageBlock *blockp = NULL; | ||
561 | char block_name[MAX_MESSAGE_INTERNAL_NAME_SIZE]; /* Flawfinder: ignore */ | ||
562 | |||
563 | LLMessageVariable var; | ||
564 | char var_name[MAX_MESSAGE_INTERNAL_NAME_SIZE]; /* Flawfinder: ignore */ | ||
565 | char formatString[MAX_MESSAGE_INTERNAL_NAME_SIZE]; /* Flawfinder: ignore */ | ||
566 | |||
567 | FILE* messagefilep = NULL; | ||
568 | mMessageFileChecksum = 0; | ||
569 | mMessageFileVersionNumber = 0.f; | ||
570 | S32 checksum_offset = 0; | ||
571 | char* checkp = NULL; | ||
572 | |||
573 | // scanf needs 1 byte more than width, thus the MAX_... -1. | ||
574 | snprintf( /* Flawfinder: ignore */ | ||
575 | formatString, | ||
576 | sizeof(formatString), | ||
577 | "%%%ds", | ||
578 | MAX_MESSAGE_INTERNAL_NAME_SIZE - 1); | ||
579 | messagefilep = LLFile::fopen(filename, "r"); /* Flawfinder: ignore */ | ||
580 | if (messagefilep) | ||
581 | { | ||
582 | // mName = gMessageStringTable.getString(filename); | ||
583 | |||
584 | fseek(messagefilep, 0L, SEEK_SET ); | ||
585 | while(fscanf(messagefilep, formatString, token) != EOF) /* Flawfinder: ignore */ | ||
586 | { | ||
587 | // skip comments | ||
588 | if (token[0] == '/') | ||
589 | { | ||
590 | // skip to end of line | ||
591 | while (token[0] != 10) | ||
592 | fscanf(messagefilep, "%c", token); | ||
593 | continue; | ||
594 | } | ||
595 | |||
596 | checkp = token; | ||
597 | |||
598 | while (*checkp) | ||
599 | { | ||
600 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
601 | checksum_offset = (checksum_offset + 8) % 32; | ||
602 | } | ||
603 | |||
604 | // what are we looking for | ||
605 | if (!strcmp(token, "{")) | ||
606 | { | ||
607 | // is that a legit option? | ||
608 | if (b_template_start) | ||
609 | { | ||
610 | // yup! | ||
611 | b_template_start = FALSE; | ||
612 | |||
613 | // remember that it could be only a signal message, so name is all that it contains | ||
614 | b_template_end = TRUE; | ||
615 | |||
616 | // start working on it! | ||
617 | b_template = TRUE; | ||
618 | } | ||
619 | else if (b_block_start) | ||
620 | { | ||
621 | // yup! | ||
622 | b_block_start = FALSE; | ||
623 | b_template_end = FALSE; | ||
624 | |||
625 | // start working on it! | ||
626 | b_block = TRUE; | ||
627 | } | ||
628 | else if (b_variable_start) | ||
629 | { | ||
630 | // yup! | ||
631 | b_variable_start = FALSE; | ||
632 | b_block_end = FALSE; | ||
633 | |||
634 | // start working on it! | ||
635 | b_variable = TRUE; | ||
636 | } | ||
637 | else | ||
638 | { | ||
639 | llerrs << "Detcted unexpected token '" << token | ||
640 | << "' while parsing template." << llendl; | ||
641 | mbError = TRUE; | ||
642 | fclose(messagefilep); | ||
643 | return; | ||
644 | } | ||
645 | } | ||
646 | |||
647 | if (!strcmp(token, "}")) | ||
648 | { | ||
649 | // is that a legit option? | ||
650 | if (b_template_end) | ||
651 | { | ||
652 | // yup! | ||
653 | b_template_end = FALSE; | ||
654 | b_template = FALSE; | ||
655 | b_block_start = FALSE; | ||
656 | |||
657 | // add data! | ||
658 | // we've gotten a complete variable! hooray! | ||
659 | // add it! | ||
660 | if (NULL == templatep) | ||
661 | { | ||
662 | llerrs << "Trying to addTemplate a NULL templatep during load." << llendl; | ||
663 | mbError = TRUE; | ||
664 | fclose(messagefilep); | ||
665 | return; | ||
666 | } | ||
667 | addTemplate(templatep); | ||
668 | |||
669 | //llinfos << "Read template: "templatep->mNametemp_str | ||
670 | // << llendl; | ||
671 | |||
672 | // look for next one! | ||
673 | b_template_start = TRUE; | ||
674 | } | ||
675 | else if (b_block_end) | ||
676 | { | ||
677 | // yup! | ||
678 | b_block_end = FALSE; | ||
679 | b_variable_start = FALSE; | ||
680 | |||
681 | // add data! | ||
682 | // we've gotten a complete variable! hooray! | ||
683 | // add it to template | ||
684 | if (NULL == templatep) | ||
685 | { | ||
686 | llerrs << "Trying to addBlock to NULL templatep during load." << llendl; | ||
687 | mbError = TRUE; | ||
688 | fclose(messagefilep); | ||
689 | return; | ||
690 | } | ||
691 | templatep->addBlock(blockp); | ||
692 | |||
693 | // start working on it! | ||
694 | b_template_end = TRUE; | ||
695 | b_block_start = TRUE; | ||
696 | } | ||
697 | else if (b_variable_end) | ||
698 | { | ||
699 | // yup! | ||
700 | b_variable_end = FALSE; | ||
701 | |||
702 | // add data! | ||
703 | // we've gotten a complete variable! hooray! | ||
704 | // add it to block | ||
705 | blockp->addVariable(var.getName(), var.getType(), var.getSize()); | ||
706 | |||
707 | // start working on it! | ||
708 | b_variable_start = TRUE; | ||
709 | b_block_end = TRUE; | ||
710 | } | ||
711 | else | ||
712 | { | ||
713 | llerrs << "Detcted unexpected token '" << token | ||
714 | << "' while parsing template." << llendl; | ||
715 | mbError = TRUE; | ||
716 | fclose(messagefilep); | ||
717 | return; | ||
718 | } | ||
719 | } | ||
720 | |||
721 | // now, are we looking to start a template? | ||
722 | if (b_template) | ||
723 | { | ||
724 | |||
725 | b_template = FALSE; | ||
726 | |||
727 | // name first | ||
728 | if (fscanf(messagefilep, formatString, template_name) == EOF) /* Flawfinder: ignore */ | ||
729 | { | ||
730 | // oops, file ended | ||
731 | llerrs << "Expected message template name, but file ended" | ||
732 | << llendl; | ||
733 | mbError = TRUE; | ||
734 | fclose(messagefilep); | ||
735 | return; | ||
736 | } | ||
737 | |||
738 | // debugging to help figure out busted templates | ||
739 | //llinfos << template_name << llendl; | ||
740 | |||
741 | // is name a legit C variable name | ||
742 | if (!b_variable_ok(template_name)) | ||
743 | { | ||
744 | // nope! | ||
745 | llerrs << "Not legal message template name: " | ||
746 | << template_name << llendl; | ||
747 | mbError = TRUE; | ||
748 | fclose(messagefilep); | ||
749 | return; | ||
750 | } | ||
751 | |||
752 | checkp = template_name; | ||
753 | while (*checkp) | ||
754 | { | ||
755 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
756 | checksum_offset = (checksum_offset + 8) % 32; | ||
757 | } | ||
758 | |||
759 | // ok, now get Frequency ("High", "Medium", or "Low") | ||
760 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
761 | { | ||
762 | // oops, file ended | ||
763 | llerrs << "Expected message template frequency, found EOF." | ||
764 | << llendl; | ||
765 | mbError = TRUE; | ||
766 | fclose(messagefilep); | ||
767 | return; | ||
768 | } | ||
769 | |||
770 | checkp = token; | ||
771 | while (*checkp) | ||
772 | { | ||
773 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
774 | checksum_offset = (checksum_offset + 8) % 32; | ||
775 | } | ||
776 | |||
777 | // which one is it? | ||
778 | if (!strcmp(token, "High")) | ||
779 | { | ||
780 | if (++mNumberHighFreqMessages == 255) | ||
781 | { | ||
782 | // oops, too many High Frequency messages!! | ||
783 | llerrs << "Message " << template_name | ||
784 | << " exceeded 254 High frequency messages!" | ||
785 | << llendl; | ||
786 | mbError = TRUE; | ||
787 | fclose(messagefilep); | ||
788 | return; | ||
789 | } | ||
790 | // ok, we can create a template! | ||
791 | // message number is just mNumberHighFreqMessages | ||
792 | templatep = new LLMessageTemplate(template_name, mNumberHighFreqMessages, MFT_HIGH); | ||
793 | //lldebugs << "Template " << template_name << " # " | ||
794 | // << std::hex << mNumberHighFreqMessages | ||
795 | // << std::dec << " high" | ||
796 | // << llendl; | ||
797 | } | ||
798 | else if (!strcmp(token, "Medium")) | ||
799 | { | ||
800 | if (++mNumberMediumFreqMessages == 255) | ||
801 | { | ||
802 | // oops, too many Medium Frequency messages!! | ||
803 | llerrs << "Message " << template_name | ||
804 | << " exceeded 254 Medium frequency messages!" | ||
805 | << llendl; | ||
806 | mbError = TRUE; | ||
807 | fclose(messagefilep); | ||
808 | return; | ||
809 | } | ||
810 | // ok, we can create a template! | ||
811 | // message number is ((255 << 8) | mNumberMediumFreqMessages) | ||
812 | templatep = new LLMessageTemplate(template_name, (255 << 8) | mNumberMediumFreqMessages, MFT_MEDIUM); | ||
813 | //lldebugs << "Template " << template_name << " # " | ||
814 | // << std::hex << mNumberMediumFreqMessages | ||
815 | // << std::dec << " medium" | ||
816 | // << llendl; | ||
817 | } | ||
818 | else if (!strcmp(token, "Low")) | ||
819 | { | ||
820 | if (++mNumberLowFreqMessages == 65535) | ||
821 | { | ||
822 | // oops, too many High Frequency messages!! | ||
823 | llerrs << "Message " << template_name | ||
824 | << " exceeded 65534 Low frequency messages!" | ||
825 | << llendl; | ||
826 | mbError = TRUE; | ||
827 | fclose(messagefilep); | ||
828 | return; | ||
829 | } | ||
830 | // ok, we can create a template! | ||
831 | // message number is ((255 << 24) | (255 << 16) | mNumberLowFreqMessages) | ||
832 | templatep = new LLMessageTemplate(template_name, (255 << 24) | (255 << 16) | mNumberLowFreqMessages, MFT_LOW); | ||
833 | //lldebugs << "Template " << template_name << " # " | ||
834 | // << std::hex << mNumberLowFreqMessages | ||
835 | // << std::dec << " low" | ||
836 | // << llendl; | ||
837 | } | ||
838 | else if (!strcmp(token, "Fixed")) | ||
839 | { | ||
840 | U32 message_num = 0; | ||
841 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
842 | { | ||
843 | // oops, file ended | ||
844 | llerrs << "Expected message template number (fixed)," | ||
845 | << " found EOF." << llendl; | ||
846 | mbError = TRUE; | ||
847 | fclose(messagefilep); | ||
848 | return; | ||
849 | } | ||
850 | |||
851 | checkp = token; | ||
852 | while (*checkp) | ||
853 | { | ||
854 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
855 | checksum_offset = (checksum_offset + 8) % 32; | ||
856 | } | ||
857 | |||
858 | message_num = strtoul(token,NULL,0); | ||
859 | |||
860 | // ok, we can create a template! | ||
861 | // message number is ((255 << 24) | (255 << 16) | mNumberLowFreqMessages) | ||
862 | templatep = new LLMessageTemplate(template_name, message_num, MFT_LOW); | ||
863 | } | ||
864 | else | ||
865 | { | ||
866 | // oops, bad frequency line | ||
867 | llerrs << "Bad frequency! " << token | ||
868 | << " isn't High, Medium, or Low" << llendl | ||
869 | mbError = TRUE; | ||
870 | fclose(messagefilep); | ||
871 | return; | ||
872 | } | ||
873 | |||
874 | // Now get trust ("Trusted", "NotTrusted") | ||
875 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
876 | { | ||
877 | // File ended | ||
878 | llerrs << "Expected message template " | ||
879 | "trust, but file ended." | ||
880 | << llendl; | ||
881 | mbError = TRUE; | ||
882 | fclose(messagefilep); | ||
883 | return; | ||
884 | } | ||
885 | checkp = token; | ||
886 | while (*checkp) | ||
887 | { | ||
888 | mMessageFileChecksum += ((U32) *checkp++) << checksum_offset; | ||
889 | checksum_offset = (checksum_offset + 8) % 32; | ||
890 | } | ||
891 | |||
892 | if (strcmp(token, "Trusted") == 0) | ||
893 | { | ||
894 | if (NULL == templatep) | ||
895 | { | ||
896 | llerrs << "Trying to setTrust for NULL templatep during load." << llendl; | ||
897 | mbError = TRUE; | ||
898 | fclose(messagefilep); | ||
899 | return; | ||
900 | } | ||
901 | templatep->setTrust(MT_TRUST); | ||
902 | } | ||
903 | else if (strcmp(token, "NotTrusted") == 0) | ||
904 | { | ||
905 | if (NULL == templatep) | ||
906 | { | ||
907 | llerrs << "Trying to setTrust for NULL templatep during load." << llendl; | ||
908 | mbError = TRUE; | ||
909 | fclose(messagefilep); | ||
910 | return; | ||
911 | } | ||
912 | templatep->setTrust(MT_NOTRUST); | ||
913 | } | ||
914 | else | ||
915 | { | ||
916 | // bad trust token | ||
917 | llerrs << "bad trust: " << token | ||
918 | << " isn't Trusted or NotTrusted" | ||
919 | << llendl; | ||
920 | mbError = TRUE; | ||
921 | fclose(messagefilep); | ||
922 | return; | ||
923 | } | ||
924 | |||
925 | // get encoding | ||
926 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
927 | { | ||
928 | // File ended | ||
929 | llerrs << "Expected message encoding, but file ended." | ||
930 | << llendl; | ||
931 | mbError = TRUE; | ||
932 | fclose(messagefilep); | ||
933 | return; | ||
934 | } | ||
935 | checkp = token; | ||
936 | while(*checkp) | ||
937 | { | ||
938 | mMessageFileChecksum += ((U32) *checkp++) << checksum_offset; | ||
939 | checksum_offset = (checksum_offset + 8) % 32; | ||
940 | } | ||
941 | |||
942 | if(0 == strcmp(token, "Unencoded")) | ||
943 | { | ||
944 | if (NULL == templatep) | ||
945 | { | ||
946 | llerrs << "Trying to setEncoding for NULL templatep during load." << llendl; | ||
947 | mbError = TRUE; | ||
948 | fclose(messagefilep); | ||
949 | return; | ||
950 | } | ||
951 | templatep->setEncoding(ME_UNENCODED); | ||
952 | } | ||
953 | else if(0 == strcmp(token, "Zerocoded")) | ||
954 | { | ||
955 | if (NULL == templatep) | ||
956 | { | ||
957 | llerrs << "Trying to setEncoding for NULL templatep during load." << llendl; | ||
958 | mbError = TRUE; | ||
959 | fclose(messagefilep); | ||
960 | return; | ||
961 | } | ||
962 | templatep->setEncoding(ME_ZEROCODED); | ||
963 | } | ||
964 | else | ||
965 | { | ||
966 | // bad trust token | ||
967 | llerrs << "bad encoding: " << token | ||
968 | << " isn't Unencoded or Zerocoded" << llendl; | ||
969 | mbError = TRUE; | ||
970 | fclose(messagefilep); | ||
971 | return; | ||
972 | } | ||
973 | |||
974 | // ok, now we need to look for a block | ||
975 | b_block_start = TRUE; | ||
976 | continue; | ||
977 | } | ||
978 | |||
979 | // now, are we looking to start a template? | ||
980 | if (b_block) | ||
981 | { | ||
982 | b_block = FALSE; | ||
983 | // ok, need to pull header info | ||
984 | |||
985 | // name first | ||
986 | if (fscanf(messagefilep, formatString, block_name) == EOF) /* Flawfinder: ignore */ | ||
987 | { | ||
988 | // oops, file ended | ||
989 | llerrs << "Expected block name, but file ended" << llendl; | ||
990 | mbError = TRUE; | ||
991 | fclose(messagefilep); | ||
992 | return; | ||
993 | } | ||
994 | |||
995 | checkp = block_name; | ||
996 | while (*checkp) | ||
997 | { | ||
998 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
999 | checksum_offset = (checksum_offset + 8) % 32; | ||
1000 | } | ||
1001 | |||
1002 | // is name a legit C variable name | ||
1003 | if (!b_variable_ok(block_name)) | ||
1004 | { | ||
1005 | // nope! | ||
1006 | llerrs << block_name << "is not a legal block name" | ||
1007 | << llendl; | ||
1008 | mbError = TRUE; | ||
1009 | fclose(messagefilep); | ||
1010 | return; | ||
1011 | } | ||
1012 | |||
1013 | // now, block type ("Single", "Multiple", or "Variable") | ||
1014 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1015 | { | ||
1016 | // oops, file ended | ||
1017 | llerrs << "Expected block type, but file ended." << llendl; | ||
1018 | mbError = TRUE; | ||
1019 | fclose(messagefilep); | ||
1020 | return; | ||
1021 | } | ||
1022 | |||
1023 | checkp = token; | ||
1024 | while (*checkp) | ||
1025 | { | ||
1026 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1027 | checksum_offset = (checksum_offset + 8) % 32; | ||
1028 | } | ||
1029 | |||
1030 | // which one is it? | ||
1031 | if (!strcmp(token, "Single")) | ||
1032 | { | ||
1033 | // ok, we can create a block | ||
1034 | blockp = new LLMessageBlock(block_name, MBT_SINGLE); | ||
1035 | } | ||
1036 | else if (!strcmp(token, "Multiple")) | ||
1037 | { | ||
1038 | // need to get the number of repeats | ||
1039 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1040 | { | ||
1041 | // oops, file ended | ||
1042 | llerrs << "Expected block multiple count," | ||
1043 | " but file ended." << llendl; | ||
1044 | mbError = TRUE; | ||
1045 | fclose(messagefilep); | ||
1046 | return; | ||
1047 | } | ||
1048 | |||
1049 | checkp = token; | ||
1050 | while (*checkp) | ||
1051 | { | ||
1052 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1053 | checksum_offset = (checksum_offset + 8) % 32; | ||
1054 | } | ||
1055 | |||
1056 | // is it a legal integer | ||
1057 | if (!b_positive_integer_ok(token)) | ||
1058 | { | ||
1059 | // nope! | ||
1060 | llerrs << token << "is not a legal integer for" | ||
1061 | " block multiple count" << llendl; | ||
1062 | mbError = TRUE; | ||
1063 | fclose(messagefilep); | ||
1064 | return; | ||
1065 | } | ||
1066 | // ok, we can create a block | ||
1067 | blockp = new LLMessageBlock(block_name, MBT_MULTIPLE, atoi(token)); | ||
1068 | } | ||
1069 | else if (!strcmp(token, "Variable")) | ||
1070 | { | ||
1071 | // ok, we can create a block | ||
1072 | blockp = new LLMessageBlock(block_name, MBT_VARIABLE); | ||
1073 | } | ||
1074 | else | ||
1075 | { | ||
1076 | // oops, bad block type | ||
1077 | llerrs << "Bad block type! " << token | ||
1078 | << " isn't Single, Multiple, or Variable" << llendl; | ||
1079 | mbError = TRUE; | ||
1080 | fclose(messagefilep); | ||
1081 | return; | ||
1082 | } | ||
1083 | // ok, now we need to look for a variable | ||
1084 | b_variable_start = TRUE; | ||
1085 | continue; | ||
1086 | } | ||
1087 | |||
1088 | // now, are we looking to start a template? | ||
1089 | if (b_variable) | ||
1090 | { | ||
1091 | b_variable = FALSE; | ||
1092 | // ok, need to pull header info | ||
1093 | |||
1094 | // name first | ||
1095 | if (fscanf(messagefilep, formatString, var_name) == EOF) /* Flawfinder: ignore */ | ||
1096 | { | ||
1097 | // oops, file ended | ||
1098 | llerrs << "Expected variable name, but file ended." | ||
1099 | << llendl; | ||
1100 | mbError = TRUE; | ||
1101 | fclose(messagefilep); | ||
1102 | return; | ||
1103 | } | ||
1104 | |||
1105 | checkp = var_name; | ||
1106 | while (*checkp) | ||
1107 | { | ||
1108 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1109 | checksum_offset = (checksum_offset + 8) % 32; | ||
1110 | } | ||
1111 | |||
1112 | // is name a legit C variable name | ||
1113 | if (!b_variable_ok(var_name)) | ||
1114 | { | ||
1115 | // nope! | ||
1116 | llerrs << var_name << " is not a legal variable name" | ||
1117 | << llendl; | ||
1118 | mbError = TRUE; | ||
1119 | fclose(messagefilep); | ||
1120 | return; | ||
1121 | } | ||
1122 | |||
1123 | // now, variable type ("Fixed" or "Variable") | ||
1124 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1125 | { | ||
1126 | // oops, file ended | ||
1127 | llerrs << "Expected variable type, but file ended" | ||
1128 | << llendl; | ||
1129 | mbError = TRUE; | ||
1130 | fclose(messagefilep); | ||
1131 | return; | ||
1132 | } | ||
1133 | |||
1134 | checkp = token; | ||
1135 | while (*checkp) | ||
1136 | { | ||
1137 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1138 | checksum_offset = (checksum_offset + 8) % 32; | ||
1139 | } | ||
1140 | |||
1141 | |||
1142 | // which one is it? | ||
1143 | if (!strcmp(token, "U8")) | ||
1144 | { | ||
1145 | var = LLMessageVariable(var_name, MVT_U8, 1); | ||
1146 | } | ||
1147 | else if (!strcmp(token, "U16")) | ||
1148 | { | ||
1149 | var = LLMessageVariable(var_name, MVT_U16, 2); | ||
1150 | } | ||
1151 | else if (!strcmp(token, "U32")) | ||
1152 | { | ||
1153 | var = LLMessageVariable(var_name, MVT_U32, 4); | ||
1154 | } | ||
1155 | else if (!strcmp(token, "U64")) | ||
1156 | { | ||
1157 | var = LLMessageVariable(var_name, MVT_U64, 8); | ||
1158 | } | ||
1159 | else if (!strcmp(token, "S8")) | ||
1160 | { | ||
1161 | var = LLMessageVariable(var_name, MVT_S8, 1); | ||
1162 | } | ||
1163 | else if (!strcmp(token, "S16")) | ||
1164 | { | ||
1165 | var = LLMessageVariable(var_name, MVT_S16, 2); | ||
1166 | } | ||
1167 | else if (!strcmp(token, "S32")) | ||
1168 | { | ||
1169 | var = LLMessageVariable(var_name, MVT_S32, 4); | ||
1170 | } | ||
1171 | else if (!strcmp(token, "S64")) | ||
1172 | { | ||
1173 | var = LLMessageVariable(var_name, MVT_S64, 8); | ||
1174 | } | ||
1175 | else if (!strcmp(token, "F32")) | ||
1176 | { | ||
1177 | var = LLMessageVariable(var_name, MVT_F32, 4); | ||
1178 | } | ||
1179 | else if (!strcmp(token, "F64")) | ||
1180 | { | ||
1181 | var = LLMessageVariable(var_name, MVT_F64, 8); | ||
1182 | } | ||
1183 | else if (!strcmp(token, "LLVector3")) | ||
1184 | { | ||
1185 | var = LLMessageVariable(var_name, MVT_LLVector3, 12); | ||
1186 | } | ||
1187 | else if (!strcmp(token, "LLVector3d")) | ||
1188 | { | ||
1189 | var = LLMessageVariable(var_name, MVT_LLVector3d, 24); | ||
1190 | } | ||
1191 | else if (!strcmp(token, "LLVector4")) | ||
1192 | { | ||
1193 | var = LLMessageVariable(var_name, MVT_LLVector4, 16); | ||
1194 | } | ||
1195 | else if (!strcmp(token, "LLQuaternion")) | ||
1196 | { | ||
1197 | var = LLMessageVariable(var_name, MVT_LLQuaternion, 12); | ||
1198 | } | ||
1199 | else if (!strcmp(token, "LLUUID")) | ||
1200 | { | ||
1201 | var = LLMessageVariable(var_name, MVT_LLUUID, 16); | ||
1202 | } | ||
1203 | else if (!strcmp(token, "BOOL")) | ||
1204 | { | ||
1205 | var = LLMessageVariable(var_name, MVT_BOOL, 1); | ||
1206 | } | ||
1207 | else if (!strcmp(token, "IPADDR")) | ||
1208 | { | ||
1209 | var = LLMessageVariable(var_name, MVT_IP_ADDR, 4); | ||
1210 | } | ||
1211 | else if (!strcmp(token, "IPPORT")) | ||
1212 | { | ||
1213 | var = LLMessageVariable(var_name, MVT_IP_PORT, 2); | ||
1214 | } | ||
1215 | else if (!strcmp(token, "Fixed")) | ||
1216 | { | ||
1217 | // need to get the variable size | ||
1218 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1219 | { | ||
1220 | // oops, file ended | ||
1221 | llerrs << "Expected variable size, but file ended" | ||
1222 | << llendl; | ||
1223 | mbError = TRUE; | ||
1224 | fclose(messagefilep); | ||
1225 | return; | ||
1226 | } | ||
1227 | |||
1228 | checkp = token; | ||
1229 | while (*checkp) | ||
1230 | { | ||
1231 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1232 | checksum_offset = (checksum_offset + 8) % 32; | ||
1233 | } | ||
1234 | |||
1235 | // is it a legal integer | ||
1236 | if (!b_positive_integer_ok(token)) | ||
1237 | { | ||
1238 | // nope! | ||
1239 | llerrs << token << " is not a legal integer for" | ||
1240 | " variable size" << llendl; | ||
1241 | mbError = TRUE; | ||
1242 | fclose(messagefilep); | ||
1243 | return; | ||
1244 | } | ||
1245 | // ok, we can create a block | ||
1246 | var = LLMessageVariable(var_name, MVT_FIXED, atoi(token)); | ||
1247 | } | ||
1248 | else if (!strcmp(token, "Variable")) | ||
1249 | { | ||
1250 | // need to get the variable size | ||
1251 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1252 | { | ||
1253 | // oops, file ended | ||
1254 | llerrs << "Expected variable size, but file ended" | ||
1255 | << llendl; | ||
1256 | mbError = TRUE; | ||
1257 | fclose(messagefilep); | ||
1258 | return; | ||
1259 | } | ||
1260 | |||
1261 | checkp = token; | ||
1262 | while (*checkp) | ||
1263 | { | ||
1264 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1265 | checksum_offset = (checksum_offset + 8) % 32; | ||
1266 | } | ||
1267 | |||
1268 | // is it a legal integer | ||
1269 | if (!b_positive_integer_ok(token)) | ||
1270 | { | ||
1271 | // nope! | ||
1272 | llerrs << token << "is not a legal integer" | ||
1273 | " for variable size" << llendl; | ||
1274 | mbError = TRUE; | ||
1275 | fclose(messagefilep); | ||
1276 | return; | ||
1277 | } | ||
1278 | // ok, we can create a block | ||
1279 | var = LLMessageVariable(var_name, MVT_VARIABLE, atoi(token)); | ||
1280 | } | ||
1281 | else | ||
1282 | { | ||
1283 | // oops, bad variable type | ||
1284 | llerrs << "Bad variable type! " << token | ||
1285 | << " isn't Fixed or Variable" << llendl; | ||
1286 | mbError = TRUE; | ||
1287 | fclose(messagefilep); | ||
1288 | return; | ||
1289 | } | ||
1290 | |||
1291 | // we got us a variable! | ||
1292 | b_variable_end = TRUE; | ||
1293 | continue; | ||
1294 | } | ||
1295 | |||
1296 | // do we have a version number stuck in the file? | ||
1297 | if (!strcmp(token, "version")) | ||
1298 | { | ||
1299 | // version number | ||
1300 | if (fscanf(messagefilep, formatString, token) == EOF) /* Flawfinder: ignore */ | ||
1301 | { | ||
1302 | // oops, file ended | ||
1303 | llerrs << "Expected version number, but file ended" | ||
1304 | << llendl; | ||
1305 | mbError = TRUE; | ||
1306 | fclose(messagefilep); | ||
1307 | return; | ||
1308 | } | ||
1309 | |||
1310 | checkp = token; | ||
1311 | while (*checkp) | ||
1312 | { | ||
1313 | mMessageFileChecksum += ((U32)*checkp++) << checksum_offset; | ||
1314 | checksum_offset = (checksum_offset + 8) % 32; | ||
1315 | } | ||
1316 | |||
1317 | mMessageFileVersionNumber = (F32)atof(token); | ||
1318 | |||
1319 | // llinfos << "### Message template version " << mMessageFileVersionNumber << " ###" << llendl; | ||
1320 | continue; | ||
1321 | } | ||
1322 | } | ||
1323 | |||
1324 | llinfos << "Message template checksum = " << std::hex << mMessageFileChecksum << std::dec << llendl; | ||
1325 | } | ||
1326 | else | ||
1327 | { | 380 | { |
1328 | llwarns << "Failed to open template: " << filename << llendl; | 381 | llwarns << "Failed to open template: " << filename << llendl; |
1329 | mbError = TRUE; | 382 | mbError = TRUE; |
1330 | return; | 383 | return; |
1331 | } | 384 | } |
1332 | fclose(messagefilep); | 385 | |
386 | LLTemplateTokenizer tokens(template_body); | ||
387 | LLTemplateParser parsed(tokens); | ||
388 | mMessageFileVersionNumber = parsed.getVersion(); | ||
389 | for(LLTemplateParser::message_iterator iter = parsed.getMessagesBegin(); | ||
390 | iter != parsed.getMessagesEnd(); | ||
391 | iter++) | ||
392 | { | ||
393 | addTemplate(*iter); | ||
394 | } | ||
1333 | } | 395 | } |
1334 | 396 | ||
1335 | 397 | ||
@@ -1393,6 +455,94 @@ BOOL LLMessageSystem::poll(F32 seconds) | |||
1393 | } | 455 | } |
1394 | } | 456 | } |
1395 | 457 | ||
458 | bool LLMessageSystem::isTrustedSender(const LLHost& host) const | ||
459 | { | ||
460 | LLCircuitData* cdp = mCircuitInfo.findCircuit(host); | ||
461 | if(NULL == cdp) | ||
462 | { | ||
463 | return false; | ||
464 | } | ||
465 | return cdp->getTrusted(); | ||
466 | } | ||
467 | |||
468 | static LLMessageSystem::message_template_name_map_t::const_iterator | ||
469 | findTemplate(const LLMessageSystem::message_template_name_map_t& templates, | ||
470 | std::string name) | ||
471 | { | ||
472 | const char* namePrehash = gMessageStringTable.getString(name.c_str()); | ||
473 | if(NULL == namePrehash) {return templates.end();} | ||
474 | return templates.find(namePrehash); | ||
475 | } | ||
476 | |||
477 | bool LLMessageSystem::isTrustedMessage(const std::string& name) const | ||
478 | { | ||
479 | message_template_name_map_t::const_iterator iter = | ||
480 | findTemplate(mMessageTemplates, name); | ||
481 | if(iter == mMessageTemplates.end()) {return false;} | ||
482 | return iter->second->getTrust() == MT_TRUST; | ||
483 | } | ||
484 | |||
485 | bool LLMessageSystem::isUntrustedMessage(const std::string& name) const | ||
486 | { | ||
487 | message_template_name_map_t::const_iterator iter = | ||
488 | findTemplate(mMessageTemplates, name); | ||
489 | if(iter == mMessageTemplates.end()) {return false;} | ||
490 | return iter->second->getTrust() == MT_NOTRUST; | ||
491 | } | ||
492 | |||
493 | LLCircuitData* LLMessageSystem::findCircuit(const LLHost& host, | ||
494 | bool resetPacketId) | ||
495 | { | ||
496 | LLCircuitData* cdp = mCircuitInfo.findCircuit(host); | ||
497 | if (!cdp) | ||
498 | { | ||
499 | // This packet comes from a circuit we don't know about. | ||
500 | |||
501 | // Are we rejecting off-circuit packets? | ||
502 | if (mbProtected) | ||
503 | { | ||
504 | // cdp is already NULL, so we don't need to unset it. | ||
505 | } | ||
506 | else | ||
507 | { | ||
508 | // nope, open the new circuit | ||
509 | cdp = mCircuitInfo.addCircuitData(host, mCurrentRecvPacketID); | ||
510 | |||
511 | if(resetPacketId) | ||
512 | { | ||
513 | // I added this - I think it's correct - DJS | ||
514 | // reset packet in ID | ||
515 | cdp->setPacketInID(mCurrentRecvPacketID); | ||
516 | } | ||
517 | // And claim the packet is on the circuit we just added. | ||
518 | } | ||
519 | } | ||
520 | else | ||
521 | { | ||
522 | // this is an old circuit. . . is it still alive? | ||
523 | if (!cdp->isAlive()) | ||
524 | { | ||
525 | // nope. don't accept if we're protected | ||
526 | if (mbProtected) | ||
527 | { | ||
528 | // don't accept packets from unexpected sources | ||
529 | cdp = NULL; | ||
530 | } | ||
531 | else | ||
532 | { | ||
533 | // wake up the circuit | ||
534 | cdp->setAlive(TRUE); | ||
535 | |||
536 | if(resetPacketId) | ||
537 | { | ||
538 | // reset packet in ID | ||
539 | cdp->setPacketInID(mCurrentRecvPacketID); | ||
540 | } | ||
541 | } | ||
542 | } | ||
543 | } | ||
544 | return cdp; | ||
545 | } | ||
1396 | 546 | ||
1397 | // Returns TRUE if a valid, on-circuit message has been received. | 547 | // Returns TRUE if a valid, on-circuit message has been received. |
1398 | BOOL LLMessageSystem::checkMessages( S64 frame_count ) | 548 | BOOL LLMessageSystem::checkMessages( S64 frame_count ) |
@@ -1471,71 +621,12 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) | |||
1471 | } | 621 | } |
1472 | 622 | ||
1473 | // process the message as normal | 623 | // process the message as normal |
1474 | 624 | mIncomingCompressedSize = zeroCodeExpand(&buffer, &receive_size); | |
1475 | mIncomingCompressedSize = zeroCodeExpand(&buffer,&receive_size); | 625 | mCurrentRecvPacketID = ntohl(*((U32*)(&buffer[1]))); |
1476 | mCurrentRecvPacketID = buffer[1] + ((buffer[0] & 0x0f ) * 256); | ||
1477 | if (sizeof(TPACKETID) == 4) | ||
1478 | { | ||
1479 | mCurrentRecvPacketID *= 256; | ||
1480 | mCurrentRecvPacketID += buffer[2]; | ||
1481 | mCurrentRecvPacketID *= 256; | ||
1482 | mCurrentRecvPacketID += buffer[3]; | ||
1483 | } | ||
1484 | |||
1485 | host = getSender(); | 626 | host = getSender(); |
1486 | //llinfos << host << ":" << mCurrentRecvPacketID << llendl; | ||
1487 | 627 | ||
1488 | // For testing the weird case we're having in the office where the first few packets | 628 | const bool resetPacketId = true; |
1489 | // on a connection get dropped | 629 | cdp = findCircuit(host, resetPacketId); |
1490 | //if ((mCurrentRecvPacketID < 8) && !(buffer[0] & LL_RESENT_FLAG)) | ||
1491 | //{ | ||
1492 | // llinfos << "Evil! Dropping " << mCurrentRecvPacketID << " from " << host << " for fun!" << llendl; | ||
1493 | // continue; | ||
1494 | //} | ||
1495 | |||
1496 | cdp = mCircuitInfo.findCircuit(host); | ||
1497 | if (!cdp) | ||
1498 | { | ||
1499 | // This packet comes from a circuit we don't know about. | ||
1500 | |||
1501 | // Are we rejecting off-circuit packets? | ||
1502 | if (mbProtected) | ||
1503 | { | ||
1504 | // cdp is already NULL, so we don't need to unset it. | ||
1505 | } | ||
1506 | else | ||
1507 | { | ||
1508 | // nope, open the new circuit | ||
1509 | cdp = mCircuitInfo.addCircuitData(host, mCurrentRecvPacketID); | ||
1510 | |||
1511 | // I added this - I think it's correct - DJS | ||
1512 | // reset packet in ID | ||
1513 | cdp->setPacketInID(mCurrentRecvPacketID); | ||
1514 | |||
1515 | // And claim the packet is on the circuit we just added. | ||
1516 | } | ||
1517 | } | ||
1518 | else | ||
1519 | { | ||
1520 | // this is an old circuit. . . is it still alive? | ||
1521 | if (!cdp->isAlive()) | ||
1522 | { | ||
1523 | // nope. don't accept if we're protected | ||
1524 | if (mbProtected) | ||
1525 | { | ||
1526 | // don't accept packets from unexpected sources | ||
1527 | cdp = NULL; | ||
1528 | } | ||
1529 | else | ||
1530 | { | ||
1531 | // wake up the circuit | ||
1532 | cdp->setAlive(TRUE); | ||
1533 | |||
1534 | // reset packet in ID | ||
1535 | cdp->setPacketInID(mCurrentRecvPacketID); | ||
1536 | } | ||
1537 | } | ||
1538 | } | ||
1539 | 630 | ||
1540 | // At this point, cdp is now a pointer to the circuit that | 631 | // At this point, cdp is now a pointer to the circuit that |
1541 | // this message came in on if it's valid, and NULL if the | 632 | // this message came in on if it's valid, and NULL if the |
@@ -1664,6 +755,10 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) | |||
1664 | 755 | ||
1665 | if (valid_packet) | 756 | if (valid_packet) |
1666 | { | 757 | { |
758 | // enable this for output of message names | ||
759 | //llinfos << "< \"" << mTemplateMessageReader->getMessageName() | ||
760 | //<< "\"" << llendl; | ||
761 | |||
1667 | /* Code for dumping the complete contents of a message. Keep for future use in optimizing messages. | 762 | /* Code for dumping the complete contents of a message. Keep for future use in optimizing messages. |
1668 | if( 1 ) | 763 | if( 1 ) |
1669 | { | 764 | { |
@@ -1768,9 +863,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) | |||
1768 | { | 863 | { |
1769 | if (mbProtected && (!cdp)) | 864 | if (mbProtected && (!cdp)) |
1770 | { | 865 | { |
1771 | llwarns << "Packet " | 866 | llwarns << "Invalid Packet from invalid circuit " << host << llendl; |
1772 | << mTemplateMessageReader->getMessageName() | ||
1773 | << " from invalid circuit " << host << llendl; | ||
1774 | mOffCircuitPackets++; | 867 | mOffCircuitPackets++; |
1775 | } | 868 | } |
1776 | else | 869 | else |
@@ -2051,15 +1144,34 @@ S32 LLMessageSystem::flushReliable(const LLHost &host) | |||
2051 | return send_bytes; | 1144 | return send_bytes; |
2052 | } | 1145 | } |
2053 | 1146 | ||
2054 | 1147 | LLHTTPClient::ResponderPtr LLMessageSystem::createResponder(const std::string& name) | |
1148 | { | ||
1149 | if(mSendReliable) | ||
1150 | { | ||
1151 | return new LLFnPtrResponder(mReliablePacketParams.mCallback, | ||
1152 | mReliablePacketParams.mCallbackData, | ||
1153 | name); | ||
1154 | } | ||
1155 | else | ||
1156 | { | ||
1157 | llwarns << "LLMessageSystem::sendMessage: Sending unreliable " | ||
1158 | << mMessageBuilder->getMessageName() << " message via HTTP" | ||
1159 | << llendl; | ||
1160 | return new LLFnPtrResponder(NULL, NULL, | ||
1161 | mMessageBuilder->getMessageName()); | ||
1162 | } | ||
1163 | } | ||
1164 | |||
2055 | // This can be called from signal handlers, | 1165 | // This can be called from signal handlers, |
2056 | // so should should not use llinfos. | 1166 | // so should should not use llinfos. |
2057 | S32 LLMessageSystem::sendMessage(const LLHost &host) | 1167 | S32 LLMessageSystem::sendMessage(const LLHost &host) |
2058 | { | 1168 | { |
2059 | if (! mMessageBuilder->isBuilt()) | 1169 | if (! mMessageBuilder->isBuilt()) |
2060 | { | 1170 | { |
2061 | mSendSize = mMessageBuilder->buildMessage(mSendBuffer, | 1171 | mSendSize = mMessageBuilder->buildMessage( |
2062 | MAX_BUFFER_SIZE); | 1172 | mSendBuffer, |
1173 | MAX_BUFFER_SIZE, | ||
1174 | 0); | ||
2063 | } | 1175 | } |
2064 | 1176 | ||
2065 | if (!(host.isOk())) // if port and ip are zero, don't bother trying to send the message | 1177 | if (!(host.isOk())) // if port and ip are zero, don't bother trying to send the message |
@@ -2088,6 +1200,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) | |||
2088 | else | 1200 | else |
2089 | { | 1201 | { |
2090 | // nope, open the new circuit | 1202 | // nope, open the new circuit |
1203 | |||
2091 | cdp = mCircuitInfo.addCircuitData(host, 0); | 1204 | cdp = mCircuitInfo.addCircuitData(host, 0); |
2092 | } | 1205 | } |
2093 | } | 1206 | } |
@@ -2115,33 +1228,23 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) | |||
2115 | LLSD message = mLLSDMessageBuilder->getMessage(); | 1228 | LLSD message = mLLSDMessageBuilder->getMessage(); |
2116 | 1229 | ||
2117 | const LLHTTPSender& sender = LLHTTPSender::getSender(host); | 1230 | const LLHTTPSender& sender = LLHTTPSender::getSender(host); |
2118 | LLHTTPClient::ResponderPtr responder = NULL; | ||
2119 | if(mSendReliable) | ||
2120 | { | ||
2121 | responder = | ||
2122 | new LLFnPtrResponder(mReliablePacketParams.mCallback, | ||
2123 | mReliablePacketParams.mCallbackData); | ||
2124 | } | ||
2125 | else | ||
2126 | { | ||
2127 | llwarns << "LLMessageSystem::sendMessage: Sending unreliable " << mMessageBuilder->getMessageName() << " message via HTTP" << llendl; | ||
2128 | responder = new LLFnPtrResponder(NULL, NULL); | ||
2129 | } | ||
2130 | sender.send(host, mLLSDMessageBuilder->getMessageName(), | 1231 | sender.send(host, mLLSDMessageBuilder->getMessageName(), |
2131 | message, responder); | 1232 | message, createResponder(mLLSDMessageBuilder->getMessageName())); |
2132 | 1233 | ||
2133 | mSendReliable = FALSE; | 1234 | mSendReliable = FALSE; |
2134 | mReliablePacketParams.clear(); | 1235 | mReliablePacketParams.clear(); |
2135 | return 1; | 1236 | return 1; |
2136 | } | 1237 | } |
2137 | 1238 | ||
2138 | memset(mSendBuffer,0,LL_PACKET_ID_SIZE); // zero out the packet ID field | 1239 | // zero out the flags and packetid. Subtract 1 here so that we do |
1240 | // not overwrite the offset if it was set set in buildMessage(). | ||
1241 | memset(mSendBuffer, 0, LL_PACKET_ID_SIZE - 1); | ||
2139 | 1242 | ||
2140 | // add the send id to the front of the message | 1243 | // add the send id to the front of the message |
2141 | cdp->nextPacketOutID(); | 1244 | cdp->nextPacketOutID(); |
2142 | 1245 | ||
2143 | // Packet ID size is always 4 | 1246 | // Packet ID size is always 4 |
2144 | *((S32*)&mSendBuffer[0]) = htonl(cdp->getPacketOutID()); | 1247 | *((S32*)&mSendBuffer[PHL_PACKET_ID]) = htonl(cdp->getPacketOutID()); |
2145 | 1248 | ||
2146 | // Compress the message, which will usually reduce its size. | 1249 | // Compress the message, which will usually reduce its size. |
2147 | U8 * buf_ptr = (U8 *)mSendBuffer; | 1250 | U8 * buf_ptr = (U8 *)mSendBuffer; |
@@ -2284,7 +1387,7 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re | |||
2284 | char buffer[MAX_STRING]; /* Flawfinder: ignore */ | 1387 | char buffer[MAX_STRING]; /* Flawfinder: ignore */ |
2285 | snprintf(buffer, MAX_STRING, "\t%6d\t%6d\t%6d ", mMessageReader->getMessageSize(), (mIncomingCompressedSize ? mIncomingCompressedSize: mMessageReader->getMessageSize()), mCurrentRecvPacketID); /* Flawfinder: ignore */ | 1388 | snprintf(buffer, MAX_STRING, "\t%6d\t%6d\t%6d ", mMessageReader->getMessageSize(), (mIncomingCompressedSize ? mIncomingCompressedSize: mMessageReader->getMessageSize()), mCurrentRecvPacketID); /* Flawfinder: ignore */ |
2286 | str << buffer | 1389 | str << buffer |
2287 | << mMessageReader->getMessageName() | 1390 | << nullToEmpty(mMessageReader->getMessageName()) |
2288 | << (recv_reliable ? " reliable" : "") | 1391 | << (recv_reliable ? " reliable" : "") |
2289 | << " REJECTED"; | 1392 | << " REJECTED"; |
2290 | llinfos << str.str() << llendl; | 1393 | llinfos << str.str() << llendl; |
@@ -2307,6 +1410,27 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re | |||
2307 | } | 1410 | } |
2308 | } | 1411 | } |
2309 | 1412 | ||
1413 | S32 LLMessageSystem::sendMessage(const LLHost &host, const char* name, | ||
1414 | const LLSD& message) | ||
1415 | { | ||
1416 | if (!(host.isOk())) | ||
1417 | { | ||
1418 | llwarns << "trying to send message to invalid host" << llendl; | ||
1419 | return 0; | ||
1420 | } | ||
1421 | newMessage(name); | ||
1422 | if (mMessageBuilder != mLLSDMessageBuilder) | ||
1423 | { | ||
1424 | llwarns << "trying to send llsd message when builder is not LLSD!" | ||
1425 | << llendl; | ||
1426 | return 0; | ||
1427 | } | ||
1428 | |||
1429 | const LLHTTPSender& sender = LLHTTPSender::getSender(host); | ||
1430 | sender.send(host, name, message, createResponder(name)); | ||
1431 | return 1; | ||
1432 | } | ||
1433 | |||
2310 | void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host ) | 1434 | void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host ) |
2311 | { | 1435 | { |
2312 | // RequestTrustedCircuit is how we establish trust, so don't spam | 1436 | // RequestTrustedCircuit is how we establish trust, so don't spam |
@@ -2314,9 +1438,9 @@ void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host ) | |||
2314 | if (strcmp(mMessageReader->getMessageName(), "RequestTrustedCircuit")) | 1438 | if (strcmp(mMessageReader->getMessageName(), "RequestTrustedCircuit")) |
2315 | { | 1439 | { |
2316 | llwarns << "Received trusted message on untrusted circuit. " | 1440 | llwarns << "Received trusted message on untrusted circuit. " |
2317 | << "Will reply with deny. " | 1441 | << "Will reply with deny. " |
2318 | << "Message: " << mMessageReader->getMessageName() | 1442 | << "Message: " << nullToEmpty(mMessageReader->getMessageName()) |
2319 | << " Host: " << host << llendl; | 1443 | << " Host: " << host << llendl; |
2320 | } | 1444 | } |
2321 | 1445 | ||
2322 | if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM) | 1446 | if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM) |
@@ -2366,7 +1490,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r | |||
2366 | char buffer[MAX_STRING]; /* Flawfinder: ignore */ | 1490 | char buffer[MAX_STRING]; /* Flawfinder: ignore */ |
2367 | snprintf(buffer, MAX_STRING, "\t%6d\t%6d\t%6d ", mMessageReader->getMessageSize(), (mIncomingCompressedSize ? mIncomingCompressedSize : mMessageReader->getMessageSize()), mCurrentRecvPacketID); /* Flawfinder: ignore */ | 1491 | snprintf(buffer, MAX_STRING, "\t%6d\t%6d\t%6d ", mMessageReader->getMessageSize(), (mIncomingCompressedSize ? mIncomingCompressedSize : mMessageReader->getMessageSize()), mCurrentRecvPacketID); /* Flawfinder: ignore */ |
2368 | str << buffer | 1492 | str << buffer |
2369 | << mMessageReader->getMessageName() | 1493 | << nullToEmpty(mMessageReader->getMessageName()) |
2370 | << (recv_reliable ? " reliable" : "") | 1494 | << (recv_reliable ? " reliable" : "") |
2371 | << (recv_resent ? " resent" : "") | 1495 | << (recv_resent ? " resent" : "") |
2372 | << (recv_acks ? " acks" : ""); | 1496 | << (recv_acks ? " acks" : ""); |
@@ -2506,16 +1630,16 @@ void LLMessageSystem::disableCircuit(const LLHost &host) | |||
2506 | llinfos << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl; | 1630 | llinfos << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl; |
2507 | gMessageSystem->mIPPortToCircuitCode.erase(ip_port); | 1631 | gMessageSystem->mIPPortToCircuitCode.erase(ip_port); |
2508 | } | 1632 | } |
1633 | mCircuitInfo.removeCircuitData(host); | ||
2509 | } | 1634 | } |
2510 | else | 1635 | else |
2511 | { | 1636 | { |
2512 | // Sigh, since we can open circuits which don't have circuit | 1637 | // Sigh, since we can open circuits which don't have circuit |
2513 | // codes, it's possible for this to happen... | 1638 | // codes, it's possible for this to happen... |
2514 | 1639 | ||
2515 | //llwarns << "Couldn't find circuit code for " << host << llendl; | 1640 | llwarns << "Couldn't find circuit code for " << host << llendl; |
2516 | } | 1641 | } |
2517 | 1642 | ||
2518 | mCircuitInfo.removeCircuitData(host); | ||
2519 | } | 1643 | } |
2520 | 1644 | ||
2521 | 1645 | ||
@@ -2937,6 +2061,30 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, | |||
2937 | } | 2061 | } |
2938 | } | 2062 | } |
2939 | 2063 | ||
2064 | // static | ||
2065 | void LLMessageSystem::processError(LLMessageSystem* msg, void**) | ||
2066 | { | ||
2067 | char buffer[MTUBYTES]; | ||
2068 | S32 error_code = 0; | ||
2069 | msg->getS32("Data", "Code", error_code); | ||
2070 | std::string error_token; | ||
2071 | msg->getString("Data", "Token", MTUBYTES, buffer); | ||
2072 | error_token.assign(buffer); | ||
2073 | LLUUID error_id; | ||
2074 | msg->getUUID("Data", "ID", error_id); | ||
2075 | std::string error_system; | ||
2076 | msg->getString("Data", "System", MTUBYTES, buffer); | ||
2077 | error_system.assign(buffer); | ||
2078 | std::string error_message; | ||
2079 | msg->getString("Data", "Message", MTUBYTES, buffer); | ||
2080 | error_message.assign(buffer); | ||
2081 | |||
2082 | llwarns << "Message error from " << msg->getSender() << " - " | ||
2083 | << error_code << " " << error_token << " " << error_id << " \"" | ||
2084 | << error_system << "\" \"" << error_message << "\"" << llendl; | ||
2085 | } | ||
2086 | |||
2087 | |||
2940 | static LLHTTPNode& messageRootNode() | 2088 | static LLHTTPNode& messageRootNode() |
2941 | { | 2089 | { |
2942 | static LLHTTPNode root_node; | 2090 | static LLHTTPNode root_node; |
@@ -2964,10 +2112,13 @@ void LLMessageSystem::dispatch( | |||
2964 | const LLSD& message, | 2112 | const LLSD& message, |
2965 | LLHTTPNode::ResponsePtr responsep) | 2113 | LLHTTPNode::ResponsePtr responsep) |
2966 | { | 2114 | { |
2967 | if (msg_name.empty()) | 2115 | if ((gMessageSystem->mMessageTemplates.find |
2116 | (gMessageStringTable.getString(msg_name.c_str())) == | ||
2117 | gMessageSystem->mMessageTemplates.end()) && | ||
2118 | !LLMessageConfig::isValidMessage(msg_name)) | ||
2968 | { | 2119 | { |
2969 | llwarns << "LLMessageService::dispatch called with no message name" | 2120 | llwarns << "Ignoring unknown message " << msg_name << llendl; |
2970 | << llendl; | 2121 | responsep->notFound("Invalid message name"); |
2971 | return; | 2122 | return; |
2972 | } | 2123 | } |
2973 | 2124 | ||
@@ -2980,6 +2131,9 @@ void LLMessageSystem::dispatch( | |||
2980 | << path << llendl; | 2131 | << path << llendl; |
2981 | return; | 2132 | return; |
2982 | } | 2133 | } |
2134 | // enable this for output of message names | ||
2135 | //llinfos << "< \"" << msg_name << "\"" << llendl; | ||
2136 | //lldebugs << "data: " << LLSDXMLStreamer(message) << llendl; | ||
2983 | 2137 | ||
2984 | handler->post(responsep, context, message); | 2138 | handler->post(responsep, context, message); |
2985 | } | 2139 | } |
@@ -3044,6 +2198,56 @@ void LLMessageSystem::setMessageBans( | |||
3044 | check_for_unrecognized_messages("untrusted", untrusted, mMessageTemplates); | 2198 | check_for_unrecognized_messages("untrusted", untrusted, mMessageTemplates); |
3045 | } | 2199 | } |
3046 | 2200 | ||
2201 | S32 LLMessageSystem::sendError( | ||
2202 | const LLHost& host, | ||
2203 | const LLUUID& agent_id, | ||
2204 | S32 code, | ||
2205 | const std::string& token, | ||
2206 | const LLUUID& id, | ||
2207 | const std::string& system, | ||
2208 | const std::string& message, | ||
2209 | const LLSD& data) | ||
2210 | { | ||
2211 | newMessage("Error"); | ||
2212 | nextBlockFast(_PREHASH_AgentData); | ||
2213 | addUUIDFast(_PREHASH_AgentID, agent_id); | ||
2214 | nextBlockFast(_PREHASH_Data); | ||
2215 | addS32("Code", code); | ||
2216 | addString("Token", token); | ||
2217 | addUUID("ID", id); | ||
2218 | addString("System", system); | ||
2219 | std::string temp; | ||
2220 | temp = message; | ||
2221 | if(temp.size() > (size_t)MTUBYTES) temp.resize((size_t)MTUBYTES); | ||
2222 | addString("Message", message); | ||
2223 | LLPointer<LLSDBinaryFormatter> formatter = new LLSDBinaryFormatter; | ||
2224 | std::ostringstream ostr; | ||
2225 | formatter->format(data, ostr); | ||
2226 | temp = ostr.str(); | ||
2227 | bool pack_data = true; | ||
2228 | static const std::string ERROR_MESSAGE_NAME("Error"); | ||
2229 | if (LLMessageConfig::getMessageFlavor(ERROR_MESSAGE_NAME) == | ||
2230 | LLMessageConfig::TEMPLATE_FLAVOR) | ||
2231 | { | ||
2232 | S32 msg_size = temp.size() + mMessageBuilder->getMessageSize(); | ||
2233 | if(msg_size >= ETHERNET_MTU_BYTES) | ||
2234 | { | ||
2235 | pack_data = false; | ||
2236 | } | ||
2237 | } | ||
2238 | if(pack_data) | ||
2239 | { | ||
2240 | addBinaryData("Data", (void*)temp.c_str(), temp.size()); | ||
2241 | } | ||
2242 | else | ||
2243 | { | ||
2244 | llwarns << "Data and message were too large -- data removed." | ||
2245 | << llendl; | ||
2246 | addBinaryData("Data", NULL, 0); | ||
2247 | } | ||
2248 | return sendReliable(host); | ||
2249 | } | ||
2250 | |||
3047 | void process_packet_ack(LLMessageSystem *msgsystem, void** /*user_data*/) | 2251 | void process_packet_ack(LLMessageSystem *msgsystem, void** /*user_data*/) |
3048 | { | 2252 | { |
3049 | TPACKETID packet_id; | 2253 | TPACKETID packet_id; |
@@ -3069,37 +2273,8 @@ void process_packet_ack(LLMessageSystem *msgsystem, void** /*user_data*/) | |||
3069 | } | 2273 | } |
3070 | } | 2274 | } |
3071 | 2275 | ||
3072 | void send_template_reply(LLMessageSystem* msg, const LLUUID& token) | ||
3073 | { | ||
3074 | msg->newMessageFast(_PREHASH_TemplateChecksumReply); | ||
3075 | msg->nextBlockFast(_PREHASH_DataBlock); | ||
3076 | msg->addU32Fast(_PREHASH_Checksum, msg->mMessageFileChecksum); | ||
3077 | msg->addU8Fast(_PREHASH_MajorVersion, U8(msg->mSystemVersionMajor) ); | ||
3078 | msg->addU8Fast(_PREHASH_MinorVersion, U8(msg->mSystemVersionMinor) ); | ||
3079 | msg->addU8Fast(_PREHASH_PatchVersion, U8(msg->mSystemVersionPatch) ); | ||
3080 | msg->addU8Fast(_PREHASH_ServerVersion, U8(msg->mSystemVersionServer) ); | ||
3081 | msg->addU32Fast(_PREHASH_Flags, msg->mVersionFlags); | ||
3082 | msg->nextBlockFast(_PREHASH_TokenBlock); | ||
3083 | msg->addUUIDFast(_PREHASH_Token, token); | ||
3084 | msg->sendMessage(msg->getSender()); | ||
3085 | } | ||
3086 | |||
3087 | void process_template_checksum_request(LLMessageSystem* msg, void**) | ||
3088 | { | ||
3089 | llinfos << "Message template checksum request received from " | ||
3090 | << msg->getSender() << llendl; | ||
3091 | send_template_reply(msg, LLUUID::null); | ||
3092 | } | ||
3093 | |||
3094 | void process_secured_template_checksum_request(LLMessageSystem* msg, void**) | ||
3095 | { | ||
3096 | llinfos << "Secured message template checksum request received from " | ||
3097 | << msg->getSender() << llendl; | ||
3098 | LLUUID token; | ||
3099 | msg->getUUIDFast(_PREHASH_TokenBlock, _PREHASH_Token, token); | ||
3100 | send_template_reply(msg, token); | ||
3101 | } | ||
3102 | 2276 | ||
2277 | /* | ||
3103 | void process_log_messages(LLMessageSystem* msg, void**) | 2278 | void process_log_messages(LLMessageSystem* msg, void**) |
3104 | { | 2279 | { |
3105 | U8 log_message; | 2280 | U8 log_message; |
@@ -3116,7 +2291,7 @@ void process_log_messages(LLMessageSystem* msg, void**) | |||
3116 | llinfos << "Stopping logging via message" << llendl; | 2291 | llinfos << "Stopping logging via message" << llendl; |
3117 | msg->stopLogging(); | 2292 | msg->stopLogging(); |
3118 | } | 2293 | } |
3119 | } | 2294 | }*/ |
3120 | 2295 | ||
3121 | // Make circuit trusted if the MD5 Digest matches, otherwise | 2296 | // Make circuit trusted if the MD5 Digest matches, otherwise |
3122 | // notify remote end that they are not trusted. | 2297 | // notify remote end that they are not trusted. |
@@ -3349,15 +2524,14 @@ BOOL start_messaging_system( | |||
3349 | //gMessageSystem->setHandlerFuncFast(_PREHASH_AckAddCircuitCode, ack_add_circuit_code, NULL); | 2524 | //gMessageSystem->setHandlerFuncFast(_PREHASH_AckAddCircuitCode, ack_add_circuit_code, NULL); |
3350 | gMessageSystem->setHandlerFuncFast(_PREHASH_UseCircuitCode, LLMessageSystem::processUseCircuitCode, (void**)responder); | 2525 | gMessageSystem->setHandlerFuncFast(_PREHASH_UseCircuitCode, LLMessageSystem::processUseCircuitCode, (void**)responder); |
3351 | gMessageSystem->setHandlerFuncFast(_PREHASH_PacketAck, process_packet_ack, NULL); | 2526 | gMessageSystem->setHandlerFuncFast(_PREHASH_PacketAck, process_packet_ack, NULL); |
3352 | gMessageSystem->setHandlerFuncFast(_PREHASH_TemplateChecksumRequest, process_template_checksum_request, NULL); | 2527 | //gMessageSystem->setHandlerFuncFast(_PREHASH_LogMessages, process_log_messages, NULL); |
3353 | gMessageSystem->setHandlerFuncFast(_PREHASH_SecuredTemplateChecksumRequest, process_secured_template_checksum_request, NULL); | ||
3354 | gMessageSystem->setHandlerFuncFast(_PREHASH_LogMessages, process_log_messages, NULL); | ||
3355 | gMessageSystem->setHandlerFuncFast(_PREHASH_CreateTrustedCircuit, | 2528 | gMessageSystem->setHandlerFuncFast(_PREHASH_CreateTrustedCircuit, |
3356 | process_create_trusted_circuit, | 2529 | process_create_trusted_circuit, |
3357 | NULL); | 2530 | NULL); |
3358 | gMessageSystem->setHandlerFuncFast(_PREHASH_DenyTrustedCircuit, | 2531 | gMessageSystem->setHandlerFuncFast(_PREHASH_DenyTrustedCircuit, |
3359 | process_deny_trusted_circuit, | 2532 | process_deny_trusted_circuit, |
3360 | NULL); | 2533 | NULL); |
2534 | gMessageSystem->setHandlerFunc("Error", LLMessageSystem::processError); | ||
3361 | 2535 | ||
3362 | // We can hand this to the null_message_callback since it is a | 2536 | // We can hand this to the null_message_callback since it is a |
3363 | // trusted message, so it will automatically be denied if it isn't | 2537 | // trusted message, so it will automatically be denied if it isn't |
@@ -3471,11 +2645,11 @@ void LLMessageSystem::summarizeLogs(std::ostream& str) | |||
3471 | snprintf(buffer, MAX_STRING, "%35s%10s%10s%10s%10s", "Message", "Count", "Time", "Max", "Avg"); /* Flawfinder: ignore */ | 2645 | snprintf(buffer, MAX_STRING, "%35s%10s%10s%10s%10s", "Message", "Count", "Time", "Max", "Avg"); /* Flawfinder: ignore */ |
3472 | str << buffer << std:: endl; | 2646 | str << buffer << std:: endl; |
3473 | F32 avg; | 2647 | F32 avg; |
3474 | for (message_template_name_map_t::iterator iter = mMessageTemplates.begin(), | 2648 | for (message_template_name_map_t::const_iterator iter = mMessageTemplates.begin(), |
3475 | end = mMessageTemplates.end(); | 2649 | end = mMessageTemplates.end(); |
3476 | iter != end; iter++) | 2650 | iter != end; iter++) |
3477 | { | 2651 | { |
3478 | LLMessageTemplate* mt = iter->second; | 2652 | const LLMessageTemplate* mt = iter->second; |
3479 | if(mt->mTotalDecoded > 0) | 2653 | if(mt->mTotalDecoded > 0) |
3480 | { | 2654 | { |
3481 | avg = mt->mTotalDecodeTime / (F32)mt->mTotalDecoded; | 2655 | avg = mt->mTotalDecodeTime / (F32)mt->mTotalDecoded; |
@@ -3549,11 +2723,11 @@ void LLMessageSystem::dumpReceiveCounts() | |||
3549 | if(mNumMessageCounts > 0) | 2723 | if(mNumMessageCounts > 0) |
3550 | { | 2724 | { |
3551 | llinfos << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl; | 2725 | llinfos << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl; |
3552 | for (message_template_name_map_t::iterator iter = mMessageTemplates.begin(), | 2726 | for (message_template_name_map_t::const_iterator iter = mMessageTemplates.begin(), |
3553 | end = mMessageTemplates.end(); | 2727 | end = mMessageTemplates.end(); |
3554 | iter != end; iter++) | 2728 | iter != end; iter++) |
3555 | { | 2729 | { |
3556 | LLMessageTemplate* mt = iter->second; | 2730 | const LLMessageTemplate* mt = iter->second; |
3557 | if (mt->mReceiveCount > 0) | 2731 | if (mt->mReceiveCount > 0) |
3558 | { | 2732 | { |
3559 | llinfos << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes | 2733 | llinfos << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes |
@@ -3601,8 +2775,10 @@ S32 LLMessageSystem::zeroCodeAdjustCurrentSendTotal() | |||
3601 | 2775 | ||
3602 | if (! mMessageBuilder->isBuilt()) | 2776 | if (! mMessageBuilder->isBuilt()) |
3603 | { | 2777 | { |
3604 | mSendSize = mMessageBuilder->buildMessage(mSendBuffer, | 2778 | mSendSize = mMessageBuilder->buildMessage( |
3605 | MAX_BUFFER_SIZE); | 2779 | mSendBuffer, |
2780 | MAX_BUFFER_SIZE, | ||
2781 | 0); | ||
3606 | } | 2782 | } |
3607 | // TODO: babbage: remove this horror | 2783 | // TODO: babbage: remove this horror |
3608 | mMessageBuilder->setBuilt(FALSE); | 2784 | mMessageBuilder->setBuilt(FALSE); |
@@ -3616,7 +2792,7 @@ S32 LLMessageSystem::zeroCodeAdjustCurrentSendTotal() | |||
3616 | 2792 | ||
3617 | // skip the packet id field | 2793 | // skip the packet id field |
3618 | 2794 | ||
3619 | for (U32 i=0;i<LL_PACKET_ID_SIZE;i++) | 2795 | for (U32 ii = 0; ii < LL_PACKET_ID_SIZE; ++ii) |
3620 | { | 2796 | { |
3621 | count--; | 2797 | count--; |
3622 | inptr++; | 2798 | inptr++; |
@@ -3667,19 +2843,20 @@ S32 LLMessageSystem::zeroCodeAdjustCurrentSendTotal() | |||
3667 | 2843 | ||
3668 | 2844 | ||
3669 | 2845 | ||
3670 | S32 LLMessageSystem::zeroCodeExpand(U8 **data, S32 *data_size) | 2846 | S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size) |
3671 | { | 2847 | { |
3672 | 2848 | if ((*data_size ) < LL_MINIMUM_VALID_PACKET_SIZE) | |
3673 | if ((*data_size ) < LL_PACKET_ID_SIZE) | ||
3674 | { | 2849 | { |
3675 | llwarns << "zeroCodeExpand() called with data_size of " << *data_size << llendl; | 2850 | llwarns << "zeroCodeExpand() called with data_size of " << *data_size |
2851 | << llendl; | ||
3676 | } | 2852 | } |
3677 | 2853 | ||
3678 | mTotalBytesIn += *data_size; | 2854 | mTotalBytesIn += *data_size; |
3679 | 2855 | ||
3680 | if (!(*data[0] & LL_ZERO_CODE_FLAG)) // if we're not zero-coded, just go 'way | 2856 | // if we're not zero-coded, simply return. |
2857 | if (!(*data[0] & LL_ZERO_CODE_FLAG)) | ||
3681 | { | 2858 | { |
3682 | return(0); | 2859 | return 0; |
3683 | } | 2860 | } |
3684 | 2861 | ||
3685 | S32 in_size = *data_size; | 2862 | S32 in_size = *data_size; |
@@ -3695,7 +2872,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8 **data, S32 *data_size) | |||
3695 | 2872 | ||
3696 | // skip the packet id field | 2873 | // skip the packet id field |
3697 | 2874 | ||
3698 | for (U32 i=0;i<LL_PACKET_ID_SIZE;i++) | 2875 | for (U32 ii = 0; ii < LL_PACKET_ID_SIZE; ++ii) |
3699 | { | 2876 | { |
3700 | count--; | 2877 | count--; |
3701 | *outptr++ = *inptr++; | 2878 | *outptr++ = *inptr++; |
@@ -3789,14 +2966,16 @@ bool LLMessageSystem::callHandler(const char *name, | |||
3789 | bool trustedSource, LLMessageSystem* msg) | 2966 | bool trustedSource, LLMessageSystem* msg) |
3790 | { | 2967 | { |
3791 | name = gMessageStringTable.getString(name); | 2968 | name = gMessageStringTable.getString(name); |
3792 | LLMessageTemplate* msg_template = mMessageTemplates[(char*)name]; | 2969 | message_template_name_map_t::const_iterator iter; |
3793 | if (!msg_template) | 2970 | iter = mMessageTemplates.find(name); |
2971 | if(iter == mMessageTemplates.end()) | ||
3794 | { | 2972 | { |
3795 | llwarns << "LLMessageSystem::callHandler: unknown message " | 2973 | llwarns << "LLMessageSystem::callHandler: unknown message " |
3796 | << name << llendl; | 2974 | << name << llendl; |
3797 | return false; | 2975 | return false; |
3798 | } | 2976 | } |
3799 | 2977 | ||
2978 | const LLMessageTemplate* msg_template = iter->second; | ||
3800 | if (msg_template->isBanned(trustedSource)) | 2979 | if (msg_template->isBanned(trustedSource)) |
3801 | { | 2980 | { |
3802 | llwarns << "LLMessageSystem::callHandler: banned message " | 2981 | llwarns << "LLMessageSystem::callHandler: banned message " |
@@ -3852,14 +3031,13 @@ BOOL LLMessageSystem::isCircuitCodeKnown(U32 code) const | |||
3852 | 3031 | ||
3853 | BOOL LLMessageSystem::isMessageFast(const char *msg) | 3032 | BOOL LLMessageSystem::isMessageFast(const char *msg) |
3854 | { | 3033 | { |
3855 | return(msg == mMessageReader->getMessageName()); | 3034 | return msg == mMessageReader->getMessageName(); |
3856 | } | 3035 | } |
3857 | 3036 | ||
3858 | 3037 | ||
3859 | char* LLMessageSystem::getMessageName() | 3038 | char* LLMessageSystem::getMessageName() |
3860 | { | 3039 | { |
3861 | const char* name = mMessageReader->getMessageName(); | 3040 | return const_cast<char*>(mMessageReader->getMessageName()); |
3862 | return name[0] == '\0'? NULL : const_cast<char*>(name); | ||
3863 | } | 3041 | } |
3864 | 3042 | ||
3865 | const LLUUID& LLMessageSystem::getSenderID() const | 3043 | const LLUUID& LLMessageSystem::getSenderID() const |
@@ -4188,120 +3366,6 @@ void LLMessageSystem::dumpPacketToLog() | |||
4188 | } | 3366 | } |
4189 | } | 3367 | } |
4190 | 3368 | ||
4191 | //static | ||
4192 | BOOL LLMessageSystem::isTemplateConfirmed() | ||
4193 | { | ||
4194 | return gMessageSystem->mTemplateConfirmed; | ||
4195 | } | ||
4196 | |||
4197 | //static | ||
4198 | BOOL LLMessageSystem::doesTemplateMatch() | ||
4199 | { | ||
4200 | if (!isTemplateConfirmed()) | ||
4201 | { | ||
4202 | return FALSE; | ||
4203 | } | ||
4204 | return gMessageSystem->mTemplateMatches; | ||
4205 | } | ||
4206 | |||
4207 | //static | ||
4208 | void LLMessageSystem::sendMessageTemplateChecksum(const LLHost ¤tHost) | ||
4209 | { | ||
4210 | gMessageSystem->mTemplateConfirmed = FALSE; | ||
4211 | gMessageSystem->mTemplateMatches = FALSE; | ||
4212 | gMessageSystem->newMessageFast(_PREHASH_TemplateChecksumRequest); | ||
4213 | // Don't use ping-based retry | ||
4214 | gMessageSystem->sendReliable(currentHost, 40, FALSE, 3, NULL, NULL); | ||
4215 | } | ||
4216 | |||
4217 | //static | ||
4218 | void LLMessageSystem::processMessageTemplateChecksumReply(LLMessageSystem *msg, | ||
4219 | void** user_data) | ||
4220 | { | ||
4221 | U32 remote_template_checksum = 0; | ||
4222 | msg->getU32Fast(_PREHASH_DataBlock, _PREHASH_Checksum, remote_template_checksum); | ||
4223 | msg->mTemplateConfirmed = TRUE; | ||
4224 | if ((remote_template_checksum) != msg->mMessageFileChecksum) | ||
4225 | { | ||
4226 | llwarns << "out of sync message template!" << llendl; | ||
4227 | |||
4228 | msg->mTemplateMatches = FALSE; | ||
4229 | msg->newMessageFast(_PREHASH_CloseCircuit); | ||
4230 | msg->sendMessage(msg->getSender()); | ||
4231 | return; | ||
4232 | } | ||
4233 | |||
4234 | msg->mTemplateMatches = TRUE; | ||
4235 | llinfos << "According to " << msg->getSender() | ||
4236 | << " the message template is current!" | ||
4237 | << llendl; | ||
4238 | } | ||
4239 | |||
4240 | //static | ||
4241 | void LLMessageSystem::sendSecureMessageTemplateChecksum(const LLHost& host) | ||
4242 | { | ||
4243 | // generate an token for use during template checksum requests to | ||
4244 | // prevent DOS attacks from injected bad template checksum replies. | ||
4245 | LLUUID *template_tokenp = new LLUUID; | ||
4246 | template_tokenp->generate(); | ||
4247 | lldebugs << "random token: " << *template_tokenp << llendl; | ||
4248 | |||
4249 | // register the handler for the reply while saving off template_token | ||
4250 | gMessageSystem->setHandlerFuncFast(_PREHASH_TemplateChecksumReply, | ||
4251 | LLMessageSystem::processSecureTemplateChecksumReply, | ||
4252 | (void**)template_tokenp); | ||
4253 | |||
4254 | // send checksum request | ||
4255 | gMessageSystem->mTemplateConfirmed = FALSE; | ||
4256 | gMessageSystem->newMessageFast(_PREHASH_SecuredTemplateChecksumRequest); | ||
4257 | gMessageSystem->nextBlockFast(_PREHASH_TokenBlock); | ||
4258 | gMessageSystem->addUUIDFast(_PREHASH_Token, *template_tokenp); | ||
4259 | gMessageSystem->sendReliable(host); | ||
4260 | } | ||
4261 | |||
4262 | //static | ||
4263 | void LLMessageSystem::processSecureTemplateChecksumReply(LLMessageSystem *msg, | ||
4264 | void** user_data) | ||
4265 | { | ||
4266 | // copy the token out into the stack and delete allocated memory | ||
4267 | LLUUID template_token = *((LLUUID*)user_data); | ||
4268 | delete user_data; | ||
4269 | |||
4270 | LLUUID received_token; | ||
4271 | msg->getUUID("TokenBlock", "Token", received_token); | ||
4272 | |||
4273 | if(received_token != template_token) | ||
4274 | { | ||
4275 | llwarns << "Incorrect token in template checksum reply: " | ||
4276 | << received_token << llendl; | ||
4277 | //return do_normal_idle; | ||
4278 | return; | ||
4279 | } | ||
4280 | |||
4281 | U32 remote_template_checksum = 0; | ||
4282 | U8 major_version = 0; | ||
4283 | U8 minor_version = 0; | ||
4284 | U8 patch_version = 0; | ||
4285 | U8 server_version = 0; | ||
4286 | U32 flags = 0x0; | ||
4287 | msg->getU32("DataBlock", "Checksum", remote_template_checksum); | ||
4288 | msg->getU8 ("DataBlock", "MajorVersion", major_version); | ||
4289 | msg->getU8 ("DataBlock", "MinorVersion", minor_version); | ||
4290 | msg->getU8 ("DataBlock", "PatchVersion", patch_version); | ||
4291 | msg->getU8 ("DataBlock", "ServerVersion", server_version); | ||
4292 | msg->getU32("DataBlock", "Flags", flags); | ||
4293 | |||
4294 | msg->mTemplateConfirmed = TRUE; | ||
4295 | if (remote_template_checksum != gMessageSystem->mMessageFileChecksum) | ||
4296 | { | ||
4297 | llinfos << "Message template out of sync" << llendl; | ||
4298 | msg->mTemplateMatches = FALSE; | ||
4299 | } | ||
4300 | else | ||
4301 | { | ||
4302 | msg->mTemplateMatches = TRUE; | ||
4303 | } | ||
4304 | } | ||
4305 | 3369 | ||
4306 | //static | 3370 | //static |
4307 | U64 LLMessageSystem::getMessageTimeUsecs(const BOOL update) | 3371 | U64 LLMessageSystem::getMessageTimeUsecs(const BOOL update) |
@@ -4352,14 +3416,32 @@ typedef std::map<const char*, LLMessageBuilder*> BuilderMap; | |||
4352 | 3416 | ||
4353 | void LLMessageSystem::newMessageFast(const char *name) | 3417 | void LLMessageSystem::newMessageFast(const char *name) |
4354 | { | 3418 | { |
4355 | if(LLMessageConfig::isMessageBuiltTemplate(name)) | 3419 | LLMessageConfig::Flavor message_flavor = |
3420 | LLMessageConfig::getMessageFlavor(name); | ||
3421 | LLMessageConfig::Flavor server_flavor = | ||
3422 | LLMessageConfig::getServerDefaultFlavor(); | ||
3423 | |||
3424 | if(message_flavor == LLMessageConfig::TEMPLATE_FLAVOR) | ||
4356 | { | 3425 | { |
4357 | mMessageBuilder = mTemplateMessageBuilder; | 3426 | mMessageBuilder = mTemplateMessageBuilder; |
4358 | } | 3427 | } |
4359 | else | 3428 | else if (message_flavor == LLMessageConfig::LLSD_FLAVOR) |
4360 | { | 3429 | { |
4361 | mMessageBuilder = mLLSDMessageBuilder; | 3430 | mMessageBuilder = mLLSDMessageBuilder; |
4362 | } | 3431 | } |
3432 | // NO_FLAVOR | ||
3433 | else | ||
3434 | { | ||
3435 | if (server_flavor == LLMessageConfig::LLSD_FLAVOR) | ||
3436 | { | ||
3437 | mMessageBuilder = mLLSDMessageBuilder; | ||
3438 | } | ||
3439 | // TEMPLATE_FLAVOR or NO_FLAVOR | ||
3440 | else | ||
3441 | { | ||
3442 | mMessageBuilder = mTemplateMessageBuilder; | ||
3443 | } | ||
3444 | } | ||
4363 | mSendReliable = FALSE; | 3445 | mSendReliable = FALSE; |
4364 | mMessageBuilder->newMessage(name); | 3446 | mMessageBuilder->newMessage(name); |
4365 | } | 3447 | } |
@@ -4822,6 +3904,10 @@ void LLMessageSystem::getIPPort(const char *block, const char *var, U16 &u, | |||
4822 | void LLMessageSystem::getStringFast(const char *block, const char *var, | 3904 | void LLMessageSystem::getStringFast(const char *block, const char *var, |
4823 | S32 buffer_size, char *s, S32 blocknum) | 3905 | S32 buffer_size, char *s, S32 blocknum) |
4824 | { | 3906 | { |
3907 | if(buffer_size <= 0) | ||
3908 | { | ||
3909 | llwarns << "buffer_size <= 0" << llendl; | ||
3910 | } | ||
4825 | mMessageReader->getString(block, var, buffer_size, s, blocknum); | 3911 | mMessageReader->getString(block, var, buffer_size, s, blocknum); |
4826 | } | 3912 | } |
4827 | 3913 | ||
diff --git a/linden/indra/llmessage/message.h b/linden/indra/llmessage/message.h index 0a55485..6c834f7 100644 --- a/linden/indra/llmessage/message.h +++ b/linden/indra/llmessage/message.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @FILE message.h | 2 | * @file message.h |
3 | * @brief LLMessageSystem class header file | 3 | * @brief LLMessageSystem class header file |
4 | * | 4 | * |
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | 5 | * Copyright (c) 2001-2007, Linden Research, Inc. |
@@ -50,11 +50,13 @@ | |||
50 | #include "lltimer.h" | 50 | #include "lltimer.h" |
51 | #include "llpacketring.h" | 51 | #include "llpacketring.h" |
52 | #include "llhost.h" | 52 | #include "llhost.h" |
53 | #include "llhttpclient.h" | ||
53 | #include "llhttpnode.h" | 54 | #include "llhttpnode.h" |
54 | #include "llpacketack.h" | 55 | #include "llpacketack.h" |
55 | #include "message_prehash.h" | 56 | #include "message_prehash.h" |
56 | #include "llstl.h" | 57 | #include "llstl.h" |
57 | #include "llmsgvariabletype.h" | 58 | #include "llmsgvariabletype.h" |
59 | #include "llmsgvariabletype.h" | ||
58 | 60 | ||
59 | const U32 MESSAGE_MAX_STRINGS_LENGTH = 64; | 61 | const U32 MESSAGE_MAX_STRINGS_LENGTH = 64; |
60 | const U32 MESSAGE_NUMBER_OF_HASH_BUCKETS = 8192; | 62 | const U32 MESSAGE_NUMBER_OF_HASH_BUCKETS = 8192; |
@@ -126,7 +128,16 @@ const U8 LL_RELIABLE_FLAG = 0x40; | |||
126 | const U8 LL_RESENT_FLAG = 0x20; | 128 | const U8 LL_RESENT_FLAG = 0x20; |
127 | const U8 LL_ACK_FLAG = 0x10; | 129 | const U8 LL_ACK_FLAG = 0x10; |
128 | 130 | ||
129 | const S32 LL_MINIMUM_VALID_PACKET_SIZE = LL_PACKET_ID_SIZE + 1; // 4 bytes id + 1 byte message name (high) | 131 | // 1 byte flags, 4 bytes sequence, 1 byte offset + 1 byte message name (high) |
132 | const S32 LL_MINIMUM_VALID_PACKET_SIZE = LL_PACKET_ID_SIZE + 1; | ||
133 | enum EPacketHeaderLayout | ||
134 | { | ||
135 | PHL_FLAGS = 0, | ||
136 | PHL_PACKET_ID = 1, | ||
137 | PHL_OFFSET = 5, | ||
138 | PHL_NAME = 6 | ||
139 | }; | ||
140 | |||
130 | 141 | ||
131 | const S32 LL_DEFAULT_RELIABLE_RETRIES = 3; | 142 | const S32 LL_DEFAULT_RELIABLE_RETRIES = 3; |
132 | const F32 LL_MINIMUM_RELIABLE_TIMEOUT_SECONDS = 1.f; | 143 | const F32 LL_MINIMUM_RELIABLE_TIMEOUT_SECONDS = 1.f; |
@@ -155,8 +166,6 @@ class LLUUID; | |||
155 | class LLMessageSystem; | 166 | class LLMessageSystem; |
156 | class LLPumpIO; | 167 | class LLPumpIO; |
157 | 168 | ||
158 | // message data pieces are used to collect the data called for by the message template | ||
159 | |||
160 | // message system exceptional condition handlers. | 169 | // message system exceptional condition handlers. |
161 | enum EMessageException | 170 | enum EMessageException |
162 | { | 171 | { |
@@ -168,6 +177,7 @@ enum EMessageException | |||
168 | typedef void (*msg_exception_callback)(LLMessageSystem*,void*,EMessageException); | 177 | typedef void (*msg_exception_callback)(LLMessageSystem*,void*,EMessageException); |
169 | 178 | ||
170 | 179 | ||
180 | // message data pieces are used to collect the data called for by the message template | ||
171 | class LLMsgData; | 181 | class LLMsgData; |
172 | class LLMsgBlkData; | 182 | class LLMsgBlkData; |
173 | class LLMessageTemplate; | 183 | class LLMessageTemplate; |
@@ -180,6 +190,8 @@ class LLMessageReader; | |||
180 | class LLTemplateMessageReader; | 190 | class LLTemplateMessageReader; |
181 | class LLSDMessageReader; | 191 | class LLSDMessageReader; |
182 | 192 | ||
193 | |||
194 | |||
183 | class LLUseCircuitCodeResponder | 195 | class LLUseCircuitCodeResponder |
184 | { | 196 | { |
185 | LOG_CLASS(LLMessageSystem); | 197 | LOG_CLASS(LLMessageSystem); |
@@ -204,7 +216,6 @@ class LLMessageSystem | |||
204 | // Set this flag to TRUE when you want *very* verbose logs. | 216 | // Set this flag to TRUE when you want *very* verbose logs. |
205 | BOOL mVerboseLog; | 217 | BOOL mVerboseLog; |
206 | 218 | ||
207 | U32 mMessageFileChecksum; | ||
208 | F32 mMessageFileVersionNumber; | 219 | F32 mMessageFileVersionNumber; |
209 | 220 | ||
210 | typedef std::map<const char *, LLMessageTemplate*> message_template_name_map_t; | 221 | typedef std::map<const char *, LLMessageTemplate*> message_template_name_map_t; |
@@ -450,8 +461,11 @@ public: | |||
450 | void forwardReliable(const LLHost &host); | 461 | void forwardReliable(const LLHost &host); |
451 | void forwardReliable(const U32 circuit_code); | 462 | void forwardReliable(const U32 circuit_code); |
452 | 463 | ||
464 | LLHTTPClient::ResponderPtr createResponder(const std::string& name); | ||
453 | S32 sendMessage(const LLHost &host); | 465 | S32 sendMessage(const LLHost &host); |
454 | S32 sendMessage(const U32 circuit); | 466 | S32 sendMessage(const U32 circuit); |
467 | S32 sendMessage(const LLHost &host, const char* name, | ||
468 | const LLSD& message); | ||
455 | 469 | ||
456 | // BOOL decodeData(const U8 *buffer, const LLHost &host); | 470 | // BOOL decodeData(const U8 *buffer, const LLHost &host); |
457 | 471 | ||
@@ -528,6 +542,15 @@ public: | |||
528 | // The actual sending is done by reallySendDenyTrustedCircuit() | 542 | // The actual sending is done by reallySendDenyTrustedCircuit() |
529 | void sendDenyTrustedCircuit(const LLHost &host); | 543 | void sendDenyTrustedCircuit(const LLHost &host); |
530 | 544 | ||
545 | /** Return false if host is unknown or untrusted */ | ||
546 | bool isTrustedSender(const LLHost& host) const; | ||
547 | |||
548 | /** Return false true if name is unknown or untrusted */ | ||
549 | bool isTrustedMessage(const std::string& name) const; | ||
550 | |||
551 | /** Return false true if name is unknown or trusted */ | ||
552 | bool isUntrustedMessage(const std::string& name) const; | ||
553 | |||
531 | private: | 554 | private: |
532 | // A list of the circuits that need to be sent DenyTrustedCircuit messages. | 555 | // A list of the circuits that need to be sent DenyTrustedCircuit messages. |
533 | typedef std::set<LLHost> host_set_t; | 556 | typedef std::set<LLHost> host_set_t; |
@@ -537,7 +560,6 @@ private: | |||
537 | // related to sendDenyTrustedCircuit() | 560 | // related to sendDenyTrustedCircuit() |
538 | void reallySendDenyTrustedCircuit(const LLHost &host); | 561 | void reallySendDenyTrustedCircuit(const LLHost &host); |
539 | 562 | ||
540 | |||
541 | public: | 563 | public: |
542 | // Use this to establish trust to and from a host. This blocks | 564 | // Use this to establish trust to and from a host. This blocks |
543 | // until trust has been established, and probably should only be | 565 | // until trust has been established, and probably should only be |
@@ -594,15 +616,6 @@ public: | |||
594 | void setMaxMessageTime(const F32 seconds); // Max time to process messages before warning and dumping (neg to disable) | 616 | void setMaxMessageTime(const F32 seconds); // Max time to process messages before warning and dumping (neg to disable) |
595 | void setMaxMessageCounts(const S32 num); // Max number of messages before dumping (neg to disable) | 617 | void setMaxMessageCounts(const S32 num); // Max number of messages before dumping (neg to disable) |
596 | 618 | ||
597 | // statics | ||
598 | static BOOL isTemplateConfirmed(); | ||
599 | static BOOL doesTemplateMatch(); | ||
600 | static void sendMessageTemplateChecksum(const LLHost&); | ||
601 | static void processMessageTemplateChecksumReply(LLMessageSystem *msg, | ||
602 | void** user_data); | ||
603 | static void sendSecureMessageTemplateChecksum(const LLHost&); | ||
604 | static void processSecureTemplateChecksumReply(LLMessageSystem *msg, | ||
605 | void** user_data); | ||
606 | static U64 getMessageTimeUsecs(const BOOL update = FALSE); // Get the current message system time in microseconds | 619 | static U64 getMessageTimeUsecs(const BOOL update = FALSE); // Get the current message system time in microseconds |
607 | static F64 getMessageTimeSeconds(const BOOL update = FALSE); // Get the current message system time in seconds | 620 | static F64 getMessageTimeSeconds(const BOOL update = FALSE); // Get the current message system time in seconds |
608 | 621 | ||
@@ -613,6 +626,7 @@ public: | |||
613 | //static void processAssignCircuitCode(LLMessageSystem* msg, void**); | 626 | //static void processAssignCircuitCode(LLMessageSystem* msg, void**); |
614 | static void processAddCircuitCode(LLMessageSystem* msg, void**); | 627 | static void processAddCircuitCode(LLMessageSystem* msg, void**); |
615 | static void processUseCircuitCode(LLMessageSystem* msg, void**); | 628 | static void processUseCircuitCode(LLMessageSystem* msg, void**); |
629 | static void processError(LLMessageSystem* msg, void**); | ||
616 | 630 | ||
617 | // dispatch llsd message to http node tree | 631 | // dispatch llsd message to http node tree |
618 | static void dispatch(const std::string& msg_name, | 632 | static void dispatch(const std::string& msg_name, |
@@ -623,13 +637,33 @@ public: | |||
623 | 637 | ||
624 | void setMessageBans(const LLSD& trusted, const LLSD& untrusted); | 638 | void setMessageBans(const LLSD& trusted, const LLSD& untrusted); |
625 | 639 | ||
640 | /** | ||
641 | * @brief send an error message to the host. This is a helper method. | ||
642 | * | ||
643 | * @param host Destination host. | ||
644 | * @param agent_id Destination agent id (may be null) | ||
645 | * @param code An HTTP status compatible error code. | ||
646 | * @param token A specific short string based message | ||
647 | * @param id The transactionid/uniqueid/sessionid whatever. | ||
648 | * @param system The hierarchical path to the system (255 bytes) | ||
649 | * @param message Human readable message (1200 bytes) | ||
650 | * @param data Extra info. | ||
651 | * @return Returns value returned from sendReliable(). | ||
652 | */ | ||
653 | S32 sendError( | ||
654 | const LLHost& host, | ||
655 | const LLUUID& agent_id, | ||
656 | S32 code, | ||
657 | const std::string& token, | ||
658 | const LLUUID& id, | ||
659 | const std::string& system, | ||
660 | const std::string& message, | ||
661 | const LLSD& data); | ||
662 | |||
626 | // Check UDP messages and pump http_pump to receive HTTP messages. | 663 | // Check UDP messages and pump http_pump to receive HTTP messages. |
627 | bool checkAllMessages(S64 frame_count, LLPumpIO* http_pump); | 664 | bool checkAllMessages(S64 frame_count, LLPumpIO* http_pump); |
628 | 665 | ||
629 | private: | 666 | private: |
630 | // data used in those internal handlers | ||
631 | BOOL mTemplateConfirmed; | ||
632 | BOOL mTemplateMatches; | ||
633 | 667 | ||
634 | // The mCircuitCodes is a map from circuit codes to session | 668 | // The mCircuitCodes is a map from circuit codes to session |
635 | // ids. This allows us to verify sessions on connect. | 669 | // ids. This allows us to verify sessions on connect. |
@@ -639,7 +673,7 @@ private: | |||
639 | // Viewers need to track a process session in order to make sure | 673 | // Viewers need to track a process session in order to make sure |
640 | // that no one gives them a bad circuit code. | 674 | // that no one gives them a bad circuit code. |
641 | LLUUID mSessionID; | 675 | LLUUID mSessionID; |
642 | 676 | ||
643 | void addTemplate(LLMessageTemplate *templatep); | 677 | void addTemplate(LLMessageTemplate *templatep); |
644 | void clearReceiveState(); | 678 | void clearReceiveState(); |
645 | BOOL decodeTemplate( const U8* buffer, S32 buffer_size, LLMessageTemplate** msg_template ); | 679 | BOOL decodeTemplate( const U8* buffer, S32 buffer_size, LLMessageTemplate** msg_template ); |
@@ -710,6 +744,10 @@ private: | |||
710 | 744 | ||
711 | bool callHandler(const char *name, bool trustedSource, | 745 | bool callHandler(const char *name, bool trustedSource, |
712 | LLMessageSystem* msg); | 746 | LLMessageSystem* msg); |
747 | |||
748 | |||
749 | /** Find, create or revive circuit for host as needed */ | ||
750 | LLCircuitData* findCircuit(const LLHost& host, bool resetPacketId); | ||
713 | }; | 751 | }; |
714 | 752 | ||
715 | 753 | ||
diff --git a/linden/indra/llmessage/message_prehash.cpp b/linden/indra/llmessage/message_prehash.cpp index 3e26726..fbe5c33 100644 --- a/linden/indra/llmessage/message_prehash.cpp +++ b/linden/indra/llmessage/message_prehash.cpp | |||
@@ -27,14 +27,14 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | /** | 29 | /** |
30 | * Generated from message template version number 1.053 | 30 | * Generated from message template version number 2.000 |
31 | */ | 31 | */ |
32 | #include "linden_common.h" | 32 | #include "linden_common.h" |
33 | #include "message.h" | 33 | #include "message.h" |
34 | 34 | ||
35 | 35 | ||
36 | 36 | ||
37 | F32 gPrehashVersionNumber = 1.053f; | 37 | F32 gPrehashVersionNumber = 2.000f; |
38 | 38 | ||
39 | char * _PREHASH_X; | 39 | char * _PREHASH_X; |
40 | char * _PREHASH_Y; | 40 | char * _PREHASH_Y; |
@@ -59,7 +59,6 @@ char * _PREHASH_ScriptAnswerYes; | |||
59 | char * _PREHASH_PartnerID; | 59 | char * _PREHASH_PartnerID; |
60 | char * _PREHASH_DirLandQuery; | 60 | char * _PREHASH_DirLandQuery; |
61 | char * _PREHASH_TeleportStart; | 61 | char * _PREHASH_TeleportStart; |
62 | char * _PREHASH_LogMessages; | ||
63 | char * _PREHASH_AboutText; | 62 | char * _PREHASH_AboutText; |
64 | char * _PREHASH_VisualParam; | 63 | char * _PREHASH_VisualParam; |
65 | char * _PREHASH_GroupPrims; | 64 | char * _PREHASH_GroupPrims; |
@@ -67,10 +66,8 @@ char * _PREHASH_SelectedPrims; | |||
67 | char * _PREHASH_ID; | 66 | char * _PREHASH_ID; |
68 | char * _PREHASH_UUIDNameRequest; | 67 | char * _PREHASH_UUIDNameRequest; |
69 | char * _PREHASH_UUIDGroupNameRequest; | 68 | char * _PREHASH_UUIDGroupNameRequest; |
70 | char * _PREHASH_MoneyTransactionsRequest; | ||
71 | char * _PREHASH_GroupAccountTransactionsRequest; | 69 | char * _PREHASH_GroupAccountTransactionsRequest; |
72 | char * _PREHASH_MapNameRequest; | 70 | char * _PREHASH_MapNameRequest; |
73 | char * _PREHASH_MailTaskSimRequest; | ||
74 | char * _PREHASH_UpdateSimulator; | 71 | char * _PREHASH_UpdateSimulator; |
75 | char * _PREHASH_BillableFactor; | 72 | char * _PREHASH_BillableFactor; |
76 | char * _PREHASH_ObjectBonusFactor; | 73 | char * _PREHASH_ObjectBonusFactor; |
@@ -80,7 +77,6 @@ char * _PREHASH_ConfirmEnableSimulator; | |||
80 | char * _PREHASH_LayerType; | 77 | char * _PREHASH_LayerType; |
81 | char * _PREHASH_OwnerRole; | 78 | char * _PREHASH_OwnerRole; |
82 | char * _PREHASH_ParcelOverlay; | 79 | char * _PREHASH_ParcelOverlay; |
83 | char * _PREHASH_AdjustBalance; | ||
84 | char * _PREHASH_GroupOwned; | 80 | char * _PREHASH_GroupOwned; |
85 | char * _PREHASH_IP; | 81 | char * _PREHASH_IP; |
86 | char * _PREHASH_ChatFromViewer; | 82 | char * _PREHASH_ChatFromViewer; |
@@ -115,8 +111,8 @@ char * _PREHASH_SensedData; | |||
115 | char * _PREHASH_UpdateBlock; | 111 | char * _PREHASH_UpdateBlock; |
116 | char * _PREHASH_ClassifiedGodDelete; | 112 | char * _PREHASH_ClassifiedGodDelete; |
117 | char * _PREHASH_ObjectGrabUpdate; | 113 | char * _PREHASH_ObjectGrabUpdate; |
118 | char * _PREHASH_TaxDate; | ||
119 | char * _PREHASH_LocationPos; | 114 | char * _PREHASH_LocationPos; |
115 | char * _PREHASH_TaxDate; | ||
120 | char * _PREHASH_StartDateTime; | 116 | char * _PREHASH_StartDateTime; |
121 | char * _PREHASH_ObjectUpdateCached; | 117 | char * _PREHASH_ObjectUpdateCached; |
122 | char * _PREHASH_Packets; | 118 | char * _PREHASH_Packets; |
@@ -148,14 +144,11 @@ char * _PREHASH_AABBMin; | |||
148 | char * _PREHASH_ClassifiedFlags; | 144 | char * _PREHASH_ClassifiedFlags; |
149 | char * _PREHASH_ControlFlags; | 145 | char * _PREHASH_ControlFlags; |
150 | char * _PREHASH_TeleportRequest; | 146 | char * _PREHASH_TeleportRequest; |
151 | char * _PREHASH_SpaceLocationTeleportRequest; | ||
152 | char * _PREHASH_LeaderBoardRequest; | ||
153 | char * _PREHASH_ScriptTeleportRequest; | 147 | char * _PREHASH_ScriptTeleportRequest; |
148 | char * _PREHASH_EstateCovenantRequest; | ||
154 | char * _PREHASH_DateUTC; | 149 | char * _PREHASH_DateUTC; |
155 | char * _PREHASH_TaskIDs; | 150 | char * _PREHASH_TaskIDs; |
156 | char * _PREHASH_EstateCovenantRequest; | ||
157 | char * _PREHASH_RequestResult; | 151 | char * _PREHASH_RequestResult; |
158 | char * _PREHASH_ReputationAgentAssign; | ||
159 | char * _PREHASH_CanAcceptAgents; | 152 | char * _PREHASH_CanAcceptAgents; |
160 | char * _PREHASH_ObjectSaleInfo; | 153 | char * _PREHASH_ObjectSaleInfo; |
161 | char * _PREHASH_KillChildAgents; | 154 | char * _PREHASH_KillChildAgents; |
@@ -167,7 +160,6 @@ char * _PREHASH_InfoBlock; | |||
167 | char * _PREHASH_OwnershipCost; | 160 | char * _PREHASH_OwnershipCost; |
168 | char * _PREHASH_AvatarNotesUpdate; | 161 | char * _PREHASH_AvatarNotesUpdate; |
169 | char * _PREHASH_PID; | 162 | char * _PREHASH_PID; |
170 | char * _PREHASH_TimeString; | ||
171 | char * _PREHASH_DirPopularReply; | 163 | char * _PREHASH_DirPopularReply; |
172 | char * _PREHASH_TerrainHeightRange00; | 164 | char * _PREHASH_TerrainHeightRange00; |
173 | char * _PREHASH_SimData; | 165 | char * _PREHASH_SimData; |
@@ -193,7 +185,6 @@ char * _PREHASH_Objects; | |||
193 | char * _PREHASH_URL; | 185 | char * _PREHASH_URL; |
194 | char * _PREHASH_CreationDate; | 186 | char * _PREHASH_CreationDate; |
195 | char * _PREHASH_JointPivot; | 187 | char * _PREHASH_JointPivot; |
196 | char * _PREHASH_RateeID; | ||
197 | char * _PREHASH_FPS; | 188 | char * _PREHASH_FPS; |
198 | char * _PREHASH_HasTelehub; | 189 | char * _PREHASH_HasTelehub; |
199 | char * _PREHASH_PathEnd; | 190 | char * _PREHASH_PathEnd; |
@@ -218,7 +209,6 @@ char * _PREHASH_GroupNoticesListReply; | |||
218 | char * _PREHASH_ParcelAccessListReply; | 209 | char * _PREHASH_ParcelAccessListReply; |
219 | char * _PREHASH_RpcChannelReply; | 210 | char * _PREHASH_RpcChannelReply; |
220 | char * _PREHASH_RegionPresenceResponse; | 211 | char * _PREHASH_RegionPresenceResponse; |
221 | char * _PREHASH_AgentPresenceResponse; | ||
222 | char * _PREHASH_CharterMember; | 212 | char * _PREHASH_CharterMember; |
223 | char * _PREHASH_EdgeData; | 213 | char * _PREHASH_EdgeData; |
224 | char * _PREHASH_NameData; | 214 | char * _PREHASH_NameData; |
@@ -232,14 +222,12 @@ char * _PREHASH_Mag; | |||
232 | char * _PREHASH_ParcelPropertiesRequestByID; | 222 | char * _PREHASH_ParcelPropertiesRequestByID; |
233 | char * _PREHASH_ObjectLink; | 223 | char * _PREHASH_ObjectLink; |
234 | char * _PREHASH_RpcScriptReplyInbound; | 224 | char * _PREHASH_RpcScriptReplyInbound; |
235 | char * _PREHASH_BoardData; | ||
236 | char * _PREHASH_RezData; | 225 | char * _PREHASH_RezData; |
237 | char * _PREHASH_RemoveInventoryObjects; | 226 | char * _PREHASH_RemoveInventoryObjects; |
238 | char * _PREHASH_GroupProposalBallot; | 227 | char * _PREHASH_GroupProposalBallot; |
239 | char * _PREHASH_RPCServerIP; | 228 | char * _PREHASH_RPCServerIP; |
240 | char * _PREHASH_Far; | 229 | char * _PREHASH_Far; |
241 | char * _PREHASH_GodSessionID; | 230 | char * _PREHASH_GodSessionID; |
242 | char * _PREHASH_ViewerDigest; | ||
243 | char * _PREHASH_FLAboutText; | 231 | char * _PREHASH_FLAboutText; |
244 | char * _PREHASH_RegionHandshakeReply; | 232 | char * _PREHASH_RegionHandshakeReply; |
245 | char * _PREHASH_GroupActiveProposalItemReply; | 233 | char * _PREHASH_GroupActiveProposalItemReply; |
@@ -251,7 +239,6 @@ char * _PREHASH_Set; | |||
251 | char * _PREHASH_NewName; | 239 | char * _PREHASH_NewName; |
252 | char * _PREHASH_Key; | 240 | char * _PREHASH_Key; |
253 | char * _PREHASH_AgentID; | 241 | char * _PREHASH_AgentID; |
254 | char * _PREHASH_OnlineStatusRequest; | ||
255 | char * _PREHASH_EventNotificationRemoveRequest; | 242 | char * _PREHASH_EventNotificationRemoveRequest; |
256 | char * _PREHASH_NewFolderID; | 243 | char * _PREHASH_NewFolderID; |
257 | char * _PREHASH_Arc; | 244 | char * _PREHASH_Arc; |
@@ -263,7 +250,6 @@ char * _PREHASH_Top; | |||
263 | char * _PREHASH_MiscStats; | 250 | char * _PREHASH_MiscStats; |
264 | char * _PREHASH_ImageID; | 251 | char * _PREHASH_ImageID; |
265 | char * _PREHASH_DataPacket; | 252 | char * _PREHASH_DataPacket; |
266 | char * _PREHASH_ObjectDehinge; | ||
267 | char * _PREHASH_You; | 253 | char * _PREHASH_You; |
268 | char * _PREHASH_ScriptControlChange; | 254 | char * _PREHASH_ScriptControlChange; |
269 | char * _PREHASH_LoadURL; | 255 | char * _PREHASH_LoadURL; |
@@ -280,9 +266,9 @@ char * _PREHASH_Contribution; | |||
280 | char * _PREHASH_SetGroupContribution; | 266 | char * _PREHASH_SetGroupContribution; |
281 | char * _PREHASH_Offline; | 267 | char * _PREHASH_Offline; |
282 | char * _PREHASH_AgentIsNowWearing; | 268 | char * _PREHASH_AgentIsNowWearing; |
283 | char * _PREHASH_SecPerDay; | ||
284 | char * _PREHASH_Members; | 269 | char * _PREHASH_Members; |
285 | char * _PREHASH_FailedResends; | 270 | char * _PREHASH_FailedResends; |
271 | char * _PREHASH_SecPerDay; | ||
286 | char * _PREHASH_CameraCenter; | 272 | char * _PREHASH_CameraCenter; |
287 | char * _PREHASH_CameraLeftAxis; | 273 | char * _PREHASH_CameraLeftAxis; |
288 | char * _PREHASH_ExBlock; | 274 | char * _PREHASH_ExBlock; |
@@ -290,7 +276,6 @@ char * _PREHASH_Channel; | |||
290 | char * _PREHASH_NetTest; | 276 | char * _PREHASH_NetTest; |
291 | char * _PREHASH_DiscardLevel; | 277 | char * _PREHASH_DiscardLevel; |
292 | char * _PREHASH_LayerID; | 278 | char * _PREHASH_LayerID; |
293 | char * _PREHASH_RatorID; | ||
294 | char * _PREHASH_GrabOffset; | 279 | char * _PREHASH_GrabOffset; |
295 | char * _PREHASH_SimPort; | 280 | char * _PREHASH_SimPort; |
296 | char * _PREHASH_PricePerMeter; | 281 | char * _PREHASH_PricePerMeter; |
@@ -310,21 +295,16 @@ char * _PREHASH_SitName; | |||
310 | char * _PREHASH_RegionsVisited; | 295 | char * _PREHASH_RegionsVisited; |
311 | char * _PREHASH_DirClassifiedReply; | 296 | char * _PREHASH_DirClassifiedReply; |
312 | char * _PREHASH_AvatarClassifiedReply; | 297 | char * _PREHASH_AvatarClassifiedReply; |
313 | char * _PREHASH_ReputationIndividualReply; | ||
314 | char * _PREHASH_MediaURL; | 298 | char * _PREHASH_MediaURL; |
315 | char * _PREHASH_CompleteAgentMovement; | 299 | char * _PREHASH_CompleteAgentMovement; |
316 | char * _PREHASH_SpaceIP; | ||
317 | char * _PREHASH_ClassifiedID; | 300 | char * _PREHASH_ClassifiedID; |
318 | char * _PREHASH_LocalID; | 301 | char * _PREHASH_LocalID; |
302 | char * _PREHASH_SpaceIP; | ||
319 | char * _PREHASH_RemoveItem; | 303 | char * _PREHASH_RemoveItem; |
320 | char * _PREHASH_LogFailedMoneyTransaction; | 304 | char * _PREHASH_LogFailedMoneyTransaction; |
321 | char * _PREHASH_ViewerStartAuction; | 305 | char * _PREHASH_ViewerStartAuction; |
322 | char * _PREHASH_StartAuction; | 306 | char * _PREHASH_StartAuction; |
323 | char * _PREHASH_NameValueName; | ||
324 | char * _PREHASH_AngVelX; | ||
325 | char * _PREHASH_DuplicateFlags; | 307 | char * _PREHASH_DuplicateFlags; |
326 | char * _PREHASH_AngVelY; | ||
327 | char * _PREHASH_AngVelZ; | ||
328 | char * _PREHASH_TextColor; | 308 | char * _PREHASH_TextColor; |
329 | char * _PREHASH_SlaveID; | 309 | char * _PREHASH_SlaveID; |
330 | char * _PREHASH_Charter; | 310 | char * _PREHASH_Charter; |
@@ -335,21 +315,16 @@ char * _PREHASH_ParcelAuctions; | |||
335 | char * _PREHASH_OwnerIsGroup; | 315 | char * _PREHASH_OwnerIsGroup; |
336 | char * _PREHASH_NameValuePair; | 316 | char * _PREHASH_NameValuePair; |
337 | char * _PREHASH_RemoveNameValuePair; | 317 | char * _PREHASH_RemoveNameValuePair; |
338 | char * _PREHASH_GetNameValuePair; | ||
339 | char * _PREHASH_BulkUpdateInventory; | 318 | char * _PREHASH_BulkUpdateInventory; |
340 | char * _PREHASH_UpdateTaskInventory; | 319 | char * _PREHASH_UpdateTaskInventory; |
341 | char * _PREHASH_RemoveTaskInventory; | 320 | char * _PREHASH_RemoveTaskInventory; |
342 | char * _PREHASH_MoveTaskInventory; | 321 | char * _PREHASH_MoveTaskInventory; |
343 | char * _PREHASH_RequestTaskInventory; | 322 | char * _PREHASH_RequestTaskInventory; |
344 | char * _PREHASH_ReplyTaskInventory; | 323 | char * _PREHASH_ReplyTaskInventory; |
345 | char * _PREHASH_DeclineInventory; | ||
346 | char * _PREHASH_AggregatePermInventory; | 324 | char * _PREHASH_AggregatePermInventory; |
347 | char * _PREHASH_SimulatorInfo; | ||
348 | char * _PREHASH_MoneyTransactionsReply; | ||
349 | char * _PREHASH_GroupAccountTransactionsReply; | 325 | char * _PREHASH_GroupAccountTransactionsReply; |
350 | char * _PREHASH_MailTaskSimReply; | 326 | char * _PREHASH_SimulatorInfo; |
351 | char * _PREHASH_WearableData; | 327 | char * _PREHASH_WearableData; |
352 | char * _PREHASH_StatisticsData; | ||
353 | char * _PREHASH_Enabled; | 328 | char * _PREHASH_Enabled; |
354 | char * _PREHASH_Savings; | 329 | char * _PREHASH_Savings; |
355 | char * _PREHASH_SimulatorLoad; | 330 | char * _PREHASH_SimulatorLoad; |
@@ -361,15 +336,12 @@ char * _PREHASH_JoinGroupRequest; | |||
361 | char * _PREHASH_LeaveGroupRequest; | 336 | char * _PREHASH_LeaveGroupRequest; |
362 | char * _PREHASH_InviteGroupRequest; | 337 | char * _PREHASH_InviteGroupRequest; |
363 | char * _PREHASH_LiveHelpGroupRequest; | 338 | char * _PREHASH_LiveHelpGroupRequest; |
364 | char * _PREHASH_ServerVersion; | ||
365 | char * _PREHASH_PriceParcelClaimFactor; | 339 | char * _PREHASH_PriceParcelClaimFactor; |
366 | char * _PREHASH_BillableArea; | 340 | char * _PREHASH_BillableArea; |
367 | char * _PREHASH_ObjectID; | 341 | char * _PREHASH_ObjectID; |
368 | char * _PREHASH_ObjectFlagUpdate; | 342 | char * _PREHASH_ObjectFlagUpdate; |
369 | char * _PREHASH_GroupRoleUpdate; | 343 | char * _PREHASH_GroupRoleUpdate; |
370 | char * _PREHASH_RequestInventoryAsset; | 344 | char * _PREHASH_RequestInventoryAsset; |
371 | char * _PREHASH_RedoLand; | ||
372 | char * _PREHASH_TravelAccess; | ||
373 | char * _PREHASH_ChangedGrid; | 345 | char * _PREHASH_ChangedGrid; |
374 | char * _PREHASH_AgentDropGroup; | 346 | char * _PREHASH_AgentDropGroup; |
375 | char * _PREHASH_Details; | 347 | char * _PREHASH_Details; |
@@ -402,7 +374,6 @@ char * _PREHASH_Timestamp; | |||
402 | char * _PREHASH_GlobalPos; | 374 | char * _PREHASH_GlobalPos; |
403 | char * _PREHASH_GrabOffsetInitial; | 375 | char * _PREHASH_GrabOffsetInitial; |
404 | char * _PREHASH_IsTrial; | 376 | char * _PREHASH_IsTrial; |
405 | char * _PREHASH_FinalizeLogout; | ||
406 | char * _PREHASH_ObjectDuplicateOnRay; | 377 | char * _PREHASH_ObjectDuplicateOnRay; |
407 | char * _PREHASH_GroupMembershipCount; | 378 | char * _PREHASH_GroupMembershipCount; |
408 | char * _PREHASH_MethodData; | 379 | char * _PREHASH_MethodData; |
@@ -438,32 +409,26 @@ char * _PREHASH_TaskData; | |||
438 | char * _PREHASH_SimWideMaxPrims; | 409 | char * _PREHASH_SimWideMaxPrims; |
439 | char * _PREHASH_TotalPrims; | 410 | char * _PREHASH_TotalPrims; |
440 | char * _PREHASH_ProfileBegin; | 411 | char * _PREHASH_ProfileBegin; |
441 | char * _PREHASH_MoneyDetailsRequest; | ||
442 | char * _PREHASH_Request; | 412 | char * _PREHASH_Request; |
443 | char * _PREHASH_GroupAccountDetailsRequest; | 413 | char * _PREHASH_GroupAccountDetailsRequest; |
444 | char * _PREHASH_GroupActiveProposalsRequest; | 414 | char * _PREHASH_GroupActiveProposalsRequest; |
445 | char * _PREHASH_StringValue; | 415 | char * _PREHASH_StringValue; |
446 | char * _PREHASH_ClosestSimulator; | ||
447 | char * _PREHASH_Version; | 416 | char * _PREHASH_Version; |
448 | char * _PREHASH_OtherCount; | 417 | char * _PREHASH_OtherCount; |
449 | char * _PREHASH_MemberCount; | 418 | char * _PREHASH_MemberCount; |
450 | char * _PREHASH_ChatData; | 419 | char * _PREHASH_ChatData; |
451 | char * _PREHASH_IsGroupOwned; | 420 | char * _PREHASH_IsGroupOwned; |
452 | char * _PREHASH_EnergyEfficiency; | 421 | char * _PREHASH_EnergyEfficiency; |
453 | char * _PREHASH_MaxPlace; | ||
454 | char * _PREHASH_PickInfoUpdate; | 422 | char * _PREHASH_PickInfoUpdate; |
455 | char * _PREHASH_PickDelete; | 423 | char * _PREHASH_PickDelete; |
456 | char * _PREHASH_ScriptReset; | 424 | char * _PREHASH_ScriptReset; |
457 | char * _PREHASH_Requester; | 425 | char * _PREHASH_Requester; |
458 | char * _PREHASH_ForSale; | 426 | char * _PREHASH_ForSale; |
459 | char * _PREHASH_NearestLandingRegionReply; | 427 | char * _PREHASH_NearestLandingRegionReply; |
460 | char * _PREHASH_RecordAgentPresence; | ||
461 | char * _PREHASH_EraseAgentPresence; | ||
462 | char * _PREHASH_ParcelID; | 428 | char * _PREHASH_ParcelID; |
463 | char * _PREHASH_Godlike; | 429 | char * _PREHASH_Godlike; |
464 | char * _PREHASH_TotalDebits; | 430 | char * _PREHASH_TotalDebits; |
465 | char * _PREHASH_Direction; | 431 | char * _PREHASH_Direction; |
466 | char * _PREHASH_Appearance; | ||
467 | char * _PREHASH_HealthData; | 432 | char * _PREHASH_HealthData; |
468 | char * _PREHASH_LeftAxis; | 433 | char * _PREHASH_LeftAxis; |
469 | char * _PREHASH_LocationBlock; | 434 | char * _PREHASH_LocationBlock; |
@@ -471,41 +436,31 @@ char * _PREHASH_ObjectImage; | |||
471 | char * _PREHASH_TerrainStartHeight00; | 436 | char * _PREHASH_TerrainStartHeight00; |
472 | char * _PREHASH_TerrainStartHeight01; | 437 | char * _PREHASH_TerrainStartHeight01; |
473 | char * _PREHASH_TerrainStartHeight10; | 438 | char * _PREHASH_TerrainStartHeight10; |
474 | char * _PREHASH_ObjectHinge; | ||
475 | char * _PREHASH_TerrainStartHeight11; | 439 | char * _PREHASH_TerrainStartHeight11; |
476 | char * _PREHASH_MetersPerGrid; | ||
477 | char * _PREHASH_WaterHeight; | 440 | char * _PREHASH_WaterHeight; |
478 | char * _PREHASH_FetchInventoryReply; | 441 | char * _PREHASH_FetchInventoryReply; |
479 | char * _PREHASH_MoneySummaryReply; | ||
480 | char * _PREHASH_GroupAccountSummaryReply; | 442 | char * _PREHASH_GroupAccountSummaryReply; |
481 | char * _PREHASH_AttachedSound; | 443 | char * _PREHASH_AttachedSound; |
482 | char * _PREHASH_ParamInUse; | 444 | char * _PREHASH_ParamInUse; |
483 | char * _PREHASH_GodKickUser; | 445 | char * _PREHASH_GodKickUser; |
484 | char * _PREHASH_PickName; | 446 | char * _PREHASH_PickName; |
485 | char * _PREHASH_TaskName; | 447 | char * _PREHASH_TaskName; |
486 | char * _PREHASH_SubType; | ||
487 | char * _PREHASH_ObjectCount; | 448 | char * _PREHASH_ObjectCount; |
488 | char * _PREHASH_RegionPresenceRequestByHandle; | 449 | char * _PREHASH_RegionPresenceRequestByHandle; |
489 | char * _PREHASH_RezSingleAttachmentFromInv; | 450 | char * _PREHASH_RezSingleAttachmentFromInv; |
490 | char * _PREHASH_ChildAgentUpdate; | 451 | char * _PREHASH_ChildAgentUpdate; |
491 | char * _PREHASH_ToID; | ||
492 | char * _PREHASH_ViewerPort; | ||
493 | char * _PREHASH_IsOwnerGroup; | 452 | char * _PREHASH_IsOwnerGroup; |
494 | char * _PREHASH_AgentHeightWidth; | 453 | char * _PREHASH_AgentHeightWidth; |
495 | char * _PREHASH_VerticalAngle; | 454 | char * _PREHASH_VerticalAngle; |
496 | char * _PREHASH_WearableType; | 455 | char * _PREHASH_WearableType; |
497 | char * _PREHASH_AggregatePermNextOwner; | 456 | char * _PREHASH_AggregatePermNextOwner; |
498 | char * _PREHASH_ShowInList; | 457 | char * _PREHASH_ShowInList; |
499 | char * _PREHASH_PositionSuggestion; | ||
500 | char * _PREHASH_UpdateParcel; | 458 | char * _PREHASH_UpdateParcel; |
501 | char * _PREHASH_ClearAgentSessions; | ||
502 | char * _PREHASH_SetAlwaysRun; | 459 | char * _PREHASH_SetAlwaysRun; |
503 | char * _PREHASH_NVPair; | 460 | char * _PREHASH_NVPair; |
504 | char * _PREHASH_SearchType; | 461 | char * _PREHASH_SearchType; |
505 | char * _PREHASH_ObjectSpinStart; | 462 | char * _PREHASH_ObjectSpinStart; |
506 | char * _PREHASH_UseEstateSun; | 463 | char * _PREHASH_UseEstateSun; |
507 | char * _PREHASH_LogoutBlock; | ||
508 | char * _PREHASH_RelayLogControl; | ||
509 | char * _PREHASH_RegionID; | 464 | char * _PREHASH_RegionID; |
510 | char * _PREHASH_AbuseRegionID; | 465 | char * _PREHASH_AbuseRegionID; |
511 | char * _PREHASH_Creator; | 466 | char * _PREHASH_Creator; |
@@ -514,14 +469,12 @@ char * _PREHASH_DirEventsReply; | |||
514 | char * _PREHASH_EventInfoReply; | 469 | char * _PREHASH_EventInfoReply; |
515 | char * _PREHASH_UserInfoReply; | 470 | char * _PREHASH_UserInfoReply; |
516 | char * _PREHASH_PathRadiusOffset; | 471 | char * _PREHASH_PathRadiusOffset; |
517 | char * _PREHASH_SessionInfo; | ||
518 | char * _PREHASH_TextureData; | 472 | char * _PREHASH_TextureData; |
519 | char * _PREHASH_ChatPass; | 473 | char * _PREHASH_ChatPass; |
520 | char * _PREHASH_TargetID; | 474 | char * _PREHASH_TargetID; |
521 | char * _PREHASH_DefaultPayPrice; | 475 | char * _PREHASH_DefaultPayPrice; |
522 | char * _PREHASH_UserLocation; | 476 | char * _PREHASH_UserLocation; |
523 | char * _PREHASH_MaxPrims; | 477 | char * _PREHASH_MaxPrims; |
524 | char * _PREHASH_RegionIP; | ||
525 | char * _PREHASH_LandmarkID; | 478 | char * _PREHASH_LandmarkID; |
526 | char * _PREHASH_InitiateDownload; | 479 | char * _PREHASH_InitiateDownload; |
527 | char * _PREHASH_Name; | 480 | char * _PREHASH_Name; |
@@ -529,18 +482,13 @@ char * _PREHASH_OtherCleanTime; | |||
529 | char * _PREHASH_ParcelSetOtherCleanTime; | 482 | char * _PREHASH_ParcelSetOtherCleanTime; |
530 | char * _PREHASH_TeleportPriceExponent; | 483 | char * _PREHASH_TeleportPriceExponent; |
531 | char * _PREHASH_Gain; | 484 | char * _PREHASH_Gain; |
532 | char * _PREHASH_VelX; | ||
533 | char * _PREHASH_PacketAck; | 485 | char * _PREHASH_PacketAck; |
534 | char * _PREHASH_PathSkew; | 486 | char * _PREHASH_PathSkew; |
535 | char * _PREHASH_Negative; | ||
536 | char * _PREHASH_VelY; | ||
537 | char * _PREHASH_SimulatorShutdownRequest; | 487 | char * _PREHASH_SimulatorShutdownRequest; |
538 | char * _PREHASH_NearestLandingRegionRequest; | 488 | char * _PREHASH_NearestLandingRegionRequest; |
539 | char * _PREHASH_VelZ; | ||
540 | char * _PREHASH_OtherID; | 489 | char * _PREHASH_OtherID; |
541 | char * _PREHASH_MemberID; | 490 | char * _PREHASH_MemberID; |
542 | char * _PREHASH_MapLayerRequest; | 491 | char * _PREHASH_MapLayerRequest; |
543 | char * _PREHASH_PatchVersion; | ||
544 | char * _PREHASH_ObjectScale; | 492 | char * _PREHASH_ObjectScale; |
545 | char * _PREHASH_TargetIP; | 493 | char * _PREHASH_TargetIP; |
546 | char * _PREHASH_Redo; | 494 | char * _PREHASH_Redo; |
@@ -583,27 +531,20 @@ char * _PREHASH_Perp; | |||
583 | char * _PREHASH_Code; | 531 | char * _PREHASH_Code; |
584 | char * _PREHASH_InvType; | 532 | char * _PREHASH_InvType; |
585 | char * _PREHASH_AgentFOV; | 533 | char * _PREHASH_AgentFOV; |
586 | char * _PREHASH_BulkMoneyTransfer; | ||
587 | char * _PREHASH_Audible; | 534 | char * _PREHASH_Audible; |
588 | char * _PREHASH_AuctionData; | 535 | char * _PREHASH_AuctionData; |
589 | char * _PREHASH_IDBlock; | 536 | char * _PREHASH_IDBlock; |
590 | char * _PREHASH_ReputationData; | ||
591 | char * _PREHASH_West; | 537 | char * _PREHASH_West; |
592 | char * _PREHASH_Undo; | 538 | char * _PREHASH_Undo; |
593 | char * _PREHASH_TotalNumItems; | 539 | char * _PREHASH_TotalNumItems; |
594 | char * _PREHASH_Info; | 540 | char * _PREHASH_Info; |
595 | char * _PREHASH_Area; | 541 | char * _PREHASH_Area; |
596 | char * _PREHASH_Behavior; | ||
597 | char * _PREHASH_SimCrashed; | 542 | char * _PREHASH_SimCrashed; |
598 | char * _PREHASH_Text; | 543 | char * _PREHASH_Text; |
599 | char * _PREHASH_AgentToNewRegion; | ||
600 | char * _PREHASH_PriceGroupCreate; | 544 | char * _PREHASH_PriceGroupCreate; |
601 | char * _PREHASH_ObjectShape; | 545 | char * _PREHASH_ObjectShape; |
602 | char * _PREHASH_GroupRoleDataReply; | 546 | char * _PREHASH_GroupRoleDataReply; |
603 | char * _PREHASH_PosX; | ||
604 | char * _PREHASH_PosY; | ||
605 | char * _PREHASH_MuteCRC; | 547 | char * _PREHASH_MuteCRC; |
606 | char * _PREHASH_PosZ; | ||
607 | char * _PREHASH_Size; | 548 | char * _PREHASH_Size; |
608 | char * _PREHASH_FromAddress; | 549 | char * _PREHASH_FromAddress; |
609 | char * _PREHASH_Body; | 550 | char * _PREHASH_Body; |
@@ -621,16 +562,14 @@ char * _PREHASH_Stat; | |||
621 | char * _PREHASH_SoundID; | 562 | char * _PREHASH_SoundID; |
622 | char * _PREHASH_Item; | 563 | char * _PREHASH_Item; |
623 | char * _PREHASH_User; | 564 | char * _PREHASH_User; |
624 | char * _PREHASH_RemoteInfos; | ||
625 | char * _PREHASH_Prey; | 565 | char * _PREHASH_Prey; |
626 | char * _PREHASH_UsecSinceStart; | ||
627 | char * _PREHASH_RayStart; | 566 | char * _PREHASH_RayStart; |
567 | char * _PREHASH_UsecSinceStart; | ||
628 | char * _PREHASH_ParcelData; | 568 | char * _PREHASH_ParcelData; |
629 | char * _PREHASH_CameraUpAxis; | 569 | char * _PREHASH_CameraUpAxis; |
630 | char * _PREHASH_ScriptDialog; | 570 | char * _PREHASH_ScriptDialog; |
631 | char * _PREHASH_MasterParcelData; | 571 | char * _PREHASH_MasterParcelData; |
632 | char * _PREHASH_Invalid; | 572 | char * _PREHASH_Invalid; |
633 | char * _PREHASH_MinPlace; | ||
634 | char * _PREHASH_ProfileCurve; | 573 | char * _PREHASH_ProfileCurve; |
635 | char * _PREHASH_ParcelAccessListUpdate; | 574 | char * _PREHASH_ParcelAccessListUpdate; |
636 | char * _PREHASH_MuteListUpdate; | 575 | char * _PREHASH_MuteListUpdate; |
@@ -649,14 +588,12 @@ char * _PREHASH_DeRezObject; | |||
649 | char * _PREHASH_IsTemporary; | 588 | char * _PREHASH_IsTemporary; |
650 | char * _PREHASH_InsigniaID; | 589 | char * _PREHASH_InsigniaID; |
651 | char * _PREHASH_CheckFlags; | 590 | char * _PREHASH_CheckFlags; |
652 | char * _PREHASH_TransferPriority; | ||
653 | char * _PREHASH_EventID; | 591 | char * _PREHASH_EventID; |
654 | char * _PREHASH_Selected; | 592 | char * _PREHASH_Selected; |
655 | char * _PREHASH_FromAgentId; | 593 | char * _PREHASH_FromAgentId; |
656 | char * _PREHASH_Type; | 594 | char * _PREHASH_Type; |
657 | char * _PREHASH_ChatType; | 595 | char * _PREHASH_ChatType; |
658 | char * _PREHASH_ReportData; | 596 | char * _PREHASH_ReportData; |
659 | char * _PREHASH_LeaderBoardData; | ||
660 | char * _PREHASH_RequestBlock; | 597 | char * _PREHASH_RequestBlock; |
661 | char * _PREHASH_GrantData; | 598 | char * _PREHASH_GrantData; |
662 | char * _PREHASH_DetachAttachmentIntoInv; | 599 | char * _PREHASH_DetachAttachmentIntoInv; |
@@ -672,12 +609,9 @@ char * _PREHASH_OnlineNotification; | |||
672 | char * _PREHASH_OfflineNotification; | 609 | char * _PREHASH_OfflineNotification; |
673 | char * _PREHASH_SendPostcard; | 610 | char * _PREHASH_SendPostcard; |
674 | char * _PREHASH_RequestFlags; | 611 | char * _PREHASH_RequestFlags; |
675 | char * _PREHASH_MoneyHistoryRequest; | ||
676 | char * _PREHASH_MoneySummaryRequest; | ||
677 | char * _PREHASH_GroupAccountSummaryRequest; | 612 | char * _PREHASH_GroupAccountSummaryRequest; |
678 | char * _PREHASH_GroupVoteHistoryRequest; | 613 | char * _PREHASH_GroupVoteHistoryRequest; |
679 | char * _PREHASH_ParamValue; | 614 | char * _PREHASH_ParamValue; |
680 | char * _PREHASH_Checksum; | ||
681 | char * _PREHASH_MaxAgents; | 615 | char * _PREHASH_MaxAgents; |
682 | char * _PREHASH_CreateNewOutfitAttachments; | 616 | char * _PREHASH_CreateNewOutfitAttachments; |
683 | char * _PREHASH_RegionHandle; | 617 | char * _PREHASH_RegionHandle; |
@@ -687,12 +621,10 @@ char * _PREHASH_AvatarInterestsUpdate; | |||
687 | char * _PREHASH_GroupNoticeID; | 621 | char * _PREHASH_GroupNoticeID; |
688 | char * _PREHASH_ParcelName; | 622 | char * _PREHASH_ParcelName; |
689 | char * _PREHASH_PriceObjectRent; | 623 | char * _PREHASH_PriceObjectRent; |
690 | char * _PREHASH_ConnectAgentToUserserver; | ||
691 | char * _PREHASH_ConnectToUserserver; | ||
692 | char * _PREHASH_OfferCallingCard; | 624 | char * _PREHASH_OfferCallingCard; |
693 | char * _PREHASH_AgentAccess; | ||
694 | char * _PREHASH_AcceptCallingCard; | 625 | char * _PREHASH_AcceptCallingCard; |
695 | char * _PREHASH_DeclineCallingCard; | 626 | char * _PREHASH_DeclineCallingCard; |
627 | char * _PREHASH_AgentAccess; | ||
696 | char * _PREHASH_DataHomeLocationReply; | 628 | char * _PREHASH_DataHomeLocationReply; |
697 | char * _PREHASH_EventLocationReply; | 629 | char * _PREHASH_EventLocationReply; |
698 | char * _PREHASH_TerseDateID; | 630 | char * _PREHASH_TerseDateID; |
@@ -710,8 +642,8 @@ char * _PREHASH_Invoice; | |||
710 | char * _PREHASH_IntervalDays; | 642 | char * _PREHASH_IntervalDays; |
711 | char * _PREHASH_PathScaleX; | 643 | char * _PREHASH_PathScaleX; |
712 | char * _PREHASH_FromTaskID; | 644 | char * _PREHASH_FromTaskID; |
713 | char * _PREHASH_TimeInfo; | ||
714 | char * _PREHASH_PathScaleY; | 645 | char * _PREHASH_PathScaleY; |
646 | char * _PREHASH_TimeInfo; | ||
715 | char * _PREHASH_PublicCount; | 647 | char * _PREHASH_PublicCount; |
716 | char * _PREHASH_ParcelJoin; | 648 | char * _PREHASH_ParcelJoin; |
717 | char * _PREHASH_GroupRolesCount; | 649 | char * _PREHASH_GroupRolesCount; |
@@ -736,7 +668,6 @@ char * _PREHASH_NearestLandingRegionUpdated; | |||
736 | char * _PREHASH_PassToAgent; | 668 | char * _PREHASH_PassToAgent; |
737 | char * _PREHASH_PreyAgent; | 669 | char * _PREHASH_PreyAgent; |
738 | char * _PREHASH_SimStats; | 670 | char * _PREHASH_SimStats; |
739 | char * _PREHASH_Options; | ||
740 | char * _PREHASH_LogoutReply; | 671 | char * _PREHASH_LogoutReply; |
741 | char * _PREHASH_FeatureDisabled; | 672 | char * _PREHASH_FeatureDisabled; |
742 | char * _PREHASH_ObjectLocalID; | 673 | char * _PREHASH_ObjectLocalID; |
@@ -747,10 +678,8 @@ char * _PREHASH_Destination; | |||
747 | char * _PREHASH_MasterID; | 678 | char * _PREHASH_MasterID; |
748 | char * _PREHASH_TransferData; | 679 | char * _PREHASH_TransferData; |
749 | char * _PREHASH_WantToMask; | 680 | char * _PREHASH_WantToMask; |
750 | char * _PREHASH_AvatarData; | ||
751 | char * _PREHASH_ParcelSelectObjects; | 681 | char * _PREHASH_ParcelSelectObjects; |
752 | char * _PREHASH_ExtraParams; | 682 | char * _PREHASH_ExtraParams; |
753 | char * _PREHASH_LogLogin; | ||
754 | char * _PREHASH_CreatorID; | 683 | char * _PREHASH_CreatorID; |
755 | char * _PREHASH_Summary; | 684 | char * _PREHASH_Summary; |
756 | char * _PREHASH_BuyObjectInventory; | 685 | char * _PREHASH_BuyObjectInventory; |
@@ -791,8 +720,8 @@ char * _PREHASH_ButtonLabel; | |||
791 | char * _PREHASH_GranterID; | 720 | char * _PREHASH_GranterID; |
792 | char * _PREHASH_WantToText; | 721 | char * _PREHASH_WantToText; |
793 | char * _PREHASH_ReportType; | 722 | char * _PREHASH_ReportType; |
794 | char * _PREHASH_DataBlock; | ||
795 | char * _PREHASH_SimulatorReady; | 723 | char * _PREHASH_SimulatorReady; |
724 | char * _PREHASH_DataBlock; | ||
796 | char * _PREHASH_AnimationSourceList; | 725 | char * _PREHASH_AnimationSourceList; |
797 | char * _PREHASH_SubscribeLoad; | 726 | char * _PREHASH_SubscribeLoad; |
798 | char * _PREHASH_UnsubscribeLoad; | 727 | char * _PREHASH_UnsubscribeLoad; |
@@ -819,9 +748,8 @@ char * _PREHASH_Header; | |||
819 | char * _PREHASH_GestureFlags; | 748 | char * _PREHASH_GestureFlags; |
820 | char * _PREHASH_XferID; | 749 | char * _PREHASH_XferID; |
821 | char * _PREHASH_StatValue; | 750 | char * _PREHASH_StatValue; |
822 | char * _PREHASH_PickID; | ||
823 | char * _PREHASH_TaskID; | 751 | char * _PREHASH_TaskID; |
824 | char * _PREHASH_GridsPerEdge; | 752 | char * _PREHASH_PickID; |
825 | char * _PREHASH_RayEnd; | 753 | char * _PREHASH_RayEnd; |
826 | char * _PREHASH_Throttles; | 754 | char * _PREHASH_Throttles; |
827 | char * _PREHASH_RebakeAvatarTextures; | 755 | char * _PREHASH_RebakeAvatarTextures; |
@@ -834,30 +762,24 @@ char * _PREHASH_Access; | |||
834 | char * _PREHASH_TitleRoleID; | 762 | char * _PREHASH_TitleRoleID; |
835 | char * _PREHASH_SquareMetersCredit; | 763 | char * _PREHASH_SquareMetersCredit; |
836 | char * _PREHASH_Filename; | 764 | char * _PREHASH_Filename; |
837 | char * _PREHASH_SecuredTemplateChecksumRequest; | ||
838 | char * _PREHASH_TemplateChecksumRequest; | ||
839 | char * _PREHASH_AgentPresenceRequest; | ||
840 | char * _PREHASH_ClassifiedInfoRequest; | 765 | char * _PREHASH_ClassifiedInfoRequest; |
841 | char * _PREHASH_ParcelInfoRequest; | 766 | char * _PREHASH_ParcelInfoRequest; |
842 | char * _PREHASH_ParcelObjectOwnersRequest; | 767 | char * _PREHASH_ParcelObjectOwnersRequest; |
843 | char * _PREHASH_TeleportLandmarkRequest; | 768 | char * _PREHASH_TeleportLandmarkRequest; |
844 | char * _PREHASH_EventInfoRequest; | 769 | char * _PREHASH_EventInfoRequest; |
845 | char * _PREHASH_ChatFromSimulator; | ||
846 | char * _PREHASH_PickInfoRequest; | ||
847 | char * _PREHASH_MoneyBalanceRequest; | 770 | char * _PREHASH_MoneyBalanceRequest; |
848 | char * _PREHASH_GroupMembersRequest; | 771 | char * _PREHASH_GroupMembersRequest; |
849 | char * _PREHASH_GroupRoleMembersRequest; | 772 | char * _PREHASH_GroupRoleMembersRequest; |
773 | char * _PREHASH_ChatFromSimulator; | ||
850 | char * _PREHASH_OldFolderID; | 774 | char * _PREHASH_OldFolderID; |
851 | char * _PREHASH_UserInfoRequest; | 775 | char * _PREHASH_UserInfoRequest; |
852 | char * _PREHASH_TextureID; | 776 | char * _PREHASH_TextureID; |
853 | char * _PREHASH_ProfileURL; | 777 | char * _PREHASH_ProfileURL; |
854 | char * _PREHASH_Handle; | 778 | char * _PREHASH_Handle; |
855 | char * _PREHASH_StartParcelRenameAck; | ||
856 | char * _PREHASH_ButtonIndex; | 779 | char * _PREHASH_ButtonIndex; |
857 | char * _PREHASH_GetScriptRunning; | 780 | char * _PREHASH_GetScriptRunning; |
858 | char * _PREHASH_SetScriptRunning; | 781 | char * _PREHASH_SetScriptRunning; |
859 | char * _PREHASH_Health; | 782 | char * _PREHASH_Health; |
860 | char * _PREHASH_FileID; | ||
861 | char * _PREHASH_CircuitInfo; | 783 | char * _PREHASH_CircuitInfo; |
862 | char * _PREHASH_ObjectBuy; | 784 | char * _PREHASH_ObjectBuy; |
863 | char * _PREHASH_ProfileEnd; | 785 | char * _PREHASH_ProfileEnd; |
@@ -882,7 +804,6 @@ char * _PREHASH_PingID; | |||
882 | char * _PREHASH_Change; | 804 | char * _PREHASH_Change; |
883 | char * _PREHASH_Height; | 805 | char * _PREHASH_Height; |
884 | char * _PREHASH_Region; | 806 | char * _PREHASH_Region; |
885 | char * _PREHASH_MoneyHistoryReply; | ||
886 | char * _PREHASH_TelehubInfo; | 807 | char * _PREHASH_TelehubInfo; |
887 | char * _PREHASH_StateSave; | 808 | char * _PREHASH_StateSave; |
888 | char * _PREHASH_RoleData; | 809 | char * _PREHASH_RoleData; |
@@ -893,11 +814,10 @@ char * _PREHASH_ParcelGodMarkAsContent; | |||
893 | char * _PREHASH_UsePhysics; | 814 | char * _PREHASH_UsePhysics; |
894 | char * _PREHASH_RegionDenyTransacted; | 815 | char * _PREHASH_RegionDenyTransacted; |
895 | char * _PREHASH_JointType; | 816 | char * _PREHASH_JointType; |
896 | char * _PREHASH_TaxEstimate; | ||
897 | char * _PREHASH_ObjectTaxEstimate; | 817 | char * _PREHASH_ObjectTaxEstimate; |
898 | char * _PREHASH_LightTaxEstimate; | 818 | char * _PREHASH_LightTaxEstimate; |
899 | char * _PREHASH_TeleportLandingStatusChanged; | ||
900 | char * _PREHASH_LandTaxEstimate; | 819 | char * _PREHASH_LandTaxEstimate; |
820 | char * _PREHASH_TeleportLandingStatusChanged; | ||
901 | char * _PREHASH_GroupTaxEstimate; | 821 | char * _PREHASH_GroupTaxEstimate; |
902 | char * _PREHASH_AvgViewerFPS; | 822 | char * _PREHASH_AvgViewerFPS; |
903 | char * _PREHASH_Buttons; | 823 | char * _PREHASH_Buttons; |
@@ -929,8 +849,6 @@ char * _PREHASH_WinnerID; | |||
929 | char * _PREHASH_ChannelType; | 849 | char * _PREHASH_ChannelType; |
930 | char * _PREHASH_NonExemptMembers; | 850 | char * _PREHASH_NonExemptMembers; |
931 | char * _PREHASH_Agents; | 851 | char * _PREHASH_Agents; |
932 | char * _PREHASH_SimulatorStart; | ||
933 | char * _PREHASH_Enable; | ||
934 | char * _PREHASH_MemberData; | 852 | char * _PREHASH_MemberData; |
935 | char * _PREHASH_ToGroupID; | 853 | char * _PREHASH_ToGroupID; |
936 | char * _PREHASH_ImageNotInDatabase; | 854 | char * _PREHASH_ImageNotInDatabase; |
@@ -938,27 +856,21 @@ char * _PREHASH_StartDate; | |||
938 | char * _PREHASH_AnimID; | 856 | char * _PREHASH_AnimID; |
939 | char * _PREHASH_Serial; | 857 | char * _PREHASH_Serial; |
940 | char * _PREHASH_AbuseRegionName; | 858 | char * _PREHASH_AbuseRegionName; |
941 | char * _PREHASH_ControlPort; | ||
942 | char * _PREHASH_ModifyLand; | 859 | char * _PREHASH_ModifyLand; |
943 | char * _PREHASH_Digest; | 860 | char * _PREHASH_Digest; |
944 | char * _PREHASH_Victim; | 861 | char * _PREHASH_Victim; |
945 | char * _PREHASH_Script; | 862 | char * _PREHASH_Script; |
946 | char * _PREHASH_TemplateChecksumReply; | ||
947 | char * _PREHASH_PickInfoReply; | 863 | char * _PREHASH_PickInfoReply; |
948 | char * _PREHASH_MoneyBalanceReply; | 864 | char * _PREHASH_MoneyBalanceReply; |
949 | char * _PREHASH_RoutedMoneyBalanceReply; | 865 | char * _PREHASH_RoutedMoneyBalanceReply; |
950 | char * _PREHASH_RoleID; | 866 | char * _PREHASH_RoleID; |
951 | char * _PREHASH_RegionInfo; | 867 | char * _PREHASH_RegionInfo; |
952 | char * _PREHASH_Sequence; | ||
953 | char * _PREHASH_GodUpdateRegionInfo; | 868 | char * _PREHASH_GodUpdateRegionInfo; |
954 | char * _PREHASH_LocalX; | ||
955 | char * _PREHASH_LocalY; | ||
956 | char * _PREHASH_StartAnim; | 869 | char * _PREHASH_StartAnim; |
957 | char * _PREHASH_Location; | ||
958 | char * _PREHASH_Action; | 870 | char * _PREHASH_Action; |
871 | char * _PREHASH_Location; | ||
959 | char * _PREHASH_Rights; | 872 | char * _PREHASH_Rights; |
960 | char * _PREHASH_SearchDir; | 873 | char * _PREHASH_SearchDir; |
961 | char * _PREHASH_Active; | ||
962 | char * _PREHASH_TransferRequest; | 874 | char * _PREHASH_TransferRequest; |
963 | char * _PREHASH_ScriptSensorRequest; | 875 | char * _PREHASH_ScriptSensorRequest; |
964 | char * _PREHASH_MoneyTransferRequest; | 876 | char * _PREHASH_MoneyTransferRequest; |
@@ -969,8 +881,6 @@ char * _PREHASH_Center; | |||
969 | char * _PREHASH_SharedData; | 881 | char * _PREHASH_SharedData; |
970 | char * _PREHASH_PSBlock; | 882 | char * _PREHASH_PSBlock; |
971 | char * _PREHASH_UUIDNameBlock; | 883 | char * _PREHASH_UUIDNameBlock; |
972 | char * _PREHASH_Viewer; | ||
973 | char * _PREHASH_GroupNoticeDelete; | ||
974 | char * _PREHASH_GroupTitleUpdate; | 884 | char * _PREHASH_GroupTitleUpdate; |
975 | char * _PREHASH_Method; | 885 | char * _PREHASH_Method; |
976 | char * _PREHASH_TouchName; | 886 | char * _PREHASH_TouchName; |
@@ -982,11 +892,9 @@ char * _PREHASH_GodlikeMessage; | |||
982 | char * _PREHASH_SystemMessage; | 892 | char * _PREHASH_SystemMessage; |
983 | char * _PREHASH_BodyRotation; | 893 | char * _PREHASH_BodyRotation; |
984 | char * _PREHASH_SearchRegions; | 894 | char * _PREHASH_SearchRegions; |
985 | char * _PREHASH_Ignore; | ||
986 | char * _PREHASH_AnimationData; | 895 | char * _PREHASH_AnimationData; |
987 | char * _PREHASH_StatID; | 896 | char * _PREHASH_StatID; |
988 | char * _PREHASH_ItemID; | 897 | char * _PREHASH_ItemID; |
989 | char * _PREHASH_AvatarStatisticsReply; | ||
990 | char * _PREHASH_ScriptDialogReply; | 898 | char * _PREHASH_ScriptDialogReply; |
991 | char * _PREHASH_RegionIDAndHandleReply; | 899 | char * _PREHASH_RegionIDAndHandleReply; |
992 | char * _PREHASH_CameraAtOffset; | 900 | char * _PREHASH_CameraAtOffset; |
@@ -1011,7 +919,6 @@ char * _PREHASH_OldItemID; | |||
1011 | char * _PREHASH_RegionPort; | 919 | char * _PREHASH_RegionPort; |
1012 | char * _PREHASH_PriceEnergyUnit; | 920 | char * _PREHASH_PriceEnergyUnit; |
1013 | char * _PREHASH_Bitmap; | 921 | char * _PREHASH_Bitmap; |
1014 | char * _PREHASH_TrackAgentSession; | ||
1015 | char * _PREHASH_CacheMissType; | 922 | char * _PREHASH_CacheMissType; |
1016 | char * _PREHASH_VFileID; | 923 | char * _PREHASH_VFileID; |
1017 | char * _PREHASH_GroupInsigniaID; | 924 | char * _PREHASH_GroupInsigniaID; |
@@ -1059,7 +966,6 @@ char * _PREHASH_MeanCollisionAlert; | |||
1059 | char * _PREHASH_CanAcceptTasks; | 966 | char * _PREHASH_CanAcceptTasks; |
1060 | char * _PREHASH_ItemData; | 967 | char * _PREHASH_ItemData; |
1061 | char * _PREHASH_AnimationList; | 968 | char * _PREHASH_AnimationList; |
1062 | char * _PREHASH_PassObject; | ||
1063 | char * _PREHASH_Reputation; | 969 | char * _PREHASH_Reputation; |
1064 | char * _PREHASH_IntValue; | 970 | char * _PREHASH_IntValue; |
1065 | char * _PREHASH_TargetType; | 971 | char * _PREHASH_TargetType; |
@@ -1082,10 +988,8 @@ char * _PREHASH_ParcelBuy; | |||
1082 | char * _PREHASH_DirFindQueryBackend; | 988 | char * _PREHASH_DirFindQueryBackend; |
1083 | char * _PREHASH_DirPlacesQueryBackend; | 989 | char * _PREHASH_DirPlacesQueryBackend; |
1084 | char * _PREHASH_DirClassifiedQueryBackend; | 990 | char * _PREHASH_DirClassifiedQueryBackend; |
1085 | char * _PREHASH_DirPicksQueryBackend; | ||
1086 | char * _PREHASH_DirLandQueryBackend; | 991 | char * _PREHASH_DirLandQueryBackend; |
1087 | char * _PREHASH_DirPopularQueryBackend; | 992 | char * _PREHASH_DirPopularQueryBackend; |
1088 | char * _PREHASH_LogoutDemand; | ||
1089 | char * _PREHASH_HistoryData; | 993 | char * _PREHASH_HistoryData; |
1090 | char * _PREHASH_SnapshotID; | 994 | char * _PREHASH_SnapshotID; |
1091 | char * _PREHASH_Aspect; | 995 | char * _PREHASH_Aspect; |
@@ -1093,7 +997,6 @@ char * _PREHASH_ParamSize; | |||
1093 | char * _PREHASH_VoteCast; | 997 | char * _PREHASH_VoteCast; |
1094 | char * _PREHASH_CastsShadows; | 998 | char * _PREHASH_CastsShadows; |
1095 | char * _PREHASH_EveryoneMask; | 999 | char * _PREHASH_EveryoneMask; |
1096 | char * _PREHASH_SetSunPhase; | ||
1097 | char * _PREHASH_ObjectSpinUpdate; | 1000 | char * _PREHASH_ObjectSpinUpdate; |
1098 | char * _PREHASH_MaturePublish; | 1001 | char * _PREHASH_MaturePublish; |
1099 | char * _PREHASH_UseExistingAsset; | 1002 | char * _PREHASH_UseExistingAsset; |
@@ -1102,7 +1005,6 @@ char * _PREHASH_ParcelLocalID; | |||
1102 | char * _PREHASH_TeleportCancel; | 1005 | char * _PREHASH_TeleportCancel; |
1103 | char * _PREHASH_UnixTime; | 1006 | char * _PREHASH_UnixTime; |
1104 | char * _PREHASH_QueryFlags; | 1007 | char * _PREHASH_QueryFlags; |
1105 | char * _PREHASH_LastExecFroze; | ||
1106 | char * _PREHASH_AlwaysRun; | 1008 | char * _PREHASH_AlwaysRun; |
1107 | char * _PREHASH_Bottom; | 1009 | char * _PREHASH_Bottom; |
1108 | char * _PREHASH_ButtonData; | 1010 | char * _PREHASH_ButtonData; |
@@ -1121,7 +1023,6 @@ char * _PREHASH_NVPairs; | |||
1121 | char * _PREHASH_GroupNoticesListRequest; | 1023 | char * _PREHASH_GroupNoticesListRequest; |
1122 | char * _PREHASH_ParcelAccessListRequest; | 1024 | char * _PREHASH_ParcelAccessListRequest; |
1123 | char * _PREHASH_MuteListRequest; | 1025 | char * _PREHASH_MuteListRequest; |
1124 | char * _PREHASH_StartPeriod; | ||
1125 | char * _PREHASH_RpcChannelRequest; | 1026 | char * _PREHASH_RpcChannelRequest; |
1126 | char * _PREHASH_LandStatRequest; | 1027 | char * _PREHASH_LandStatRequest; |
1127 | char * _PREHASH_PlacesQuery; | 1028 | char * _PREHASH_PlacesQuery; |
@@ -1149,34 +1050,27 @@ char * _PREHASH_SnapSelection; | |||
1149 | char * _PREHASH_SoundTrigger; | 1050 | char * _PREHASH_SoundTrigger; |
1150 | char * _PREHASH_TerrainRaiseLimit; | 1051 | char * _PREHASH_TerrainRaiseLimit; |
1151 | char * _PREHASH_Quorum; | 1052 | char * _PREHASH_Quorum; |
1152 | char * _PREHASH_TokenBlock; | ||
1153 | char * _PREHASH_AgentBlock; | 1053 | char * _PREHASH_AgentBlock; |
1154 | char * _PREHASH_CommandBlock; | 1054 | char * _PREHASH_CommandBlock; |
1155 | char * _PREHASH_PricePublicObjectDecay; | 1055 | char * _PREHASH_PricePublicObjectDecay; |
1156 | char * _PREHASH_SpawnPointPos; | 1056 | char * _PREHASH_SpawnPointPos; |
1157 | char * _PREHASH_AttachedSoundCutoffRadius; | ||
1158 | char * _PREHASH_VolumeDetail; | 1057 | char * _PREHASH_VolumeDetail; |
1159 | char * _PREHASH_FromAgentName; | 1058 | char * _PREHASH_FromAgentName; |
1160 | char * _PREHASH_Range; | 1059 | char * _PREHASH_Range; |
1161 | char * _PREHASH_DirectoryVisibility; | 1060 | char * _PREHASH_DirectoryVisibility; |
1162 | char * _PREHASH_PublicIP; | 1061 | char * _PREHASH_PublicIP; |
1163 | char * _PREHASH_TeleportFailed; | 1062 | char * _PREHASH_TeleportFailed; |
1164 | char * _PREHASH_OnlineStatusReply; | ||
1165 | char * _PREHASH_RequestAvatarInfo; | ||
1166 | char * _PREHASH_PreloadSound; | 1063 | char * _PREHASH_PreloadSound; |
1167 | char * _PREHASH_ScreenshotID; | 1064 | char * _PREHASH_ScreenshotID; |
1168 | char * _PREHASH_CovenantTimestamp; | 1065 | char * _PREHASH_CovenantTimestamp; |
1169 | char * _PREHASH_OldestUnacked; | 1066 | char * _PREHASH_OldestUnacked; |
1170 | char * _PREHASH_SimulatorIP; | 1067 | char * _PREHASH_SimulatorIP; |
1171 | char * _PREHASH_ObjectImport; | ||
1172 | char * _PREHASH_Value; | 1068 | char * _PREHASH_Value; |
1173 | char * _PREHASH_JointAxisOrAnchor; | 1069 | char * _PREHASH_JointAxisOrAnchor; |
1174 | char * _PREHASH_Test0; | 1070 | char * _PREHASH_Test0; |
1175 | char * _PREHASH_Test1; | 1071 | char * _PREHASH_Test1; |
1176 | char * _PREHASH_Test2; | 1072 | char * _PREHASH_Test2; |
1177 | char * _PREHASH_SunPhase; | 1073 | char * _PREHASH_SunPhase; |
1178 | char * _PREHASH_Place; | ||
1179 | char * _PREHASH_Phase; | ||
1180 | char * _PREHASH_ParcelDivide; | 1074 | char * _PREHASH_ParcelDivide; |
1181 | char * _PREHASH_PriceObjectClaim; | 1075 | char * _PREHASH_PriceObjectClaim; |
1182 | char * _PREHASH_Field; | 1076 | char * _PREHASH_Field; |
@@ -1186,7 +1080,6 @@ char * _PREHASH_LiveHelpGroupReply; | |||
1186 | char * _PREHASH_Score; | 1080 | char * _PREHASH_Score; |
1187 | char * _PREHASH_Image; | 1081 | char * _PREHASH_Image; |
1188 | char * _PREHASH_ObjectClickAction; | 1082 | char * _PREHASH_ObjectClickAction; |
1189 | char * _PREHASH_Delta; | ||
1190 | char * _PREHASH_Parameter; | 1083 | char * _PREHASH_Parameter; |
1191 | char * _PREHASH_Flags; | 1084 | char * _PREHASH_Flags; |
1192 | char * _PREHASH_Plane; | 1085 | char * _PREHASH_Plane; |
@@ -1196,26 +1089,24 @@ char * _PREHASH_DirFindQuery; | |||
1196 | char * _PREHASH_Textures; | 1089 | char * _PREHASH_Textures; |
1197 | char * _PREHASH_EventData; | 1090 | char * _PREHASH_EventData; |
1198 | char * _PREHASH_Final; | 1091 | char * _PREHASH_Final; |
1092 | char * _PREHASH_System; | ||
1199 | char * _PREHASH_TelehubPos; | 1093 | char * _PREHASH_TelehubPos; |
1200 | char * _PREHASH_ReportAutosaveCrash; | 1094 | char * _PREHASH_ReportAutosaveCrash; |
1201 | char * _PREHASH_CreateTrustedCircuit; | 1095 | char * _PREHASH_CreateTrustedCircuit; |
1202 | char * _PREHASH_DenyTrustedCircuit; | 1096 | char * _PREHASH_DenyTrustedCircuit; |
1203 | char * _PREHASH_RequestTrustedCircuit; | 1097 | char * _PREHASH_RequestTrustedCircuit; |
1204 | char * _PREHASH_Codec; | 1098 | char * _PREHASH_Codec; |
1205 | char * _PREHASH_Level; | ||
1206 | char * _PREHASH_Modal; | 1099 | char * _PREHASH_Modal; |
1207 | char * _PREHASH_ChildAgentUnknown; | 1100 | char * _PREHASH_ChildAgentUnknown; |
1208 | char * _PREHASH_LandingType; | 1101 | char * _PREHASH_LandingType; |
1209 | char * _PREHASH_ScriptRunningReply; | 1102 | char * _PREHASH_ScriptRunningReply; |
1210 | char * _PREHASH_MoneyDetailsReply; | ||
1211 | char * _PREHASH_Reply; | 1103 | char * _PREHASH_Reply; |
1104 | char * _PREHASH_GroupAccountDetailsReply; | ||
1212 | char * _PREHASH_TelehubRot; | 1105 | char * _PREHASH_TelehubRot; |
1213 | char * _PREHASH_RequestFriendship; | ||
1214 | char * _PREHASH_AcceptFriendship; | 1106 | char * _PREHASH_AcceptFriendship; |
1215 | char * _PREHASH_GroupAccountDetailsReply; | 1107 | char * _PREHASH_ItemType; |
1216 | char * _PREHASH_DwellInfo; | 1108 | char * _PREHASH_DwellInfo; |
1217 | char * _PREHASH_AgentResume; | 1109 | char * _PREHASH_AgentResume; |
1218 | char * _PREHASH_ItemType; | ||
1219 | char * _PREHASH_MailFilter; | 1110 | char * _PREHASH_MailFilter; |
1220 | char * _PREHASH_Disconnect; | 1111 | char * _PREHASH_Disconnect; |
1221 | char * _PREHASH_SimPosition; | 1112 | char * _PREHASH_SimPosition; |
@@ -1242,7 +1133,6 @@ char * _PREHASH_VoteType; | |||
1242 | char * _PREHASH_CategoryID; | 1133 | char * _PREHASH_CategoryID; |
1243 | char * _PREHASH_Token; | 1134 | char * _PREHASH_Token; |
1244 | char * _PREHASH_AggregatePerms; | 1135 | char * _PREHASH_AggregatePerms; |
1245 | char * _PREHASH_StartParcelRemoveAck; | ||
1246 | char * _PREHASH_ObjectSelect; | 1136 | char * _PREHASH_ObjectSelect; |
1247 | char * _PREHASH_ForceObjectSelect; | 1137 | char * _PREHASH_ForceObjectSelect; |
1248 | char * _PREHASH_Price; | 1138 | char * _PREHASH_Price; |
@@ -1271,7 +1161,6 @@ char * _PREHASH_Notes; | |||
1271 | char * _PREHASH_AvatarID; | 1161 | char * _PREHASH_AvatarID; |
1272 | char * _PREHASH_FounderID; | 1162 | char * _PREHASH_FounderID; |
1273 | char * _PREHASH_EndPointID; | 1163 | char * _PREHASH_EndPointID; |
1274 | char * _PREHASH_StipendEstimate; | ||
1275 | char * _PREHASH_LocationLookAt; | 1164 | char * _PREHASH_LocationLookAt; |
1276 | char * _PREHASH_Sound; | 1165 | char * _PREHASH_Sound; |
1277 | char * _PREHASH_Cover; | 1166 | char * _PREHASH_Cover; |
@@ -1291,12 +1180,12 @@ char * _PREHASH_ProfileHollow; | |||
1291 | char * _PREHASH_GroupRoleChanges; | 1180 | char * _PREHASH_GroupRoleChanges; |
1292 | char * _PREHASH_Count; | 1181 | char * _PREHASH_Count; |
1293 | char * _PREHASH_South; | 1182 | char * _PREHASH_South; |
1294 | char * _PREHASH_Entry; | ||
1295 | char * _PREHASH_ObjectUpdateCompressed; | 1183 | char * _PREHASH_ObjectUpdateCompressed; |
1296 | char * _PREHASH_MuteFlags; | 1184 | char * _PREHASH_MuteFlags; |
1297 | char * _PREHASH_Group; | 1185 | char * _PREHASH_Group; |
1298 | char * _PREHASH_AgentPause; | 1186 | char * _PREHASH_AgentPause; |
1299 | char * _PREHASH_LanguagesText; | 1187 | char * _PREHASH_LanguagesText; |
1188 | char * _PREHASH_Error; | ||
1300 | char * _PREHASH_InternalScriptMail; | 1189 | char * _PREHASH_InternalScriptMail; |
1301 | char * _PREHASH_FindAgent; | 1190 | char * _PREHASH_FindAgent; |
1302 | char * _PREHASH_AgentData; | 1191 | char * _PREHASH_AgentData; |
@@ -1305,7 +1194,6 @@ char * _PREHASH_AssetBlock; | |||
1305 | char * _PREHASH_AcceptNotices; | 1194 | char * _PREHASH_AcceptNotices; |
1306 | char * _PREHASH_SetGroupAcceptNotices; | 1195 | char * _PREHASH_SetGroupAcceptNotices; |
1307 | char * _PREHASH_CloseCircuit; | 1196 | char * _PREHASH_CloseCircuit; |
1308 | char * _PREHASH_LogControl; | ||
1309 | char * _PREHASH_TeleportFinish; | 1197 | char * _PREHASH_TeleportFinish; |
1310 | char * _PREHASH_PathRevolutions; | 1198 | char * _PREHASH_PathRevolutions; |
1311 | char * _PREHASH_ClassifiedInfoReply; | 1199 | char * _PREHASH_ClassifiedInfoReply; |
@@ -1322,7 +1210,6 @@ char * _PREHASH_DataHomeLocationRequest; | |||
1322 | char * _PREHASH_EventNotificationAddRequest; | 1210 | char * _PREHASH_EventNotificationAddRequest; |
1323 | char * _PREHASH_ParcelDwellRequest; | 1211 | char * _PREHASH_ParcelDwellRequest; |
1324 | char * _PREHASH_EventLocationRequest; | 1212 | char * _PREHASH_EventLocationRequest; |
1325 | char * _PREHASH_EndPeriod; | ||
1326 | char * _PREHASH_SetStartLocationRequest; | 1213 | char * _PREHASH_SetStartLocationRequest; |
1327 | char * _PREHASH_QueryStart; | 1214 | char * _PREHASH_QueryStart; |
1328 | char * _PREHASH_EjectData; | 1215 | char * _PREHASH_EjectData; |
@@ -1335,7 +1222,6 @@ char * _PREHASH_ParcelRelease; | |||
1335 | char * _PREHASH_VFileType; | 1222 | char * _PREHASH_VFileType; |
1336 | char * _PREHASH_EjectGroupMemberReply; | 1223 | char * _PREHASH_EjectGroupMemberReply; |
1337 | char * _PREHASH_ImageData; | 1224 | char * _PREHASH_ImageData; |
1338 | char * _PREHASH_SpaceServerSimulatorTimeMessage; | ||
1339 | char * _PREHASH_SimulatorViewerTimeMessage; | 1225 | char * _PREHASH_SimulatorViewerTimeMessage; |
1340 | char * _PREHASH_Rotation; | 1226 | char * _PREHASH_Rotation; |
1341 | char * _PREHASH_Selection; | 1227 | char * _PREHASH_Selection; |
@@ -1343,7 +1229,6 @@ char * _PREHASH_TransactionData; | |||
1343 | char * _PREHASH_OperationData; | 1229 | char * _PREHASH_OperationData; |
1344 | char * _PREHASH_ExpirationDate; | 1230 | char * _PREHASH_ExpirationDate; |
1345 | char * _PREHASH_ParcelDeedToGroup; | 1231 | char * _PREHASH_ParcelDeedToGroup; |
1346 | char * _PREHASH_DirPicksReply; | ||
1347 | char * _PREHASH_AvatarPicksReply; | 1232 | char * _PREHASH_AvatarPicksReply; |
1348 | char * _PREHASH_GroupTitlesReply; | 1233 | char * _PREHASH_GroupTitlesReply; |
1349 | char * _PREHASH_AgentInfo; | 1234 | char * _PREHASH_AgentInfo; |
@@ -1354,8 +1239,8 @@ char * _PREHASH_PassPrice; | |||
1354 | char * _PREHASH_SourceID; | 1239 | char * _PREHASH_SourceID; |
1355 | char * _PREHASH_ChangeUserRights; | 1240 | char * _PREHASH_ChangeUserRights; |
1356 | char * _PREHASH_TeleportFlags; | 1241 | char * _PREHASH_TeleportFlags; |
1357 | char * _PREHASH_AssetData; | ||
1358 | char * _PREHASH_SlaveParcelData; | 1242 | char * _PREHASH_SlaveParcelData; |
1243 | char * _PREHASH_AssetData; | ||
1359 | char * _PREHASH_MultipleObjectUpdate; | 1244 | char * _PREHASH_MultipleObjectUpdate; |
1360 | char * _PREHASH_ObjectUpdate; | 1245 | char * _PREHASH_ObjectUpdate; |
1361 | char * _PREHASH_ImprovedTerseObjectUpdate; | 1246 | char * _PREHASH_ImprovedTerseObjectUpdate; |
@@ -1371,7 +1256,6 @@ char * _PREHASH_TaskLocalID; | |||
1371 | char * _PREHASH_ClaimDate; | 1256 | char * _PREHASH_ClaimDate; |
1372 | char * _PREHASH_MergeParcel; | 1257 | char * _PREHASH_MergeParcel; |
1373 | char * _PREHASH_Priority; | 1258 | char * _PREHASH_Priority; |
1374 | char * _PREHASH_Building; | ||
1375 | char * _PREHASH_QueryText; | 1259 | char * _PREHASH_QueryText; |
1376 | char * _PREHASH_GroupNoticeAdd; | 1260 | char * _PREHASH_GroupNoticeAdd; |
1377 | char * _PREHASH_ReturnType; | 1261 | char * _PREHASH_ReturnType; |
@@ -1381,7 +1265,6 @@ char * _PREHASH_HeaderData; | |||
1381 | char * _PREHASH_RequestMultipleObjects; | 1265 | char * _PREHASH_RequestMultipleObjects; |
1382 | char * _PREHASH_RetrieveInstantMessages; | 1266 | char * _PREHASH_RetrieveInstantMessages; |
1383 | char * _PREHASH_OpenCircuit; | 1267 | char * _PREHASH_OpenCircuit; |
1384 | char * _PREHASH_SecureSessionID; | ||
1385 | char * _PREHASH_CrossedRegion; | 1268 | char * _PREHASH_CrossedRegion; |
1386 | char * _PREHASH_DirGroupsReply; | 1269 | char * _PREHASH_DirGroupsReply; |
1387 | char * _PREHASH_AvatarGroupsReply; | 1270 | char * _PREHASH_AvatarGroupsReply; |
@@ -1392,18 +1275,14 @@ char * _PREHASH_Position; | |||
1392 | char * _PREHASH_ParentEstate; | 1275 | char * _PREHASH_ParentEstate; |
1393 | char * _PREHASH_EstateName; | 1276 | char * _PREHASH_EstateName; |
1394 | char * _PREHASH_MuteName; | 1277 | char * _PREHASH_MuteName; |
1395 | char * _PREHASH_StartParcelRename; | ||
1396 | char * _PREHASH_BulkParcelRename; | ||
1397 | char * _PREHASH_ParcelRename; | 1278 | char * _PREHASH_ParcelRename; |
1398 | char * _PREHASH_ViewerFilename; | 1279 | char * _PREHASH_ViewerFilename; |
1399 | char * _PREHASH_Positive; | ||
1400 | char * _PREHASH_UserReportInternal; | 1280 | char * _PREHASH_UserReportInternal; |
1401 | char * _PREHASH_AvatarPropertiesRequest; | 1281 | char * _PREHASH_AvatarPropertiesRequest; |
1402 | char * _PREHASH_ParcelPropertiesRequest; | 1282 | char * _PREHASH_ParcelPropertiesRequest; |
1403 | char * _PREHASH_GroupProfileRequest; | 1283 | char * _PREHASH_GroupProfileRequest; |
1404 | char * _PREHASH_AgentDataUpdateRequest; | 1284 | char * _PREHASH_AgentDataUpdateRequest; |
1405 | char * _PREHASH_PriceObjectScaleFactor; | 1285 | char * _PREHASH_PriceObjectScaleFactor; |
1406 | char * _PREHASH_DirPicksQuery; | ||
1407 | char * _PREHASH_OpenEnrollment; | 1286 | char * _PREHASH_OpenEnrollment; |
1408 | char * _PREHASH_GroupData; | 1287 | char * _PREHASH_GroupData; |
1409 | char * _PREHASH_RequestGodlikePowers; | 1288 | char * _PREHASH_RequestGodlikePowers; |
@@ -1414,7 +1293,6 @@ char * _PREHASH_Controls; | |||
1414 | char * _PREHASH_FirstDetachAll; | 1293 | char * _PREHASH_FirstDetachAll; |
1415 | char * _PREHASH_EstateID; | 1294 | char * _PREHASH_EstateID; |
1416 | char * _PREHASH_ImprovedInstantMessage; | 1295 | char * _PREHASH_ImprovedInstantMessage; |
1417 | char * _PREHASH_AgentQuit; | ||
1418 | char * _PREHASH_CheckParcelSales; | 1296 | char * _PREHASH_CheckParcelSales; |
1419 | char * _PREHASH_ParcelSales; | 1297 | char * _PREHASH_ParcelSales; |
1420 | char * _PREHASH_CurrentInterval; | 1298 | char * _PREHASH_CurrentInterval; |
@@ -1431,12 +1309,8 @@ char * _PREHASH_OwnerIDs; | |||
1431 | char * _PREHASH_SystemKickUser; | 1309 | char * _PREHASH_SystemKickUser; |
1432 | char * _PREHASH_TransactionTime; | 1310 | char * _PREHASH_TransactionTime; |
1433 | char * _PREHASH_TimeToLive; | 1311 | char * _PREHASH_TimeToLive; |
1434 | char * _PREHASH_StartParcelRemove; | ||
1435 | char * _PREHASH_BulkParcelRemove; | ||
1436 | char * _PREHASH_OldAgentID; | 1312 | char * _PREHASH_OldAgentID; |
1437 | char * _PREHASH_BonusEstimate; | ||
1438 | char * _PREHASH_MusicURL; | 1313 | char * _PREHASH_MusicURL; |
1439 | char * _PREHASH_CompleteLure; | ||
1440 | char * _PREHASH_ParcelPrimBonus; | 1314 | char * _PREHASH_ParcelPrimBonus; |
1441 | char * _PREHASH_EjectUser; | 1315 | char * _PREHASH_EjectUser; |
1442 | char * _PREHASH_CoarseLocationUpdate; | 1316 | char * _PREHASH_CoarseLocationUpdate; |
@@ -1469,10 +1343,6 @@ char * _PREHASH_ParcelProperties; | |||
1469 | char * _PREHASH_EstateOwnerID; | 1343 | char * _PREHASH_EstateOwnerID; |
1470 | char * _PREHASH_LogoutRequest; | 1344 | char * _PREHASH_LogoutRequest; |
1471 | char * _PREHASH_AssetUploadRequest; | 1345 | char * _PREHASH_AssetUploadRequest; |
1472 | char * _PREHASH_ReputationIndividualRequest; | ||
1473 | char * _PREHASH_MajorVersion; | ||
1474 | char * _PREHASH_MinorVersion; | ||
1475 | char * _PREHASH_SimulatorAssign; | ||
1476 | char * _PREHASH_TransactionType; | 1346 | char * _PREHASH_TransactionType; |
1477 | char * _PREHASH_AvatarPropertiesUpdate; | 1347 | char * _PREHASH_AvatarPropertiesUpdate; |
1478 | char * _PREHASH_ParcelPropertiesUpdate; | 1348 | char * _PREHASH_ParcelPropertiesUpdate; |
@@ -1481,7 +1351,6 @@ char * _PREHASH_AbortXfer; | |||
1481 | char * _PREHASH_DeRezAck; | 1351 | char * _PREHASH_DeRezAck; |
1482 | char * _PREHASH_TakeControls; | 1352 | char * _PREHASH_TakeControls; |
1483 | char * _PREHASH_DirLandReply; | 1353 | char * _PREHASH_DirLandReply; |
1484 | char * _PREHASH_SpaceLocationTeleportReply; | ||
1485 | char * _PREHASH_MuteType; | 1354 | char * _PREHASH_MuteType; |
1486 | char * _PREHASH_IMViaEMail; | 1355 | char * _PREHASH_IMViaEMail; |
1487 | char * _PREHASH_RentPrice; | 1356 | char * _PREHASH_RentPrice; |
@@ -1522,7 +1391,6 @@ void init_prehash_data() | |||
1522 | _PREHASH_PartnerID = gMessageStringTable.getString("PartnerID"); | 1391 | _PREHASH_PartnerID = gMessageStringTable.getString("PartnerID"); |
1523 | _PREHASH_DirLandQuery = gMessageStringTable.getString("DirLandQuery"); | 1392 | _PREHASH_DirLandQuery = gMessageStringTable.getString("DirLandQuery"); |
1524 | _PREHASH_TeleportStart = gMessageStringTable.getString("TeleportStart"); | 1393 | _PREHASH_TeleportStart = gMessageStringTable.getString("TeleportStart"); |
1525 | _PREHASH_LogMessages = gMessageStringTable.getString("LogMessages"); | ||
1526 | _PREHASH_AboutText = gMessageStringTable.getString("AboutText"); | 1394 | _PREHASH_AboutText = gMessageStringTable.getString("AboutText"); |
1527 | _PREHASH_VisualParam = gMessageStringTable.getString("VisualParam"); | 1395 | _PREHASH_VisualParam = gMessageStringTable.getString("VisualParam"); |
1528 | _PREHASH_GroupPrims = gMessageStringTable.getString("GroupPrims"); | 1396 | _PREHASH_GroupPrims = gMessageStringTable.getString("GroupPrims"); |
@@ -1530,10 +1398,8 @@ void init_prehash_data() | |||
1530 | _PREHASH_ID = gMessageStringTable.getString("ID"); | 1398 | _PREHASH_ID = gMessageStringTable.getString("ID"); |
1531 | _PREHASH_UUIDNameRequest = gMessageStringTable.getString("UUIDNameRequest"); | 1399 | _PREHASH_UUIDNameRequest = gMessageStringTable.getString("UUIDNameRequest"); |
1532 | _PREHASH_UUIDGroupNameRequest = gMessageStringTable.getString("UUIDGroupNameRequest"); | 1400 | _PREHASH_UUIDGroupNameRequest = gMessageStringTable.getString("UUIDGroupNameRequest"); |
1533 | _PREHASH_MoneyTransactionsRequest = gMessageStringTable.getString("MoneyTransactionsRequest"); | ||
1534 | _PREHASH_GroupAccountTransactionsRequest = gMessageStringTable.getString("GroupAccountTransactionsRequest"); | 1401 | _PREHASH_GroupAccountTransactionsRequest = gMessageStringTable.getString("GroupAccountTransactionsRequest"); |
1535 | _PREHASH_MapNameRequest = gMessageStringTable.getString("MapNameRequest"); | 1402 | _PREHASH_MapNameRequest = gMessageStringTable.getString("MapNameRequest"); |
1536 | _PREHASH_MailTaskSimRequest = gMessageStringTable.getString("MailTaskSimRequest"); | ||
1537 | _PREHASH_UpdateSimulator = gMessageStringTable.getString("UpdateSimulator"); | 1403 | _PREHASH_UpdateSimulator = gMessageStringTable.getString("UpdateSimulator"); |
1538 | _PREHASH_BillableFactor = gMessageStringTable.getString("BillableFactor"); | 1404 | _PREHASH_BillableFactor = gMessageStringTable.getString("BillableFactor"); |
1539 | _PREHASH_ObjectBonusFactor = gMessageStringTable.getString("ObjectBonusFactor"); | 1405 | _PREHASH_ObjectBonusFactor = gMessageStringTable.getString("ObjectBonusFactor"); |
@@ -1543,7 +1409,6 @@ void init_prehash_data() | |||
1543 | _PREHASH_LayerType = gMessageStringTable.getString("LayerType"); | 1409 | _PREHASH_LayerType = gMessageStringTable.getString("LayerType"); |
1544 | _PREHASH_OwnerRole = gMessageStringTable.getString("OwnerRole"); | 1410 | _PREHASH_OwnerRole = gMessageStringTable.getString("OwnerRole"); |
1545 | _PREHASH_ParcelOverlay = gMessageStringTable.getString("ParcelOverlay"); | 1411 | _PREHASH_ParcelOverlay = gMessageStringTable.getString("ParcelOverlay"); |
1546 | _PREHASH_AdjustBalance = gMessageStringTable.getString("AdjustBalance"); | ||
1547 | _PREHASH_GroupOwned = gMessageStringTable.getString("GroupOwned"); | 1412 | _PREHASH_GroupOwned = gMessageStringTable.getString("GroupOwned"); |
1548 | _PREHASH_IP = gMessageStringTable.getString("IP"); | 1413 | _PREHASH_IP = gMessageStringTable.getString("IP"); |
1549 | _PREHASH_ChatFromViewer = gMessageStringTable.getString("ChatFromViewer"); | 1414 | _PREHASH_ChatFromViewer = gMessageStringTable.getString("ChatFromViewer"); |
@@ -1578,8 +1443,8 @@ void init_prehash_data() | |||
1578 | _PREHASH_UpdateBlock = gMessageStringTable.getString("UpdateBlock"); | 1443 | _PREHASH_UpdateBlock = gMessageStringTable.getString("UpdateBlock"); |
1579 | _PREHASH_ClassifiedGodDelete = gMessageStringTable.getString("ClassifiedGodDelete"); | 1444 | _PREHASH_ClassifiedGodDelete = gMessageStringTable.getString("ClassifiedGodDelete"); |
1580 | _PREHASH_ObjectGrabUpdate = gMessageStringTable.getString("ObjectGrabUpdate"); | 1445 | _PREHASH_ObjectGrabUpdate = gMessageStringTable.getString("ObjectGrabUpdate"); |
1581 | _PREHASH_TaxDate = gMessageStringTable.getString("TaxDate"); | ||
1582 | _PREHASH_LocationPos = gMessageStringTable.getString("LocationPos"); | 1446 | _PREHASH_LocationPos = gMessageStringTable.getString("LocationPos"); |
1447 | _PREHASH_TaxDate = gMessageStringTable.getString("TaxDate"); | ||
1583 | _PREHASH_StartDateTime = gMessageStringTable.getString("StartDateTime"); | 1448 | _PREHASH_StartDateTime = gMessageStringTable.getString("StartDateTime"); |
1584 | _PREHASH_ObjectUpdateCached = gMessageStringTable.getString("ObjectUpdateCached"); | 1449 | _PREHASH_ObjectUpdateCached = gMessageStringTable.getString("ObjectUpdateCached"); |
1585 | _PREHASH_Packets = gMessageStringTable.getString("Packets"); | 1450 | _PREHASH_Packets = gMessageStringTable.getString("Packets"); |
@@ -1611,14 +1476,11 @@ void init_prehash_data() | |||
1611 | _PREHASH_ClassifiedFlags = gMessageStringTable.getString("ClassifiedFlags"); | 1476 | _PREHASH_ClassifiedFlags = gMessageStringTable.getString("ClassifiedFlags"); |
1612 | _PREHASH_ControlFlags = gMessageStringTable.getString("ControlFlags"); | 1477 | _PREHASH_ControlFlags = gMessageStringTable.getString("ControlFlags"); |
1613 | _PREHASH_TeleportRequest = gMessageStringTable.getString("TeleportRequest"); | 1478 | _PREHASH_TeleportRequest = gMessageStringTable.getString("TeleportRequest"); |
1614 | _PREHASH_SpaceLocationTeleportRequest = gMessageStringTable.getString("SpaceLocationTeleportRequest"); | ||
1615 | _PREHASH_LeaderBoardRequest = gMessageStringTable.getString("LeaderBoardRequest"); | ||
1616 | _PREHASH_ScriptTeleportRequest = gMessageStringTable.getString("ScriptTeleportRequest"); | 1479 | _PREHASH_ScriptTeleportRequest = gMessageStringTable.getString("ScriptTeleportRequest"); |
1480 | _PREHASH_EstateCovenantRequest = gMessageStringTable.getString("EstateCovenantRequest"); | ||
1617 | _PREHASH_DateUTC = gMessageStringTable.getString("DateUTC"); | 1481 | _PREHASH_DateUTC = gMessageStringTable.getString("DateUTC"); |
1618 | _PREHASH_TaskIDs = gMessageStringTable.getString("TaskIDs"); | 1482 | _PREHASH_TaskIDs = gMessageStringTable.getString("TaskIDs"); |
1619 | _PREHASH_EstateCovenantRequest = gMessageStringTable.getString("EstateCovenantRequest"); | ||
1620 | _PREHASH_RequestResult = gMessageStringTable.getString("RequestResult"); | 1483 | _PREHASH_RequestResult = gMessageStringTable.getString("RequestResult"); |
1621 | _PREHASH_ReputationAgentAssign = gMessageStringTable.getString("ReputationAgentAssign"); | ||
1622 | _PREHASH_CanAcceptAgents = gMessageStringTable.getString("CanAcceptAgents"); | 1484 | _PREHASH_CanAcceptAgents = gMessageStringTable.getString("CanAcceptAgents"); |
1623 | _PREHASH_ObjectSaleInfo = gMessageStringTable.getString("ObjectSaleInfo"); | 1485 | _PREHASH_ObjectSaleInfo = gMessageStringTable.getString("ObjectSaleInfo"); |
1624 | _PREHASH_KillChildAgents = gMessageStringTable.getString("KillChildAgents"); | 1486 | _PREHASH_KillChildAgents = gMessageStringTable.getString("KillChildAgents"); |
@@ -1630,7 +1492,6 @@ void init_prehash_data() | |||
1630 | _PREHASH_OwnershipCost = gMessageStringTable.getString("OwnershipCost"); | 1492 | _PREHASH_OwnershipCost = gMessageStringTable.getString("OwnershipCost"); |
1631 | _PREHASH_AvatarNotesUpdate = gMessageStringTable.getString("AvatarNotesUpdate"); | 1493 | _PREHASH_AvatarNotesUpdate = gMessageStringTable.getString("AvatarNotesUpdate"); |
1632 | _PREHASH_PID = gMessageStringTable.getString("PID"); | 1494 | _PREHASH_PID = gMessageStringTable.getString("PID"); |
1633 | _PREHASH_TimeString = gMessageStringTable.getString("TimeString"); | ||
1634 | _PREHASH_DirPopularReply = gMessageStringTable.getString("DirPopularReply"); | 1495 | _PREHASH_DirPopularReply = gMessageStringTable.getString("DirPopularReply"); |
1635 | _PREHASH_TerrainHeightRange00 = gMessageStringTable.getString("TerrainHeightRange00"); | 1496 | _PREHASH_TerrainHeightRange00 = gMessageStringTable.getString("TerrainHeightRange00"); |
1636 | _PREHASH_SimData = gMessageStringTable.getString("SimData"); | 1497 | _PREHASH_SimData = gMessageStringTable.getString("SimData"); |
@@ -1656,7 +1517,6 @@ void init_prehash_data() | |||
1656 | _PREHASH_URL = gMessageStringTable.getString("URL"); | 1517 | _PREHASH_URL = gMessageStringTable.getString("URL"); |
1657 | _PREHASH_CreationDate = gMessageStringTable.getString("CreationDate"); | 1518 | _PREHASH_CreationDate = gMessageStringTable.getString("CreationDate"); |
1658 | _PREHASH_JointPivot = gMessageStringTable.getString("JointPivot"); | 1519 | _PREHASH_JointPivot = gMessageStringTable.getString("JointPivot"); |
1659 | _PREHASH_RateeID = gMessageStringTable.getString("RateeID"); | ||
1660 | _PREHASH_FPS = gMessageStringTable.getString("FPS"); | 1520 | _PREHASH_FPS = gMessageStringTable.getString("FPS"); |
1661 | _PREHASH_HasTelehub = gMessageStringTable.getString("HasTelehub"); | 1521 | _PREHASH_HasTelehub = gMessageStringTable.getString("HasTelehub"); |
1662 | _PREHASH_PathEnd = gMessageStringTable.getString("PathEnd"); | 1522 | _PREHASH_PathEnd = gMessageStringTable.getString("PathEnd"); |
@@ -1681,7 +1541,6 @@ void init_prehash_data() | |||
1681 | _PREHASH_ParcelAccessListReply = gMessageStringTable.getString("ParcelAccessListReply"); | 1541 | _PREHASH_ParcelAccessListReply = gMessageStringTable.getString("ParcelAccessListReply"); |
1682 | _PREHASH_RpcChannelReply = gMessageStringTable.getString("RpcChannelReply"); | 1542 | _PREHASH_RpcChannelReply = gMessageStringTable.getString("RpcChannelReply"); |
1683 | _PREHASH_RegionPresenceResponse = gMessageStringTable.getString("RegionPresenceResponse"); | 1543 | _PREHASH_RegionPresenceResponse = gMessageStringTable.getString("RegionPresenceResponse"); |
1684 | _PREHASH_AgentPresenceResponse = gMessageStringTable.getString("AgentPresenceResponse"); | ||
1685 | _PREHASH_CharterMember = gMessageStringTable.getString("CharterMember"); | 1544 | _PREHASH_CharterMember = gMessageStringTable.getString("CharterMember"); |
1686 | _PREHASH_EdgeData = gMessageStringTable.getString("EdgeData"); | 1545 | _PREHASH_EdgeData = gMessageStringTable.getString("EdgeData"); |
1687 | _PREHASH_NameData = gMessageStringTable.getString("NameData"); | 1546 | _PREHASH_NameData = gMessageStringTable.getString("NameData"); |
@@ -1695,14 +1554,12 @@ void init_prehash_data() | |||
1695 | _PREHASH_ParcelPropertiesRequestByID = gMessageStringTable.getString("ParcelPropertiesRequestByID"); | 1554 | _PREHASH_ParcelPropertiesRequestByID = gMessageStringTable.getString("ParcelPropertiesRequestByID"); |
1696 | _PREHASH_ObjectLink = gMessageStringTable.getString("ObjectLink"); | 1555 | _PREHASH_ObjectLink = gMessageStringTable.getString("ObjectLink"); |
1697 | _PREHASH_RpcScriptReplyInbound = gMessageStringTable.getString("RpcScriptReplyInbound"); | 1556 | _PREHASH_RpcScriptReplyInbound = gMessageStringTable.getString("RpcScriptReplyInbound"); |
1698 | _PREHASH_BoardData = gMessageStringTable.getString("BoardData"); | ||
1699 | _PREHASH_RezData = gMessageStringTable.getString("RezData"); | 1557 | _PREHASH_RezData = gMessageStringTable.getString("RezData"); |
1700 | _PREHASH_RemoveInventoryObjects = gMessageStringTable.getString("RemoveInventoryObjects"); | 1558 | _PREHASH_RemoveInventoryObjects = gMessageStringTable.getString("RemoveInventoryObjects"); |
1701 | _PREHASH_GroupProposalBallot = gMessageStringTable.getString("GroupProposalBallot"); | 1559 | _PREHASH_GroupProposalBallot = gMessageStringTable.getString("GroupProposalBallot"); |
1702 | _PREHASH_RPCServerIP = gMessageStringTable.getString("RPCServerIP"); | 1560 | _PREHASH_RPCServerIP = gMessageStringTable.getString("RPCServerIP"); |
1703 | _PREHASH_Far = gMessageStringTable.getString("Far"); | 1561 | _PREHASH_Far = gMessageStringTable.getString("Far"); |
1704 | _PREHASH_GodSessionID = gMessageStringTable.getString("GodSessionID"); | 1562 | _PREHASH_GodSessionID = gMessageStringTable.getString("GodSessionID"); |
1705 | _PREHASH_ViewerDigest = gMessageStringTable.getString("ViewerDigest"); | ||
1706 | _PREHASH_FLAboutText = gMessageStringTable.getString("FLAboutText"); | 1563 | _PREHASH_FLAboutText = gMessageStringTable.getString("FLAboutText"); |
1707 | _PREHASH_RegionHandshakeReply = gMessageStringTable.getString("RegionHandshakeReply"); | 1564 | _PREHASH_RegionHandshakeReply = gMessageStringTable.getString("RegionHandshakeReply"); |
1708 | _PREHASH_GroupActiveProposalItemReply = gMessageStringTable.getString("GroupActiveProposalItemReply"); | 1565 | _PREHASH_GroupActiveProposalItemReply = gMessageStringTable.getString("GroupActiveProposalItemReply"); |
@@ -1714,7 +1571,6 @@ void init_prehash_data() | |||
1714 | _PREHASH_NewName = gMessageStringTable.getString("NewName"); | 1571 | _PREHASH_NewName = gMessageStringTable.getString("NewName"); |
1715 | _PREHASH_Key = gMessageStringTable.getString("Key"); | 1572 | _PREHASH_Key = gMessageStringTable.getString("Key"); |
1716 | _PREHASH_AgentID = gMessageStringTable.getString("AgentID"); | 1573 | _PREHASH_AgentID = gMessageStringTable.getString("AgentID"); |
1717 | _PREHASH_OnlineStatusRequest = gMessageStringTable.getString("OnlineStatusRequest"); | ||
1718 | _PREHASH_EventNotificationRemoveRequest = gMessageStringTable.getString("EventNotificationRemoveRequest"); | 1574 | _PREHASH_EventNotificationRemoveRequest = gMessageStringTable.getString("EventNotificationRemoveRequest"); |
1719 | _PREHASH_NewFolderID = gMessageStringTable.getString("NewFolderID"); | 1575 | _PREHASH_NewFolderID = gMessageStringTable.getString("NewFolderID"); |
1720 | _PREHASH_Arc = gMessageStringTable.getString("Arc"); | 1576 | _PREHASH_Arc = gMessageStringTable.getString("Arc"); |
@@ -1726,7 +1582,6 @@ void init_prehash_data() | |||
1726 | _PREHASH_MiscStats = gMessageStringTable.getString("MiscStats"); | 1582 | _PREHASH_MiscStats = gMessageStringTable.getString("MiscStats"); |
1727 | _PREHASH_ImageID = gMessageStringTable.getString("ImageID"); | 1583 | _PREHASH_ImageID = gMessageStringTable.getString("ImageID"); |
1728 | _PREHASH_DataPacket = gMessageStringTable.getString("DataPacket"); | 1584 | _PREHASH_DataPacket = gMessageStringTable.getString("DataPacket"); |
1729 | _PREHASH_ObjectDehinge = gMessageStringTable.getString("ObjectDehinge"); | ||
1730 | _PREHASH_You = gMessageStringTable.getString("You"); | 1585 | _PREHASH_You = gMessageStringTable.getString("You"); |
1731 | _PREHASH_ScriptControlChange = gMessageStringTable.getString("ScriptControlChange"); | 1586 | _PREHASH_ScriptControlChange = gMessageStringTable.getString("ScriptControlChange"); |
1732 | _PREHASH_LoadURL = gMessageStringTable.getString("LoadURL"); | 1587 | _PREHASH_LoadURL = gMessageStringTable.getString("LoadURL"); |
@@ -1743,9 +1598,9 @@ void init_prehash_data() | |||
1743 | _PREHASH_SetGroupContribution = gMessageStringTable.getString("SetGroupContribution"); | 1598 | _PREHASH_SetGroupContribution = gMessageStringTable.getString("SetGroupContribution"); |
1744 | _PREHASH_Offline = gMessageStringTable.getString("Offline"); | 1599 | _PREHASH_Offline = gMessageStringTable.getString("Offline"); |
1745 | _PREHASH_AgentIsNowWearing = gMessageStringTable.getString("AgentIsNowWearing"); | 1600 | _PREHASH_AgentIsNowWearing = gMessageStringTable.getString("AgentIsNowWearing"); |
1746 | _PREHASH_SecPerDay = gMessageStringTable.getString("SecPerDay"); | ||
1747 | _PREHASH_Members = gMessageStringTable.getString("Members"); | 1601 | _PREHASH_Members = gMessageStringTable.getString("Members"); |
1748 | _PREHASH_FailedResends = gMessageStringTable.getString("FailedResends"); | 1602 | _PREHASH_FailedResends = gMessageStringTable.getString("FailedResends"); |
1603 | _PREHASH_SecPerDay = gMessageStringTable.getString("SecPerDay"); | ||
1749 | _PREHASH_CameraCenter = gMessageStringTable.getString("CameraCenter"); | 1604 | _PREHASH_CameraCenter = gMessageStringTable.getString("CameraCenter"); |
1750 | _PREHASH_CameraLeftAxis = gMessageStringTable.getString("CameraLeftAxis"); | 1605 | _PREHASH_CameraLeftAxis = gMessageStringTable.getString("CameraLeftAxis"); |
1751 | _PREHASH_ExBlock = gMessageStringTable.getString("ExBlock"); | 1606 | _PREHASH_ExBlock = gMessageStringTable.getString("ExBlock"); |
@@ -1753,7 +1608,6 @@ void init_prehash_data() | |||
1753 | _PREHASH_NetTest = gMessageStringTable.getString("NetTest"); | 1608 | _PREHASH_NetTest = gMessageStringTable.getString("NetTest"); |
1754 | _PREHASH_DiscardLevel = gMessageStringTable.getString("DiscardLevel"); | 1609 | _PREHASH_DiscardLevel = gMessageStringTable.getString("DiscardLevel"); |
1755 | _PREHASH_LayerID = gMessageStringTable.getString("LayerID"); | 1610 | _PREHASH_LayerID = gMessageStringTable.getString("LayerID"); |
1756 | _PREHASH_RatorID = gMessageStringTable.getString("RatorID"); | ||
1757 | _PREHASH_GrabOffset = gMessageStringTable.getString("GrabOffset"); | 1611 | _PREHASH_GrabOffset = gMessageStringTable.getString("GrabOffset"); |
1758 | _PREHASH_SimPort = gMessageStringTable.getString("SimPort"); | 1612 | _PREHASH_SimPort = gMessageStringTable.getString("SimPort"); |
1759 | _PREHASH_PricePerMeter = gMessageStringTable.getString("PricePerMeter"); | 1613 | _PREHASH_PricePerMeter = gMessageStringTable.getString("PricePerMeter"); |
@@ -1773,21 +1627,16 @@ void init_prehash_data() | |||
1773 | _PREHASH_RegionsVisited = gMessageStringTable.getString("RegionsVisited"); | 1627 | _PREHASH_RegionsVisited = gMessageStringTable.getString("RegionsVisited"); |
1774 | _PREHASH_DirClassifiedReply = gMessageStringTable.getString("DirClassifiedReply"); | 1628 | _PREHASH_DirClassifiedReply = gMessageStringTable.getString("DirClassifiedReply"); |
1775 | _PREHASH_AvatarClassifiedReply = gMessageStringTable.getString("AvatarClassifiedReply"); | 1629 | _PREHASH_AvatarClassifiedReply = gMessageStringTable.getString("AvatarClassifiedReply"); |
1776 | _PREHASH_ReputationIndividualReply = gMessageStringTable.getString("ReputationIndividualReply"); | ||
1777 | _PREHASH_MediaURL = gMessageStringTable.getString("MediaURL"); | 1630 | _PREHASH_MediaURL = gMessageStringTable.getString("MediaURL"); |
1778 | _PREHASH_CompleteAgentMovement = gMessageStringTable.getString("CompleteAgentMovement"); | 1631 | _PREHASH_CompleteAgentMovement = gMessageStringTable.getString("CompleteAgentMovement"); |
1779 | _PREHASH_SpaceIP = gMessageStringTable.getString("SpaceIP"); | ||
1780 | _PREHASH_ClassifiedID = gMessageStringTable.getString("ClassifiedID"); | 1632 | _PREHASH_ClassifiedID = gMessageStringTable.getString("ClassifiedID"); |
1781 | _PREHASH_LocalID = gMessageStringTable.getString("LocalID"); | 1633 | _PREHASH_LocalID = gMessageStringTable.getString("LocalID"); |
1634 | _PREHASH_SpaceIP = gMessageStringTable.getString("SpaceIP"); | ||
1782 | _PREHASH_RemoveItem = gMessageStringTable.getString("RemoveItem"); | 1635 | _PREHASH_RemoveItem = gMessageStringTable.getString("RemoveItem"); |
1783 | _PREHASH_LogFailedMoneyTransaction = gMessageStringTable.getString("LogFailedMoneyTransaction"); | 1636 | _PREHASH_LogFailedMoneyTransaction = gMessageStringTable.getString("LogFailedMoneyTransaction"); |
1784 | _PREHASH_ViewerStartAuction = gMessageStringTable.getString("ViewerStartAuction"); | 1637 | _PREHASH_ViewerStartAuction = gMessageStringTable.getString("ViewerStartAuction"); |
1785 | _PREHASH_StartAuction = gMessageStringTable.getString("StartAuction"); | 1638 | _PREHASH_StartAuction = gMessageStringTable.getString("StartAuction"); |
1786 | _PREHASH_NameValueName = gMessageStringTable.getString("NameValueName"); | ||
1787 | _PREHASH_AngVelX = gMessageStringTable.getString("AngVelX"); | ||
1788 | _PREHASH_DuplicateFlags = gMessageStringTable.getString("DuplicateFlags"); | 1639 | _PREHASH_DuplicateFlags = gMessageStringTable.getString("DuplicateFlags"); |
1789 | _PREHASH_AngVelY = gMessageStringTable.getString("AngVelY"); | ||
1790 | _PREHASH_AngVelZ = gMessageStringTable.getString("AngVelZ"); | ||
1791 | _PREHASH_TextColor = gMessageStringTable.getString("TextColor"); | 1640 | _PREHASH_TextColor = gMessageStringTable.getString("TextColor"); |
1792 | _PREHASH_SlaveID = gMessageStringTable.getString("SlaveID"); | 1641 | _PREHASH_SlaveID = gMessageStringTable.getString("SlaveID"); |
1793 | _PREHASH_Charter = gMessageStringTable.getString("Charter"); | 1642 | _PREHASH_Charter = gMessageStringTable.getString("Charter"); |
@@ -1798,21 +1647,16 @@ void init_prehash_data() | |||
1798 | _PREHASH_OwnerIsGroup = gMessageStringTable.getString("OwnerIsGroup"); | 1647 | _PREHASH_OwnerIsGroup = gMessageStringTable.getString("OwnerIsGroup"); |
1799 | _PREHASH_NameValuePair = gMessageStringTable.getString("NameValuePair"); | 1648 | _PREHASH_NameValuePair = gMessageStringTable.getString("NameValuePair"); |
1800 | _PREHASH_RemoveNameValuePair = gMessageStringTable.getString("RemoveNameValuePair"); | 1649 | _PREHASH_RemoveNameValuePair = gMessageStringTable.getString("RemoveNameValuePair"); |
1801 | _PREHASH_GetNameValuePair = gMessageStringTable.getString("GetNameValuePair"); | ||
1802 | _PREHASH_BulkUpdateInventory = gMessageStringTable.getString("BulkUpdateInventory"); | 1650 | _PREHASH_BulkUpdateInventory = gMessageStringTable.getString("BulkUpdateInventory"); |
1803 | _PREHASH_UpdateTaskInventory = gMessageStringTable.getString("UpdateTaskInventory"); | 1651 | _PREHASH_UpdateTaskInventory = gMessageStringTable.getString("UpdateTaskInventory"); |
1804 | _PREHASH_RemoveTaskInventory = gMessageStringTable.getString("RemoveTaskInventory"); | 1652 | _PREHASH_RemoveTaskInventory = gMessageStringTable.getString("RemoveTaskInventory"); |
1805 | _PREHASH_MoveTaskInventory = gMessageStringTable.getString("MoveTaskInventory"); | 1653 | _PREHASH_MoveTaskInventory = gMessageStringTable.getString("MoveTaskInventory"); |
1806 | _PREHASH_RequestTaskInventory = gMessageStringTable.getString("RequestTaskInventory"); | 1654 | _PREHASH_RequestTaskInventory = gMessageStringTable.getString("RequestTaskInventory"); |
1807 | _PREHASH_ReplyTaskInventory = gMessageStringTable.getString("ReplyTaskInventory"); | 1655 | _PREHASH_ReplyTaskInventory = gMessageStringTable.getString("ReplyTaskInventory"); |
1808 | _PREHASH_DeclineInventory = gMessageStringTable.getString("DeclineInventory"); | ||
1809 | _PREHASH_AggregatePermInventory = gMessageStringTable.getString("AggregatePermInventory"); | 1656 | _PREHASH_AggregatePermInventory = gMessageStringTable.getString("AggregatePermInventory"); |
1810 | _PREHASH_SimulatorInfo = gMessageStringTable.getString("SimulatorInfo"); | ||
1811 | _PREHASH_MoneyTransactionsReply = gMessageStringTable.getString("MoneyTransactionsReply"); | ||
1812 | _PREHASH_GroupAccountTransactionsReply = gMessageStringTable.getString("GroupAccountTransactionsReply"); | 1657 | _PREHASH_GroupAccountTransactionsReply = gMessageStringTable.getString("GroupAccountTransactionsReply"); |
1813 | _PREHASH_MailTaskSimReply = gMessageStringTable.getString("MailTaskSimReply"); | 1658 | _PREHASH_SimulatorInfo = gMessageStringTable.getString("SimulatorInfo"); |
1814 | _PREHASH_WearableData = gMessageStringTable.getString("WearableData"); | 1659 | _PREHASH_WearableData = gMessageStringTable.getString("WearableData"); |
1815 | _PREHASH_StatisticsData = gMessageStringTable.getString("StatisticsData"); | ||
1816 | _PREHASH_Enabled = gMessageStringTable.getString("Enabled"); | 1660 | _PREHASH_Enabled = gMessageStringTable.getString("Enabled"); |
1817 | _PREHASH_Savings = gMessageStringTable.getString("Savings"); | 1661 | _PREHASH_Savings = gMessageStringTable.getString("Savings"); |
1818 | _PREHASH_SimulatorLoad = gMessageStringTable.getString("SimulatorLoad"); | 1662 | _PREHASH_SimulatorLoad = gMessageStringTable.getString("SimulatorLoad"); |
@@ -1824,15 +1668,12 @@ void init_prehash_data() | |||
1824 | _PREHASH_LeaveGroupRequest = gMessageStringTable.getString("LeaveGroupRequest"); | 1668 | _PREHASH_LeaveGroupRequest = gMessageStringTable.getString("LeaveGroupRequest"); |
1825 | _PREHASH_InviteGroupRequest = gMessageStringTable.getString("InviteGroupRequest"); | 1669 | _PREHASH_InviteGroupRequest = gMessageStringTable.getString("InviteGroupRequest"); |
1826 | _PREHASH_LiveHelpGroupRequest = gMessageStringTable.getString("LiveHelpGroupRequest"); | 1670 | _PREHASH_LiveHelpGroupRequest = gMessageStringTable.getString("LiveHelpGroupRequest"); |
1827 | _PREHASH_ServerVersion = gMessageStringTable.getString("ServerVersion"); | ||
1828 | _PREHASH_PriceParcelClaimFactor = gMessageStringTable.getString("PriceParcelClaimFactor"); | 1671 | _PREHASH_PriceParcelClaimFactor = gMessageStringTable.getString("PriceParcelClaimFactor"); |
1829 | _PREHASH_BillableArea = gMessageStringTable.getString("BillableArea"); | 1672 | _PREHASH_BillableArea = gMessageStringTable.getString("BillableArea"); |
1830 | _PREHASH_ObjectID = gMessageStringTable.getString("ObjectID"); | 1673 | _PREHASH_ObjectID = gMessageStringTable.getString("ObjectID"); |
1831 | _PREHASH_ObjectFlagUpdate = gMessageStringTable.getString("ObjectFlagUpdate"); | 1674 | _PREHASH_ObjectFlagUpdate = gMessageStringTable.getString("ObjectFlagUpdate"); |
1832 | _PREHASH_GroupRoleUpdate = gMessageStringTable.getString("GroupRoleUpdate"); | 1675 | _PREHASH_GroupRoleUpdate = gMessageStringTable.getString("GroupRoleUpdate"); |
1833 | _PREHASH_RequestInventoryAsset = gMessageStringTable.getString("RequestInventoryAsset"); | 1676 | _PREHASH_RequestInventoryAsset = gMessageStringTable.getString("RequestInventoryAsset"); |
1834 | _PREHASH_RedoLand = gMessageStringTable.getString("RedoLand"); | ||
1835 | _PREHASH_TravelAccess = gMessageStringTable.getString("TravelAccess"); | ||
1836 | _PREHASH_ChangedGrid = gMessageStringTable.getString("ChangedGrid"); | 1677 | _PREHASH_ChangedGrid = gMessageStringTable.getString("ChangedGrid"); |
1837 | _PREHASH_AgentDropGroup = gMessageStringTable.getString("AgentDropGroup"); | 1678 | _PREHASH_AgentDropGroup = gMessageStringTable.getString("AgentDropGroup"); |
1838 | _PREHASH_Details = gMessageStringTable.getString("Details"); | 1679 | _PREHASH_Details = gMessageStringTable.getString("Details"); |
@@ -1865,7 +1706,6 @@ void init_prehash_data() | |||
1865 | _PREHASH_GlobalPos = gMessageStringTable.getString("GlobalPos"); | 1706 | _PREHASH_GlobalPos = gMessageStringTable.getString("GlobalPos"); |
1866 | _PREHASH_GrabOffsetInitial = gMessageStringTable.getString("GrabOffsetInitial"); | 1707 | _PREHASH_GrabOffsetInitial = gMessageStringTable.getString("GrabOffsetInitial"); |
1867 | _PREHASH_IsTrial = gMessageStringTable.getString("IsTrial"); | 1708 | _PREHASH_IsTrial = gMessageStringTable.getString("IsTrial"); |
1868 | _PREHASH_FinalizeLogout = gMessageStringTable.getString("FinalizeLogout"); | ||
1869 | _PREHASH_ObjectDuplicateOnRay = gMessageStringTable.getString("ObjectDuplicateOnRay"); | 1709 | _PREHASH_ObjectDuplicateOnRay = gMessageStringTable.getString("ObjectDuplicateOnRay"); |
1870 | _PREHASH_GroupMembershipCount = gMessageStringTable.getString("GroupMembershipCount"); | 1710 | _PREHASH_GroupMembershipCount = gMessageStringTable.getString("GroupMembershipCount"); |
1871 | _PREHASH_MethodData = gMessageStringTable.getString("MethodData"); | 1711 | _PREHASH_MethodData = gMessageStringTable.getString("MethodData"); |
@@ -1901,32 +1741,26 @@ void init_prehash_data() | |||
1901 | _PREHASH_SimWideMaxPrims = gMessageStringTable.getString("SimWideMaxPrims"); | 1741 | _PREHASH_SimWideMaxPrims = gMessageStringTable.getString("SimWideMaxPrims"); |
1902 | _PREHASH_TotalPrims = gMessageStringTable.getString("TotalPrims"); | 1742 | _PREHASH_TotalPrims = gMessageStringTable.getString("TotalPrims"); |
1903 | _PREHASH_ProfileBegin = gMessageStringTable.getString("ProfileBegin"); | 1743 | _PREHASH_ProfileBegin = gMessageStringTable.getString("ProfileBegin"); |
1904 | _PREHASH_MoneyDetailsRequest = gMessageStringTable.getString("MoneyDetailsRequest"); | ||
1905 | _PREHASH_Request = gMessageStringTable.getString("Request"); | 1744 | _PREHASH_Request = gMessageStringTable.getString("Request"); |
1906 | _PREHASH_GroupAccountDetailsRequest = gMessageStringTable.getString("GroupAccountDetailsRequest"); | 1745 | _PREHASH_GroupAccountDetailsRequest = gMessageStringTable.getString("GroupAccountDetailsRequest"); |
1907 | _PREHASH_GroupActiveProposalsRequest = gMessageStringTable.getString("GroupActiveProposalsRequest"); | 1746 | _PREHASH_GroupActiveProposalsRequest = gMessageStringTable.getString("GroupActiveProposalsRequest"); |
1908 | _PREHASH_StringValue = gMessageStringTable.getString("StringValue"); | 1747 | _PREHASH_StringValue = gMessageStringTable.getString("StringValue"); |
1909 | _PREHASH_ClosestSimulator = gMessageStringTable.getString("ClosestSimulator"); | ||
1910 | _PREHASH_Version = gMessageStringTable.getString("Version"); | 1748 | _PREHASH_Version = gMessageStringTable.getString("Version"); |
1911 | _PREHASH_OtherCount = gMessageStringTable.getString("OtherCount"); | 1749 | _PREHASH_OtherCount = gMessageStringTable.getString("OtherCount"); |
1912 | _PREHASH_MemberCount = gMessageStringTable.getString("MemberCount"); | 1750 | _PREHASH_MemberCount = gMessageStringTable.getString("MemberCount"); |
1913 | _PREHASH_ChatData = gMessageStringTable.getString("ChatData"); | 1751 | _PREHASH_ChatData = gMessageStringTable.getString("ChatData"); |
1914 | _PREHASH_IsGroupOwned = gMessageStringTable.getString("IsGroupOwned"); | 1752 | _PREHASH_IsGroupOwned = gMessageStringTable.getString("IsGroupOwned"); |
1915 | _PREHASH_EnergyEfficiency = gMessageStringTable.getString("EnergyEfficiency"); | 1753 | _PREHASH_EnergyEfficiency = gMessageStringTable.getString("EnergyEfficiency"); |
1916 | _PREHASH_MaxPlace = gMessageStringTable.getString("MaxPlace"); | ||
1917 | _PREHASH_PickInfoUpdate = gMessageStringTable.getString("PickInfoUpdate"); | 1754 | _PREHASH_PickInfoUpdate = gMessageStringTable.getString("PickInfoUpdate"); |
1918 | _PREHASH_PickDelete = gMessageStringTable.getString("PickDelete"); | 1755 | _PREHASH_PickDelete = gMessageStringTable.getString("PickDelete"); |
1919 | _PREHASH_ScriptReset = gMessageStringTable.getString("ScriptReset"); | 1756 | _PREHASH_ScriptReset = gMessageStringTable.getString("ScriptReset"); |
1920 | _PREHASH_Requester = gMessageStringTable.getString("Requester"); | 1757 | _PREHASH_Requester = gMessageStringTable.getString("Requester"); |
1921 | _PREHASH_ForSale = gMessageStringTable.getString("ForSale"); | 1758 | _PREHASH_ForSale = gMessageStringTable.getString("ForSale"); |
1922 | _PREHASH_NearestLandingRegionReply = gMessageStringTable.getString("NearestLandingRegionReply"); | 1759 | _PREHASH_NearestLandingRegionReply = gMessageStringTable.getString("NearestLandingRegionReply"); |
1923 | _PREHASH_RecordAgentPresence = gMessageStringTable.getString("RecordAgentPresence"); | ||
1924 | _PREHASH_EraseAgentPresence = gMessageStringTable.getString("EraseAgentPresence"); | ||
1925 | _PREHASH_ParcelID = gMessageStringTable.getString("ParcelID"); | 1760 | _PREHASH_ParcelID = gMessageStringTable.getString("ParcelID"); |
1926 | _PREHASH_Godlike = gMessageStringTable.getString("Godlike"); | 1761 | _PREHASH_Godlike = gMessageStringTable.getString("Godlike"); |
1927 | _PREHASH_TotalDebits = gMessageStringTable.getString("TotalDebits"); | 1762 | _PREHASH_TotalDebits = gMessageStringTable.getString("TotalDebits"); |
1928 | _PREHASH_Direction = gMessageStringTable.getString("Direction"); | 1763 | _PREHASH_Direction = gMessageStringTable.getString("Direction"); |
1929 | _PREHASH_Appearance = gMessageStringTable.getString("Appearance"); | ||
1930 | _PREHASH_HealthData = gMessageStringTable.getString("HealthData"); | 1764 | _PREHASH_HealthData = gMessageStringTable.getString("HealthData"); |
1931 | _PREHASH_LeftAxis = gMessageStringTable.getString("LeftAxis"); | 1765 | _PREHASH_LeftAxis = gMessageStringTable.getString("LeftAxis"); |
1932 | _PREHASH_LocationBlock = gMessageStringTable.getString("LocationBlock"); | 1766 | _PREHASH_LocationBlock = gMessageStringTable.getString("LocationBlock"); |
@@ -1934,41 +1768,31 @@ void init_prehash_data() | |||
1934 | _PREHASH_TerrainStartHeight00 = gMessageStringTable.getString("TerrainStartHeight00"); | 1768 | _PREHASH_TerrainStartHeight00 = gMessageStringTable.getString("TerrainStartHeight00"); |
1935 | _PREHASH_TerrainStartHeight01 = gMessageStringTable.getString("TerrainStartHeight01"); | 1769 | _PREHASH_TerrainStartHeight01 = gMessageStringTable.getString("TerrainStartHeight01"); |
1936 | _PREHASH_TerrainStartHeight10 = gMessageStringTable.getString("TerrainStartHeight10"); | 1770 | _PREHASH_TerrainStartHeight10 = gMessageStringTable.getString("TerrainStartHeight10"); |
1937 | _PREHASH_ObjectHinge = gMessageStringTable.getString("ObjectHinge"); | ||
1938 | _PREHASH_TerrainStartHeight11 = gMessageStringTable.getString("TerrainStartHeight11"); | 1771 | _PREHASH_TerrainStartHeight11 = gMessageStringTable.getString("TerrainStartHeight11"); |
1939 | _PREHASH_MetersPerGrid = gMessageStringTable.getString("MetersPerGrid"); | ||
1940 | _PREHASH_WaterHeight = gMessageStringTable.getString("WaterHeight"); | 1772 | _PREHASH_WaterHeight = gMessageStringTable.getString("WaterHeight"); |
1941 | _PREHASH_FetchInventoryReply = gMessageStringTable.getString("FetchInventoryReply"); | 1773 | _PREHASH_FetchInventoryReply = gMessageStringTable.getString("FetchInventoryReply"); |
1942 | _PREHASH_MoneySummaryReply = gMessageStringTable.getString("MoneySummaryReply"); | ||
1943 | _PREHASH_GroupAccountSummaryReply = gMessageStringTable.getString("GroupAccountSummaryReply"); | 1774 | _PREHASH_GroupAccountSummaryReply = gMessageStringTable.getString("GroupAccountSummaryReply"); |
1944 | _PREHASH_AttachedSound = gMessageStringTable.getString("AttachedSound"); | 1775 | _PREHASH_AttachedSound = gMessageStringTable.getString("AttachedSound"); |
1945 | _PREHASH_ParamInUse = gMessageStringTable.getString("ParamInUse"); | 1776 | _PREHASH_ParamInUse = gMessageStringTable.getString("ParamInUse"); |
1946 | _PREHASH_GodKickUser = gMessageStringTable.getString("GodKickUser"); | 1777 | _PREHASH_GodKickUser = gMessageStringTable.getString("GodKickUser"); |
1947 | _PREHASH_PickName = gMessageStringTable.getString("PickName"); | 1778 | _PREHASH_PickName = gMessageStringTable.getString("PickName"); |
1948 | _PREHASH_TaskName = gMessageStringTable.getString("TaskName"); | 1779 | _PREHASH_TaskName = gMessageStringTable.getString("TaskName"); |
1949 | _PREHASH_SubType = gMessageStringTable.getString("SubType"); | ||
1950 | _PREHASH_ObjectCount = gMessageStringTable.getString("ObjectCount"); | 1780 | _PREHASH_ObjectCount = gMessageStringTable.getString("ObjectCount"); |
1951 | _PREHASH_RegionPresenceRequestByHandle = gMessageStringTable.getString("RegionPresenceRequestByHandle"); | 1781 | _PREHASH_RegionPresenceRequestByHandle = gMessageStringTable.getString("RegionPresenceRequestByHandle"); |
1952 | _PREHASH_RezSingleAttachmentFromInv = gMessageStringTable.getString("RezSingleAttachmentFromInv"); | 1782 | _PREHASH_RezSingleAttachmentFromInv = gMessageStringTable.getString("RezSingleAttachmentFromInv"); |
1953 | _PREHASH_ChildAgentUpdate = gMessageStringTable.getString("ChildAgentUpdate"); | 1783 | _PREHASH_ChildAgentUpdate = gMessageStringTable.getString("ChildAgentUpdate"); |
1954 | _PREHASH_ToID = gMessageStringTable.getString("ToID"); | ||
1955 | _PREHASH_ViewerPort = gMessageStringTable.getString("ViewerPort"); | ||
1956 | _PREHASH_IsOwnerGroup = gMessageStringTable.getString("IsOwnerGroup"); | 1784 | _PREHASH_IsOwnerGroup = gMessageStringTable.getString("IsOwnerGroup"); |
1957 | _PREHASH_AgentHeightWidth = gMessageStringTable.getString("AgentHeightWidth"); | 1785 | _PREHASH_AgentHeightWidth = gMessageStringTable.getString("AgentHeightWidth"); |
1958 | _PREHASH_VerticalAngle = gMessageStringTable.getString("VerticalAngle"); | 1786 | _PREHASH_VerticalAngle = gMessageStringTable.getString("VerticalAngle"); |
1959 | _PREHASH_WearableType = gMessageStringTable.getString("WearableType"); | 1787 | _PREHASH_WearableType = gMessageStringTable.getString("WearableType"); |
1960 | _PREHASH_AggregatePermNextOwner = gMessageStringTable.getString("AggregatePermNextOwner"); | 1788 | _PREHASH_AggregatePermNextOwner = gMessageStringTable.getString("AggregatePermNextOwner"); |
1961 | _PREHASH_ShowInList = gMessageStringTable.getString("ShowInList"); | 1789 | _PREHASH_ShowInList = gMessageStringTable.getString("ShowInList"); |
1962 | _PREHASH_PositionSuggestion = gMessageStringTable.getString("PositionSuggestion"); | ||
1963 | _PREHASH_UpdateParcel = gMessageStringTable.getString("UpdateParcel"); | 1790 | _PREHASH_UpdateParcel = gMessageStringTable.getString("UpdateParcel"); |
1964 | _PREHASH_ClearAgentSessions = gMessageStringTable.getString("ClearAgentSessions"); | ||
1965 | _PREHASH_SetAlwaysRun = gMessageStringTable.getString("SetAlwaysRun"); | 1791 | _PREHASH_SetAlwaysRun = gMessageStringTable.getString("SetAlwaysRun"); |
1966 | _PREHASH_NVPair = gMessageStringTable.getString("NVPair"); | 1792 | _PREHASH_NVPair = gMessageStringTable.getString("NVPair"); |
1967 | _PREHASH_SearchType = gMessageStringTable.getString("SearchType"); | 1793 | _PREHASH_SearchType = gMessageStringTable.getString("SearchType"); |
1968 | _PREHASH_ObjectSpinStart = gMessageStringTable.getString("ObjectSpinStart"); | 1794 | _PREHASH_ObjectSpinStart = gMessageStringTable.getString("ObjectSpinStart"); |
1969 | _PREHASH_UseEstateSun = gMessageStringTable.getString("UseEstateSun"); | 1795 | _PREHASH_UseEstateSun = gMessageStringTable.getString("UseEstateSun"); |
1970 | _PREHASH_LogoutBlock = gMessageStringTable.getString("LogoutBlock"); | ||
1971 | _PREHASH_RelayLogControl = gMessageStringTable.getString("RelayLogControl"); | ||
1972 | _PREHASH_RegionID = gMessageStringTable.getString("RegionID"); | 1796 | _PREHASH_RegionID = gMessageStringTable.getString("RegionID"); |
1973 | _PREHASH_AbuseRegionID = gMessageStringTable.getString("AbuseRegionID"); | 1797 | _PREHASH_AbuseRegionID = gMessageStringTable.getString("AbuseRegionID"); |
1974 | _PREHASH_Creator = gMessageStringTable.getString("Creator"); | 1798 | _PREHASH_Creator = gMessageStringTable.getString("Creator"); |
@@ -1977,14 +1801,12 @@ void init_prehash_data() | |||
1977 | _PREHASH_EventInfoReply = gMessageStringTable.getString("EventInfoReply"); | 1801 | _PREHASH_EventInfoReply = gMessageStringTable.getString("EventInfoReply"); |
1978 | _PREHASH_UserInfoReply = gMessageStringTable.getString("UserInfoReply"); | 1802 | _PREHASH_UserInfoReply = gMessageStringTable.getString("UserInfoReply"); |
1979 | _PREHASH_PathRadiusOffset = gMessageStringTable.getString("PathRadiusOffset"); | 1803 | _PREHASH_PathRadiusOffset = gMessageStringTable.getString("PathRadiusOffset"); |
1980 | _PREHASH_SessionInfo = gMessageStringTable.getString("SessionInfo"); | ||
1981 | _PREHASH_TextureData = gMessageStringTable.getString("TextureData"); | 1804 | _PREHASH_TextureData = gMessageStringTable.getString("TextureData"); |
1982 | _PREHASH_ChatPass = gMessageStringTable.getString("ChatPass"); | 1805 | _PREHASH_ChatPass = gMessageStringTable.getString("ChatPass"); |
1983 | _PREHASH_TargetID = gMessageStringTable.getString("TargetID"); | 1806 | _PREHASH_TargetID = gMessageStringTable.getString("TargetID"); |
1984 | _PREHASH_DefaultPayPrice = gMessageStringTable.getString("DefaultPayPrice"); | 1807 | _PREHASH_DefaultPayPrice = gMessageStringTable.getString("DefaultPayPrice"); |
1985 | _PREHASH_UserLocation = gMessageStringTable.getString("UserLocation"); | 1808 | _PREHASH_UserLocation = gMessageStringTable.getString("UserLocation"); |
1986 | _PREHASH_MaxPrims = gMessageStringTable.getString("MaxPrims"); | 1809 | _PREHASH_MaxPrims = gMessageStringTable.getString("MaxPrims"); |
1987 | _PREHASH_RegionIP = gMessageStringTable.getString("RegionIP"); | ||
1988 | _PREHASH_LandmarkID = gMessageStringTable.getString("LandmarkID"); | 1810 | _PREHASH_LandmarkID = gMessageStringTable.getString("LandmarkID"); |
1989 | _PREHASH_InitiateDownload = gMessageStringTable.getString("InitiateDownload"); | 1811 | _PREHASH_InitiateDownload = gMessageStringTable.getString("InitiateDownload"); |
1990 | _PREHASH_Name = gMessageStringTable.getString("Name"); | 1812 | _PREHASH_Name = gMessageStringTable.getString("Name"); |
@@ -1992,18 +1814,13 @@ void init_prehash_data() | |||
1992 | _PREHASH_ParcelSetOtherCleanTime = gMessageStringTable.getString("ParcelSetOtherCleanTime"); | 1814 | _PREHASH_ParcelSetOtherCleanTime = gMessageStringTable.getString("ParcelSetOtherCleanTime"); |
1993 | _PREHASH_TeleportPriceExponent = gMessageStringTable.getString("TeleportPriceExponent"); | 1815 | _PREHASH_TeleportPriceExponent = gMessageStringTable.getString("TeleportPriceExponent"); |
1994 | _PREHASH_Gain = gMessageStringTable.getString("Gain"); | 1816 | _PREHASH_Gain = gMessageStringTable.getString("Gain"); |
1995 | _PREHASH_VelX = gMessageStringTable.getString("VelX"); | ||
1996 | _PREHASH_PacketAck = gMessageStringTable.getString("PacketAck"); | 1817 | _PREHASH_PacketAck = gMessageStringTable.getString("PacketAck"); |
1997 | _PREHASH_PathSkew = gMessageStringTable.getString("PathSkew"); | 1818 | _PREHASH_PathSkew = gMessageStringTable.getString("PathSkew"); |
1998 | _PREHASH_Negative = gMessageStringTable.getString("Negative"); | ||
1999 | _PREHASH_VelY = gMessageStringTable.getString("VelY"); | ||
2000 | _PREHASH_SimulatorShutdownRequest = gMessageStringTable.getString("SimulatorShutdownRequest"); | 1819 | _PREHASH_SimulatorShutdownRequest = gMessageStringTable.getString("SimulatorShutdownRequest"); |
2001 | _PREHASH_NearestLandingRegionRequest = gMessageStringTable.getString("NearestLandingRegionRequest"); | 1820 | _PREHASH_NearestLandingRegionRequest = gMessageStringTable.getString("NearestLandingRegionRequest"); |
2002 | _PREHASH_VelZ = gMessageStringTable.getString("VelZ"); | ||
2003 | _PREHASH_OtherID = gMessageStringTable.getString("OtherID"); | 1821 | _PREHASH_OtherID = gMessageStringTable.getString("OtherID"); |
2004 | _PREHASH_MemberID = gMessageStringTable.getString("MemberID"); | 1822 | _PREHASH_MemberID = gMessageStringTable.getString("MemberID"); |
2005 | _PREHASH_MapLayerRequest = gMessageStringTable.getString("MapLayerRequest"); | 1823 | _PREHASH_MapLayerRequest = gMessageStringTable.getString("MapLayerRequest"); |
2006 | _PREHASH_PatchVersion = gMessageStringTable.getString("PatchVersion"); | ||
2007 | _PREHASH_ObjectScale = gMessageStringTable.getString("ObjectScale"); | 1824 | _PREHASH_ObjectScale = gMessageStringTable.getString("ObjectScale"); |
2008 | _PREHASH_TargetIP = gMessageStringTable.getString("TargetIP"); | 1825 | _PREHASH_TargetIP = gMessageStringTable.getString("TargetIP"); |
2009 | _PREHASH_Redo = gMessageStringTable.getString("Redo"); | 1826 | _PREHASH_Redo = gMessageStringTable.getString("Redo"); |
@@ -2046,27 +1863,20 @@ void init_prehash_data() | |||
2046 | _PREHASH_Code = gMessageStringTable.getString("Code"); | 1863 | _PREHASH_Code = gMessageStringTable.getString("Code"); |
2047 | _PREHASH_InvType = gMessageStringTable.getString("InvType"); | 1864 | _PREHASH_InvType = gMessageStringTable.getString("InvType"); |
2048 | _PREHASH_AgentFOV = gMessageStringTable.getString("AgentFOV"); | 1865 | _PREHASH_AgentFOV = gMessageStringTable.getString("AgentFOV"); |
2049 | _PREHASH_BulkMoneyTransfer = gMessageStringTable.getString("BulkMoneyTransfer"); | ||
2050 | _PREHASH_Audible = gMessageStringTable.getString("Audible"); | 1866 | _PREHASH_Audible = gMessageStringTable.getString("Audible"); |
2051 | _PREHASH_AuctionData = gMessageStringTable.getString("AuctionData"); | 1867 | _PREHASH_AuctionData = gMessageStringTable.getString("AuctionData"); |
2052 | _PREHASH_IDBlock = gMessageStringTable.getString("IDBlock"); | 1868 | _PREHASH_IDBlock = gMessageStringTable.getString("IDBlock"); |
2053 | _PREHASH_ReputationData = gMessageStringTable.getString("ReputationData"); | ||
2054 | _PREHASH_West = gMessageStringTable.getString("West"); | 1869 | _PREHASH_West = gMessageStringTable.getString("West"); |
2055 | _PREHASH_Undo = gMessageStringTable.getString("Undo"); | 1870 | _PREHASH_Undo = gMessageStringTable.getString("Undo"); |
2056 | _PREHASH_TotalNumItems = gMessageStringTable.getString("TotalNumItems"); | 1871 | _PREHASH_TotalNumItems = gMessageStringTable.getString("TotalNumItems"); |
2057 | _PREHASH_Info = gMessageStringTable.getString("Info"); | 1872 | _PREHASH_Info = gMessageStringTable.getString("Info"); |
2058 | _PREHASH_Area = gMessageStringTable.getString("Area"); | 1873 | _PREHASH_Area = gMessageStringTable.getString("Area"); |
2059 | _PREHASH_Behavior = gMessageStringTable.getString("Behavior"); | ||
2060 | _PREHASH_SimCrashed = gMessageStringTable.getString("SimCrashed"); | 1874 | _PREHASH_SimCrashed = gMessageStringTable.getString("SimCrashed"); |
2061 | _PREHASH_Text = gMessageStringTable.getString("Text"); | 1875 | _PREHASH_Text = gMessageStringTable.getString("Text"); |
2062 | _PREHASH_AgentToNewRegion = gMessageStringTable.getString("AgentToNewRegion"); | ||
2063 | _PREHASH_PriceGroupCreate = gMessageStringTable.getString("PriceGroupCreate"); | 1876 | _PREHASH_PriceGroupCreate = gMessageStringTable.getString("PriceGroupCreate"); |
2064 | _PREHASH_ObjectShape = gMessageStringTable.getString("ObjectShape"); | 1877 | _PREHASH_ObjectShape = gMessageStringTable.getString("ObjectShape"); |
2065 | _PREHASH_GroupRoleDataReply = gMessageStringTable.getString("GroupRoleDataReply"); | 1878 | _PREHASH_GroupRoleDataReply = gMessageStringTable.getString("GroupRoleDataReply"); |
2066 | _PREHASH_PosX = gMessageStringTable.getString("PosX"); | ||
2067 | _PREHASH_PosY = gMessageStringTable.getString("PosY"); | ||
2068 | _PREHASH_MuteCRC = gMessageStringTable.getString("MuteCRC"); | 1879 | _PREHASH_MuteCRC = gMessageStringTable.getString("MuteCRC"); |
2069 | _PREHASH_PosZ = gMessageStringTable.getString("PosZ"); | ||
2070 | _PREHASH_Size = gMessageStringTable.getString("Size"); | 1880 | _PREHASH_Size = gMessageStringTable.getString("Size"); |
2071 | _PREHASH_FromAddress = gMessageStringTable.getString("FromAddress"); | 1881 | _PREHASH_FromAddress = gMessageStringTable.getString("FromAddress"); |
2072 | _PREHASH_Body = gMessageStringTable.getString("Body"); | 1882 | _PREHASH_Body = gMessageStringTable.getString("Body"); |
@@ -2084,16 +1894,14 @@ void init_prehash_data() | |||
2084 | _PREHASH_SoundID = gMessageStringTable.getString("SoundID"); | 1894 | _PREHASH_SoundID = gMessageStringTable.getString("SoundID"); |
2085 | _PREHASH_Item = gMessageStringTable.getString("Item"); | 1895 | _PREHASH_Item = gMessageStringTable.getString("Item"); |
2086 | _PREHASH_User = gMessageStringTable.getString("User"); | 1896 | _PREHASH_User = gMessageStringTable.getString("User"); |
2087 | _PREHASH_RemoteInfos = gMessageStringTable.getString("RemoteInfos"); | ||
2088 | _PREHASH_Prey = gMessageStringTable.getString("Prey"); | 1897 | _PREHASH_Prey = gMessageStringTable.getString("Prey"); |
2089 | _PREHASH_UsecSinceStart = gMessageStringTable.getString("UsecSinceStart"); | ||
2090 | _PREHASH_RayStart = gMessageStringTable.getString("RayStart"); | 1898 | _PREHASH_RayStart = gMessageStringTable.getString("RayStart"); |
1899 | _PREHASH_UsecSinceStart = gMessageStringTable.getString("UsecSinceStart"); | ||
2091 | _PREHASH_ParcelData = gMessageStringTable.getString("ParcelData"); | 1900 | _PREHASH_ParcelData = gMessageStringTable.getString("ParcelData"); |
2092 | _PREHASH_CameraUpAxis = gMessageStringTable.getString("CameraUpAxis"); | 1901 | _PREHASH_CameraUpAxis = gMessageStringTable.getString("CameraUpAxis"); |
2093 | _PREHASH_ScriptDialog = gMessageStringTable.getString("ScriptDialog"); | 1902 | _PREHASH_ScriptDialog = gMessageStringTable.getString("ScriptDialog"); |
2094 | _PREHASH_MasterParcelData = gMessageStringTable.getString("MasterParcelData"); | 1903 | _PREHASH_MasterParcelData = gMessageStringTable.getString("MasterParcelData"); |
2095 | _PREHASH_Invalid = gMessageStringTable.getString("Invalid"); | 1904 | _PREHASH_Invalid = gMessageStringTable.getString("Invalid"); |
2096 | _PREHASH_MinPlace = gMessageStringTable.getString("MinPlace"); | ||
2097 | _PREHASH_ProfileCurve = gMessageStringTable.getString("ProfileCurve"); | 1905 | _PREHASH_ProfileCurve = gMessageStringTable.getString("ProfileCurve"); |
2098 | _PREHASH_ParcelAccessListUpdate = gMessageStringTable.getString("ParcelAccessListUpdate"); | 1906 | _PREHASH_ParcelAccessListUpdate = gMessageStringTable.getString("ParcelAccessListUpdate"); |
2099 | _PREHASH_MuteListUpdate = gMessageStringTable.getString("MuteListUpdate"); | 1907 | _PREHASH_MuteListUpdate = gMessageStringTable.getString("MuteListUpdate"); |
@@ -2112,14 +1920,12 @@ void init_prehash_data() | |||
2112 | _PREHASH_IsTemporary = gMessageStringTable.getString("IsTemporary"); | 1920 | _PREHASH_IsTemporary = gMessageStringTable.getString("IsTemporary"); |
2113 | _PREHASH_InsigniaID = gMessageStringTable.getString("InsigniaID"); | 1921 | _PREHASH_InsigniaID = gMessageStringTable.getString("InsigniaID"); |
2114 | _PREHASH_CheckFlags = gMessageStringTable.getString("CheckFlags"); | 1922 | _PREHASH_CheckFlags = gMessageStringTable.getString("CheckFlags"); |
2115 | _PREHASH_TransferPriority = gMessageStringTable.getString("TransferPriority"); | ||
2116 | _PREHASH_EventID = gMessageStringTable.getString("EventID"); | 1923 | _PREHASH_EventID = gMessageStringTable.getString("EventID"); |
2117 | _PREHASH_Selected = gMessageStringTable.getString("Selected"); | 1924 | _PREHASH_Selected = gMessageStringTable.getString("Selected"); |
2118 | _PREHASH_FromAgentId = gMessageStringTable.getString("FromAgentId"); | 1925 | _PREHASH_FromAgentId = gMessageStringTable.getString("FromAgentId"); |
2119 | _PREHASH_Type = gMessageStringTable.getString("Type"); | 1926 | _PREHASH_Type = gMessageStringTable.getString("Type"); |
2120 | _PREHASH_ChatType = gMessageStringTable.getString("ChatType"); | 1927 | _PREHASH_ChatType = gMessageStringTable.getString("ChatType"); |
2121 | _PREHASH_ReportData = gMessageStringTable.getString("ReportData"); | 1928 | _PREHASH_ReportData = gMessageStringTable.getString("ReportData"); |
2122 | _PREHASH_LeaderBoardData = gMessageStringTable.getString("LeaderBoardData"); | ||
2123 | _PREHASH_RequestBlock = gMessageStringTable.getString("RequestBlock"); | 1929 | _PREHASH_RequestBlock = gMessageStringTable.getString("RequestBlock"); |
2124 | _PREHASH_GrantData = gMessageStringTable.getString("GrantData"); | 1930 | _PREHASH_GrantData = gMessageStringTable.getString("GrantData"); |
2125 | _PREHASH_DetachAttachmentIntoInv = gMessageStringTable.getString("DetachAttachmentIntoInv"); | 1931 | _PREHASH_DetachAttachmentIntoInv = gMessageStringTable.getString("DetachAttachmentIntoInv"); |
@@ -2135,12 +1941,9 @@ void init_prehash_data() | |||
2135 | _PREHASH_OfflineNotification = gMessageStringTable.getString("OfflineNotification"); | 1941 | _PREHASH_OfflineNotification = gMessageStringTable.getString("OfflineNotification"); |
2136 | _PREHASH_SendPostcard = gMessageStringTable.getString("SendPostcard"); | 1942 | _PREHASH_SendPostcard = gMessageStringTable.getString("SendPostcard"); |
2137 | _PREHASH_RequestFlags = gMessageStringTable.getString("RequestFlags"); | 1943 | _PREHASH_RequestFlags = gMessageStringTable.getString("RequestFlags"); |
2138 | _PREHASH_MoneyHistoryRequest = gMessageStringTable.getString("MoneyHistoryRequest"); | ||
2139 | _PREHASH_MoneySummaryRequest = gMessageStringTable.getString("MoneySummaryRequest"); | ||
2140 | _PREHASH_GroupAccountSummaryRequest = gMessageStringTable.getString("GroupAccountSummaryRequest"); | 1944 | _PREHASH_GroupAccountSummaryRequest = gMessageStringTable.getString("GroupAccountSummaryRequest"); |
2141 | _PREHASH_GroupVoteHistoryRequest = gMessageStringTable.getString("GroupVoteHistoryRequest"); | 1945 | _PREHASH_GroupVoteHistoryRequest = gMessageStringTable.getString("GroupVoteHistoryRequest"); |
2142 | _PREHASH_ParamValue = gMessageStringTable.getString("ParamValue"); | 1946 | _PREHASH_ParamValue = gMessageStringTable.getString("ParamValue"); |
2143 | _PREHASH_Checksum = gMessageStringTable.getString("Checksum"); | ||
2144 | _PREHASH_MaxAgents = gMessageStringTable.getString("MaxAgents"); | 1947 | _PREHASH_MaxAgents = gMessageStringTable.getString("MaxAgents"); |
2145 | _PREHASH_CreateNewOutfitAttachments = gMessageStringTable.getString("CreateNewOutfitAttachments"); | 1948 | _PREHASH_CreateNewOutfitAttachments = gMessageStringTable.getString("CreateNewOutfitAttachments"); |
2146 | _PREHASH_RegionHandle = gMessageStringTable.getString("RegionHandle"); | 1949 | _PREHASH_RegionHandle = gMessageStringTable.getString("RegionHandle"); |
@@ -2150,12 +1953,10 @@ void init_prehash_data() | |||
2150 | _PREHASH_GroupNoticeID = gMessageStringTable.getString("GroupNoticeID"); | 1953 | _PREHASH_GroupNoticeID = gMessageStringTable.getString("GroupNoticeID"); |
2151 | _PREHASH_ParcelName = gMessageStringTable.getString("ParcelName"); | 1954 | _PREHASH_ParcelName = gMessageStringTable.getString("ParcelName"); |
2152 | _PREHASH_PriceObjectRent = gMessageStringTable.getString("PriceObjectRent"); | 1955 | _PREHASH_PriceObjectRent = gMessageStringTable.getString("PriceObjectRent"); |
2153 | _PREHASH_ConnectAgentToUserserver = gMessageStringTable.getString("ConnectAgentToUserserver"); | ||
2154 | _PREHASH_ConnectToUserserver = gMessageStringTable.getString("ConnectToUserserver"); | ||
2155 | _PREHASH_OfferCallingCard = gMessageStringTable.getString("OfferCallingCard"); | 1956 | _PREHASH_OfferCallingCard = gMessageStringTable.getString("OfferCallingCard"); |
2156 | _PREHASH_AgentAccess = gMessageStringTable.getString("AgentAccess"); | ||
2157 | _PREHASH_AcceptCallingCard = gMessageStringTable.getString("AcceptCallingCard"); | 1957 | _PREHASH_AcceptCallingCard = gMessageStringTable.getString("AcceptCallingCard"); |
2158 | _PREHASH_DeclineCallingCard = gMessageStringTable.getString("DeclineCallingCard"); | 1958 | _PREHASH_DeclineCallingCard = gMessageStringTable.getString("DeclineCallingCard"); |
1959 | _PREHASH_AgentAccess = gMessageStringTable.getString("AgentAccess"); | ||
2159 | _PREHASH_DataHomeLocationReply = gMessageStringTable.getString("DataHomeLocationReply"); | 1960 | _PREHASH_DataHomeLocationReply = gMessageStringTable.getString("DataHomeLocationReply"); |
2160 | _PREHASH_EventLocationReply = gMessageStringTable.getString("EventLocationReply"); | 1961 | _PREHASH_EventLocationReply = gMessageStringTable.getString("EventLocationReply"); |
2161 | _PREHASH_TerseDateID = gMessageStringTable.getString("TerseDateID"); | 1962 | _PREHASH_TerseDateID = gMessageStringTable.getString("TerseDateID"); |
@@ -2173,8 +1974,8 @@ void init_prehash_data() | |||
2173 | _PREHASH_IntervalDays = gMessageStringTable.getString("IntervalDays"); | 1974 | _PREHASH_IntervalDays = gMessageStringTable.getString("IntervalDays"); |
2174 | _PREHASH_PathScaleX = gMessageStringTable.getString("PathScaleX"); | 1975 | _PREHASH_PathScaleX = gMessageStringTable.getString("PathScaleX"); |
2175 | _PREHASH_FromTaskID = gMessageStringTable.getString("FromTaskID"); | 1976 | _PREHASH_FromTaskID = gMessageStringTable.getString("FromTaskID"); |
2176 | _PREHASH_TimeInfo = gMessageStringTable.getString("TimeInfo"); | ||
2177 | _PREHASH_PathScaleY = gMessageStringTable.getString("PathScaleY"); | 1977 | _PREHASH_PathScaleY = gMessageStringTable.getString("PathScaleY"); |
1978 | _PREHASH_TimeInfo = gMessageStringTable.getString("TimeInfo"); | ||
2178 | _PREHASH_PublicCount = gMessageStringTable.getString("PublicCount"); | 1979 | _PREHASH_PublicCount = gMessageStringTable.getString("PublicCount"); |
2179 | _PREHASH_ParcelJoin = gMessageStringTable.getString("ParcelJoin"); | 1980 | _PREHASH_ParcelJoin = gMessageStringTable.getString("ParcelJoin"); |
2180 | _PREHASH_GroupRolesCount = gMessageStringTable.getString("GroupRolesCount"); | 1981 | _PREHASH_GroupRolesCount = gMessageStringTable.getString("GroupRolesCount"); |
@@ -2199,7 +2000,6 @@ void init_prehash_data() | |||
2199 | _PREHASH_PassToAgent = gMessageStringTable.getString("PassToAgent"); | 2000 | _PREHASH_PassToAgent = gMessageStringTable.getString("PassToAgent"); |
2200 | _PREHASH_PreyAgent = gMessageStringTable.getString("PreyAgent"); | 2001 | _PREHASH_PreyAgent = gMessageStringTable.getString("PreyAgent"); |
2201 | _PREHASH_SimStats = gMessageStringTable.getString("SimStats"); | 2002 | _PREHASH_SimStats = gMessageStringTable.getString("SimStats"); |
2202 | _PREHASH_Options = gMessageStringTable.getString("Options"); | ||
2203 | _PREHASH_LogoutReply = gMessageStringTable.getString("LogoutReply"); | 2003 | _PREHASH_LogoutReply = gMessageStringTable.getString("LogoutReply"); |
2204 | _PREHASH_FeatureDisabled = gMessageStringTable.getString("FeatureDisabled"); | 2004 | _PREHASH_FeatureDisabled = gMessageStringTable.getString("FeatureDisabled"); |
2205 | _PREHASH_ObjectLocalID = gMessageStringTable.getString("ObjectLocalID"); | 2005 | _PREHASH_ObjectLocalID = gMessageStringTable.getString("ObjectLocalID"); |
@@ -2210,10 +2010,8 @@ void init_prehash_data() | |||
2210 | _PREHASH_MasterID = gMessageStringTable.getString("MasterID"); | 2010 | _PREHASH_MasterID = gMessageStringTable.getString("MasterID"); |
2211 | _PREHASH_TransferData = gMessageStringTable.getString("TransferData"); | 2011 | _PREHASH_TransferData = gMessageStringTable.getString("TransferData"); |
2212 | _PREHASH_WantToMask = gMessageStringTable.getString("WantToMask"); | 2012 | _PREHASH_WantToMask = gMessageStringTable.getString("WantToMask"); |
2213 | _PREHASH_AvatarData = gMessageStringTable.getString("AvatarData"); | ||
2214 | _PREHASH_ParcelSelectObjects = gMessageStringTable.getString("ParcelSelectObjects"); | 2013 | _PREHASH_ParcelSelectObjects = gMessageStringTable.getString("ParcelSelectObjects"); |
2215 | _PREHASH_ExtraParams = gMessageStringTable.getString("ExtraParams"); | 2014 | _PREHASH_ExtraParams = gMessageStringTable.getString("ExtraParams"); |
2216 | _PREHASH_LogLogin = gMessageStringTable.getString("LogLogin"); | ||
2217 | _PREHASH_CreatorID = gMessageStringTable.getString("CreatorID"); | 2015 | _PREHASH_CreatorID = gMessageStringTable.getString("CreatorID"); |
2218 | _PREHASH_Summary = gMessageStringTable.getString("Summary"); | 2016 | _PREHASH_Summary = gMessageStringTable.getString("Summary"); |
2219 | _PREHASH_BuyObjectInventory = gMessageStringTable.getString("BuyObjectInventory"); | 2017 | _PREHASH_BuyObjectInventory = gMessageStringTable.getString("BuyObjectInventory"); |
@@ -2254,8 +2052,8 @@ void init_prehash_data() | |||
2254 | _PREHASH_GranterID = gMessageStringTable.getString("GranterID"); | 2052 | _PREHASH_GranterID = gMessageStringTable.getString("GranterID"); |
2255 | _PREHASH_WantToText = gMessageStringTable.getString("WantToText"); | 2053 | _PREHASH_WantToText = gMessageStringTable.getString("WantToText"); |
2256 | _PREHASH_ReportType = gMessageStringTable.getString("ReportType"); | 2054 | _PREHASH_ReportType = gMessageStringTable.getString("ReportType"); |
2257 | _PREHASH_DataBlock = gMessageStringTable.getString("DataBlock"); | ||
2258 | _PREHASH_SimulatorReady = gMessageStringTable.getString("SimulatorReady"); | 2055 | _PREHASH_SimulatorReady = gMessageStringTable.getString("SimulatorReady"); |
2056 | _PREHASH_DataBlock = gMessageStringTable.getString("DataBlock"); | ||
2259 | _PREHASH_AnimationSourceList = gMessageStringTable.getString("AnimationSourceList"); | 2057 | _PREHASH_AnimationSourceList = gMessageStringTable.getString("AnimationSourceList"); |
2260 | _PREHASH_SubscribeLoad = gMessageStringTable.getString("SubscribeLoad"); | 2058 | _PREHASH_SubscribeLoad = gMessageStringTable.getString("SubscribeLoad"); |
2261 | _PREHASH_UnsubscribeLoad = gMessageStringTable.getString("UnsubscribeLoad"); | 2059 | _PREHASH_UnsubscribeLoad = gMessageStringTable.getString("UnsubscribeLoad"); |
@@ -2282,9 +2080,8 @@ void init_prehash_data() | |||
2282 | _PREHASH_GestureFlags = gMessageStringTable.getString("GestureFlags"); | 2080 | _PREHASH_GestureFlags = gMessageStringTable.getString("GestureFlags"); |
2283 | _PREHASH_XferID = gMessageStringTable.getString("XferID"); | 2081 | _PREHASH_XferID = gMessageStringTable.getString("XferID"); |
2284 | _PREHASH_StatValue = gMessageStringTable.getString("StatValue"); | 2082 | _PREHASH_StatValue = gMessageStringTable.getString("StatValue"); |
2285 | _PREHASH_PickID = gMessageStringTable.getString("PickID"); | ||
2286 | _PREHASH_TaskID = gMessageStringTable.getString("TaskID"); | 2083 | _PREHASH_TaskID = gMessageStringTable.getString("TaskID"); |
2287 | _PREHASH_GridsPerEdge = gMessageStringTable.getString("GridsPerEdge"); | 2084 | _PREHASH_PickID = gMessageStringTable.getString("PickID"); |
2288 | _PREHASH_RayEnd = gMessageStringTable.getString("RayEnd"); | 2085 | _PREHASH_RayEnd = gMessageStringTable.getString("RayEnd"); |
2289 | _PREHASH_Throttles = gMessageStringTable.getString("Throttles"); | 2086 | _PREHASH_Throttles = gMessageStringTable.getString("Throttles"); |
2290 | _PREHASH_RebakeAvatarTextures = gMessageStringTable.getString("RebakeAvatarTextures"); | 2087 | _PREHASH_RebakeAvatarTextures = gMessageStringTable.getString("RebakeAvatarTextures"); |
@@ -2297,30 +2094,24 @@ void init_prehash_data() | |||
2297 | _PREHASH_TitleRoleID = gMessageStringTable.getString("TitleRoleID"); | 2094 | _PREHASH_TitleRoleID = gMessageStringTable.getString("TitleRoleID"); |
2298 | _PREHASH_SquareMetersCredit = gMessageStringTable.getString("SquareMetersCredit"); | 2095 | _PREHASH_SquareMetersCredit = gMessageStringTable.getString("SquareMetersCredit"); |
2299 | _PREHASH_Filename = gMessageStringTable.getString("Filename"); | 2096 | _PREHASH_Filename = gMessageStringTable.getString("Filename"); |
2300 | _PREHASH_SecuredTemplateChecksumRequest = gMessageStringTable.getString("SecuredTemplateChecksumRequest"); | ||
2301 | _PREHASH_TemplateChecksumRequest = gMessageStringTable.getString("TemplateChecksumRequest"); | ||
2302 | _PREHASH_AgentPresenceRequest = gMessageStringTable.getString("AgentPresenceRequest"); | ||
2303 | _PREHASH_ClassifiedInfoRequest = gMessageStringTable.getString("ClassifiedInfoRequest"); | 2097 | _PREHASH_ClassifiedInfoRequest = gMessageStringTable.getString("ClassifiedInfoRequest"); |
2304 | _PREHASH_ParcelInfoRequest = gMessageStringTable.getString("ParcelInfoRequest"); | 2098 | _PREHASH_ParcelInfoRequest = gMessageStringTable.getString("ParcelInfoRequest"); |
2305 | _PREHASH_ParcelObjectOwnersRequest = gMessageStringTable.getString("ParcelObjectOwnersRequest"); | 2099 | _PREHASH_ParcelObjectOwnersRequest = gMessageStringTable.getString("ParcelObjectOwnersRequest"); |
2306 | _PREHASH_TeleportLandmarkRequest = gMessageStringTable.getString("TeleportLandmarkRequest"); | 2100 | _PREHASH_TeleportLandmarkRequest = gMessageStringTable.getString("TeleportLandmarkRequest"); |
2307 | _PREHASH_EventInfoRequest = gMessageStringTable.getString("EventInfoRequest"); | 2101 | _PREHASH_EventInfoRequest = gMessageStringTable.getString("EventInfoRequest"); |
2308 | _PREHASH_ChatFromSimulator = gMessageStringTable.getString("ChatFromSimulator"); | ||
2309 | _PREHASH_PickInfoRequest = gMessageStringTable.getString("PickInfoRequest"); | ||
2310 | _PREHASH_MoneyBalanceRequest = gMessageStringTable.getString("MoneyBalanceRequest"); | 2102 | _PREHASH_MoneyBalanceRequest = gMessageStringTable.getString("MoneyBalanceRequest"); |
2311 | _PREHASH_GroupMembersRequest = gMessageStringTable.getString("GroupMembersRequest"); | 2103 | _PREHASH_GroupMembersRequest = gMessageStringTable.getString("GroupMembersRequest"); |
2312 | _PREHASH_GroupRoleMembersRequest = gMessageStringTable.getString("GroupRoleMembersRequest"); | 2104 | _PREHASH_GroupRoleMembersRequest = gMessageStringTable.getString("GroupRoleMembersRequest"); |
2105 | _PREHASH_ChatFromSimulator = gMessageStringTable.getString("ChatFromSimulator"); | ||
2313 | _PREHASH_OldFolderID = gMessageStringTable.getString("OldFolderID"); | 2106 | _PREHASH_OldFolderID = gMessageStringTable.getString("OldFolderID"); |
2314 | _PREHASH_UserInfoRequest = gMessageStringTable.getString("UserInfoRequest"); | 2107 | _PREHASH_UserInfoRequest = gMessageStringTable.getString("UserInfoRequest"); |
2315 | _PREHASH_TextureID = gMessageStringTable.getString("TextureID"); | 2108 | _PREHASH_TextureID = gMessageStringTable.getString("TextureID"); |
2316 | _PREHASH_ProfileURL = gMessageStringTable.getString("ProfileURL"); | 2109 | _PREHASH_ProfileURL = gMessageStringTable.getString("ProfileURL"); |
2317 | _PREHASH_Handle = gMessageStringTable.getString("Handle"); | 2110 | _PREHASH_Handle = gMessageStringTable.getString("Handle"); |
2318 | _PREHASH_StartParcelRenameAck = gMessageStringTable.getString("StartParcelRenameAck"); | ||
2319 | _PREHASH_ButtonIndex = gMessageStringTable.getString("ButtonIndex"); | 2111 | _PREHASH_ButtonIndex = gMessageStringTable.getString("ButtonIndex"); |
2320 | _PREHASH_GetScriptRunning = gMessageStringTable.getString("GetScriptRunning"); | 2112 | _PREHASH_GetScriptRunning = gMessageStringTable.getString("GetScriptRunning"); |
2321 | _PREHASH_SetScriptRunning = gMessageStringTable.getString("SetScriptRunning"); | 2113 | _PREHASH_SetScriptRunning = gMessageStringTable.getString("SetScriptRunning"); |
2322 | _PREHASH_Health = gMessageStringTable.getString("Health"); | 2114 | _PREHASH_Health = gMessageStringTable.getString("Health"); |
2323 | _PREHASH_FileID = gMessageStringTable.getString("FileID"); | ||
2324 | _PREHASH_CircuitInfo = gMessageStringTable.getString("CircuitInfo"); | 2115 | _PREHASH_CircuitInfo = gMessageStringTable.getString("CircuitInfo"); |
2325 | _PREHASH_ObjectBuy = gMessageStringTable.getString("ObjectBuy"); | 2116 | _PREHASH_ObjectBuy = gMessageStringTable.getString("ObjectBuy"); |
2326 | _PREHASH_ProfileEnd = gMessageStringTable.getString("ProfileEnd"); | 2117 | _PREHASH_ProfileEnd = gMessageStringTable.getString("ProfileEnd"); |
@@ -2345,7 +2136,6 @@ void init_prehash_data() | |||
2345 | _PREHASH_Change = gMessageStringTable.getString("Change"); | 2136 | _PREHASH_Change = gMessageStringTable.getString("Change"); |
2346 | _PREHASH_Height = gMessageStringTable.getString("Height"); | 2137 | _PREHASH_Height = gMessageStringTable.getString("Height"); |
2347 | _PREHASH_Region = gMessageStringTable.getString("Region"); | 2138 | _PREHASH_Region = gMessageStringTable.getString("Region"); |
2348 | _PREHASH_MoneyHistoryReply = gMessageStringTable.getString("MoneyHistoryReply"); | ||
2349 | _PREHASH_TelehubInfo = gMessageStringTable.getString("TelehubInfo"); | 2139 | _PREHASH_TelehubInfo = gMessageStringTable.getString("TelehubInfo"); |
2350 | _PREHASH_StateSave = gMessageStringTable.getString("StateSave"); | 2140 | _PREHASH_StateSave = gMessageStringTable.getString("StateSave"); |
2351 | _PREHASH_RoleData = gMessageStringTable.getString("RoleData"); | 2141 | _PREHASH_RoleData = gMessageStringTable.getString("RoleData"); |
@@ -2356,11 +2146,10 @@ void init_prehash_data() | |||
2356 | _PREHASH_UsePhysics = gMessageStringTable.getString("UsePhysics"); | 2146 | _PREHASH_UsePhysics = gMessageStringTable.getString("UsePhysics"); |
2357 | _PREHASH_RegionDenyTransacted = gMessageStringTable.getString("RegionDenyTransacted"); | 2147 | _PREHASH_RegionDenyTransacted = gMessageStringTable.getString("RegionDenyTransacted"); |
2358 | _PREHASH_JointType = gMessageStringTable.getString("JointType"); | 2148 | _PREHASH_JointType = gMessageStringTable.getString("JointType"); |
2359 | _PREHASH_TaxEstimate = gMessageStringTable.getString("TaxEstimate"); | ||
2360 | _PREHASH_ObjectTaxEstimate = gMessageStringTable.getString("ObjectTaxEstimate"); | 2149 | _PREHASH_ObjectTaxEstimate = gMessageStringTable.getString("ObjectTaxEstimate"); |
2361 | _PREHASH_LightTaxEstimate = gMessageStringTable.getString("LightTaxEstimate"); | 2150 | _PREHASH_LightTaxEstimate = gMessageStringTable.getString("LightTaxEstimate"); |
2362 | _PREHASH_TeleportLandingStatusChanged = gMessageStringTable.getString("TeleportLandingStatusChanged"); | ||
2363 | _PREHASH_LandTaxEstimate = gMessageStringTable.getString("LandTaxEstimate"); | 2151 | _PREHASH_LandTaxEstimate = gMessageStringTable.getString("LandTaxEstimate"); |
2152 | _PREHASH_TeleportLandingStatusChanged = gMessageStringTable.getString("TeleportLandingStatusChanged"); | ||
2364 | _PREHASH_GroupTaxEstimate = gMessageStringTable.getString("GroupTaxEstimate"); | 2153 | _PREHASH_GroupTaxEstimate = gMessageStringTable.getString("GroupTaxEstimate"); |
2365 | _PREHASH_AvgViewerFPS = gMessageStringTable.getString("AvgViewerFPS"); | 2154 | _PREHASH_AvgViewerFPS = gMessageStringTable.getString("AvgViewerFPS"); |
2366 | _PREHASH_Buttons = gMessageStringTable.getString("Buttons"); | 2155 | _PREHASH_Buttons = gMessageStringTable.getString("Buttons"); |
@@ -2392,8 +2181,6 @@ void init_prehash_data() | |||
2392 | _PREHASH_ChannelType = gMessageStringTable.getString("ChannelType"); | 2181 | _PREHASH_ChannelType = gMessageStringTable.getString("ChannelType"); |
2393 | _PREHASH_NonExemptMembers = gMessageStringTable.getString("NonExemptMembers"); | 2182 | _PREHASH_NonExemptMembers = gMessageStringTable.getString("NonExemptMembers"); |
2394 | _PREHASH_Agents = gMessageStringTable.getString("Agents"); | 2183 | _PREHASH_Agents = gMessageStringTable.getString("Agents"); |
2395 | _PREHASH_SimulatorStart = gMessageStringTable.getString("SimulatorStart"); | ||
2396 | _PREHASH_Enable = gMessageStringTable.getString("Enable"); | ||
2397 | _PREHASH_MemberData = gMessageStringTable.getString("MemberData"); | 2184 | _PREHASH_MemberData = gMessageStringTable.getString("MemberData"); |
2398 | _PREHASH_ToGroupID = gMessageStringTable.getString("ToGroupID"); | 2185 | _PREHASH_ToGroupID = gMessageStringTable.getString("ToGroupID"); |
2399 | _PREHASH_ImageNotInDatabase = gMessageStringTable.getString("ImageNotInDatabase"); | 2186 | _PREHASH_ImageNotInDatabase = gMessageStringTable.getString("ImageNotInDatabase"); |
@@ -2401,27 +2188,21 @@ void init_prehash_data() | |||
2401 | _PREHASH_AnimID = gMessageStringTable.getString("AnimID"); | 2188 | _PREHASH_AnimID = gMessageStringTable.getString("AnimID"); |
2402 | _PREHASH_Serial = gMessageStringTable.getString("Serial"); | 2189 | _PREHASH_Serial = gMessageStringTable.getString("Serial"); |
2403 | _PREHASH_AbuseRegionName = gMessageStringTable.getString("AbuseRegionName"); | 2190 | _PREHASH_AbuseRegionName = gMessageStringTable.getString("AbuseRegionName"); |
2404 | _PREHASH_ControlPort = gMessageStringTable.getString("ControlPort"); | ||
2405 | _PREHASH_ModifyLand = gMessageStringTable.getString("ModifyLand"); | 2191 | _PREHASH_ModifyLand = gMessageStringTable.getString("ModifyLand"); |
2406 | _PREHASH_Digest = gMessageStringTable.getString("Digest"); | 2192 | _PREHASH_Digest = gMessageStringTable.getString("Digest"); |
2407 | _PREHASH_Victim = gMessageStringTable.getString("Victim"); | 2193 | _PREHASH_Victim = gMessageStringTable.getString("Victim"); |
2408 | _PREHASH_Script = gMessageStringTable.getString("Script"); | 2194 | _PREHASH_Script = gMessageStringTable.getString("Script"); |
2409 | _PREHASH_TemplateChecksumReply = gMessageStringTable.getString("TemplateChecksumReply"); | ||
2410 | _PREHASH_PickInfoReply = gMessageStringTable.getString("PickInfoReply"); | 2195 | _PREHASH_PickInfoReply = gMessageStringTable.getString("PickInfoReply"); |
2411 | _PREHASH_MoneyBalanceReply = gMessageStringTable.getString("MoneyBalanceReply"); | 2196 | _PREHASH_MoneyBalanceReply = gMessageStringTable.getString("MoneyBalanceReply"); |
2412 | _PREHASH_RoutedMoneyBalanceReply = gMessageStringTable.getString("RoutedMoneyBalanceReply"); | 2197 | _PREHASH_RoutedMoneyBalanceReply = gMessageStringTable.getString("RoutedMoneyBalanceReply"); |
2413 | _PREHASH_RoleID = gMessageStringTable.getString("RoleID"); | 2198 | _PREHASH_RoleID = gMessageStringTable.getString("RoleID"); |
2414 | _PREHASH_RegionInfo = gMessageStringTable.getString("RegionInfo"); | 2199 | _PREHASH_RegionInfo = gMessageStringTable.getString("RegionInfo"); |
2415 | _PREHASH_Sequence = gMessageStringTable.getString("Sequence"); | ||
2416 | _PREHASH_GodUpdateRegionInfo = gMessageStringTable.getString("GodUpdateRegionInfo"); | 2200 | _PREHASH_GodUpdateRegionInfo = gMessageStringTable.getString("GodUpdateRegionInfo"); |
2417 | _PREHASH_LocalX = gMessageStringTable.getString("LocalX"); | ||
2418 | _PREHASH_LocalY = gMessageStringTable.getString("LocalY"); | ||
2419 | _PREHASH_StartAnim = gMessageStringTable.getString("StartAnim"); | 2201 | _PREHASH_StartAnim = gMessageStringTable.getString("StartAnim"); |
2420 | _PREHASH_Location = gMessageStringTable.getString("Location"); | ||
2421 | _PREHASH_Action = gMessageStringTable.getString("Action"); | 2202 | _PREHASH_Action = gMessageStringTable.getString("Action"); |
2203 | _PREHASH_Location = gMessageStringTable.getString("Location"); | ||
2422 | _PREHASH_Rights = gMessageStringTable.getString("Rights"); | 2204 | _PREHASH_Rights = gMessageStringTable.getString("Rights"); |
2423 | _PREHASH_SearchDir = gMessageStringTable.getString("SearchDir"); | 2205 | _PREHASH_SearchDir = gMessageStringTable.getString("SearchDir"); |
2424 | _PREHASH_Active = gMessageStringTable.getString("Active"); | ||
2425 | _PREHASH_TransferRequest = gMessageStringTable.getString("TransferRequest"); | 2206 | _PREHASH_TransferRequest = gMessageStringTable.getString("TransferRequest"); |
2426 | _PREHASH_ScriptSensorRequest = gMessageStringTable.getString("ScriptSensorRequest"); | 2207 | _PREHASH_ScriptSensorRequest = gMessageStringTable.getString("ScriptSensorRequest"); |
2427 | _PREHASH_MoneyTransferRequest = gMessageStringTable.getString("MoneyTransferRequest"); | 2208 | _PREHASH_MoneyTransferRequest = gMessageStringTable.getString("MoneyTransferRequest"); |
@@ -2432,8 +2213,6 @@ void init_prehash_data() | |||
2432 | _PREHASH_SharedData = gMessageStringTable.getString("SharedData"); | 2213 | _PREHASH_SharedData = gMessageStringTable.getString("SharedData"); |
2433 | _PREHASH_PSBlock = gMessageStringTable.getString("PSBlock"); | 2214 | _PREHASH_PSBlock = gMessageStringTable.getString("PSBlock"); |
2434 | _PREHASH_UUIDNameBlock = gMessageStringTable.getString("UUIDNameBlock"); | 2215 | _PREHASH_UUIDNameBlock = gMessageStringTable.getString("UUIDNameBlock"); |
2435 | _PREHASH_Viewer = gMessageStringTable.getString("Viewer"); | ||
2436 | _PREHASH_GroupNoticeDelete = gMessageStringTable.getString("GroupNoticeDelete"); | ||
2437 | _PREHASH_GroupTitleUpdate = gMessageStringTable.getString("GroupTitleUpdate"); | 2216 | _PREHASH_GroupTitleUpdate = gMessageStringTable.getString("GroupTitleUpdate"); |
2438 | _PREHASH_Method = gMessageStringTable.getString("Method"); | 2217 | _PREHASH_Method = gMessageStringTable.getString("Method"); |
2439 | _PREHASH_TouchName = gMessageStringTable.getString("TouchName"); | 2218 | _PREHASH_TouchName = gMessageStringTable.getString("TouchName"); |
@@ -2445,11 +2224,9 @@ void init_prehash_data() | |||
2445 | _PREHASH_SystemMessage = gMessageStringTable.getString("SystemMessage"); | 2224 | _PREHASH_SystemMessage = gMessageStringTable.getString("SystemMessage"); |
2446 | _PREHASH_BodyRotation = gMessageStringTable.getString("BodyRotation"); | 2225 | _PREHASH_BodyRotation = gMessageStringTable.getString("BodyRotation"); |
2447 | _PREHASH_SearchRegions = gMessageStringTable.getString("SearchRegions"); | 2226 | _PREHASH_SearchRegions = gMessageStringTable.getString("SearchRegions"); |
2448 | _PREHASH_Ignore = gMessageStringTable.getString("Ignore"); | ||
2449 | _PREHASH_AnimationData = gMessageStringTable.getString("AnimationData"); | 2227 | _PREHASH_AnimationData = gMessageStringTable.getString("AnimationData"); |
2450 | _PREHASH_StatID = gMessageStringTable.getString("StatID"); | 2228 | _PREHASH_StatID = gMessageStringTable.getString("StatID"); |
2451 | _PREHASH_ItemID = gMessageStringTable.getString("ItemID"); | 2229 | _PREHASH_ItemID = gMessageStringTable.getString("ItemID"); |
2452 | _PREHASH_AvatarStatisticsReply = gMessageStringTable.getString("AvatarStatisticsReply"); | ||
2453 | _PREHASH_ScriptDialogReply = gMessageStringTable.getString("ScriptDialogReply"); | 2230 | _PREHASH_ScriptDialogReply = gMessageStringTable.getString("ScriptDialogReply"); |
2454 | _PREHASH_RegionIDAndHandleReply = gMessageStringTable.getString("RegionIDAndHandleReply"); | 2231 | _PREHASH_RegionIDAndHandleReply = gMessageStringTable.getString("RegionIDAndHandleReply"); |
2455 | _PREHASH_CameraAtOffset = gMessageStringTable.getString("CameraAtOffset"); | 2232 | _PREHASH_CameraAtOffset = gMessageStringTable.getString("CameraAtOffset"); |
@@ -2474,7 +2251,6 @@ void init_prehash_data() | |||
2474 | _PREHASH_RegionPort = gMessageStringTable.getString("RegionPort"); | 2251 | _PREHASH_RegionPort = gMessageStringTable.getString("RegionPort"); |
2475 | _PREHASH_PriceEnergyUnit = gMessageStringTable.getString("PriceEnergyUnit"); | 2252 | _PREHASH_PriceEnergyUnit = gMessageStringTable.getString("PriceEnergyUnit"); |
2476 | _PREHASH_Bitmap = gMessageStringTable.getString("Bitmap"); | 2253 | _PREHASH_Bitmap = gMessageStringTable.getString("Bitmap"); |
2477 | _PREHASH_TrackAgentSession = gMessageStringTable.getString("TrackAgentSession"); | ||
2478 | _PREHASH_CacheMissType = gMessageStringTable.getString("CacheMissType"); | 2254 | _PREHASH_CacheMissType = gMessageStringTable.getString("CacheMissType"); |
2479 | _PREHASH_VFileID = gMessageStringTable.getString("VFileID"); | 2255 | _PREHASH_VFileID = gMessageStringTable.getString("VFileID"); |
2480 | _PREHASH_GroupInsigniaID = gMessageStringTable.getString("GroupInsigniaID"); | 2256 | _PREHASH_GroupInsigniaID = gMessageStringTable.getString("GroupInsigniaID"); |
@@ -2522,7 +2298,6 @@ void init_prehash_data() | |||
2522 | _PREHASH_CanAcceptTasks = gMessageStringTable.getString("CanAcceptTasks"); | 2298 | _PREHASH_CanAcceptTasks = gMessageStringTable.getString("CanAcceptTasks"); |
2523 | _PREHASH_ItemData = gMessageStringTable.getString("ItemData"); | 2299 | _PREHASH_ItemData = gMessageStringTable.getString("ItemData"); |
2524 | _PREHASH_AnimationList = gMessageStringTable.getString("AnimationList"); | 2300 | _PREHASH_AnimationList = gMessageStringTable.getString("AnimationList"); |
2525 | _PREHASH_PassObject = gMessageStringTable.getString("PassObject"); | ||
2526 | _PREHASH_Reputation = gMessageStringTable.getString("Reputation"); | 2301 | _PREHASH_Reputation = gMessageStringTable.getString("Reputation"); |
2527 | _PREHASH_IntValue = gMessageStringTable.getString("IntValue"); | 2302 | _PREHASH_IntValue = gMessageStringTable.getString("IntValue"); |
2528 | _PREHASH_TargetType = gMessageStringTable.getString("TargetType"); | 2303 | _PREHASH_TargetType = gMessageStringTable.getString("TargetType"); |
@@ -2545,10 +2320,8 @@ void init_prehash_data() | |||
2545 | _PREHASH_DirFindQueryBackend = gMessageStringTable.getString("DirFindQueryBackend"); | 2320 | _PREHASH_DirFindQueryBackend = gMessageStringTable.getString("DirFindQueryBackend"); |
2546 | _PREHASH_DirPlacesQueryBackend = gMessageStringTable.getString("DirPlacesQueryBackend"); | 2321 | _PREHASH_DirPlacesQueryBackend = gMessageStringTable.getString("DirPlacesQueryBackend"); |
2547 | _PREHASH_DirClassifiedQueryBackend = gMessageStringTable.getString("DirClassifiedQueryBackend"); | 2322 | _PREHASH_DirClassifiedQueryBackend = gMessageStringTable.getString("DirClassifiedQueryBackend"); |
2548 | _PREHASH_DirPicksQueryBackend = gMessageStringTable.getString("DirPicksQueryBackend"); | ||
2549 | _PREHASH_DirLandQueryBackend = gMessageStringTable.getString("DirLandQueryBackend"); | 2323 | _PREHASH_DirLandQueryBackend = gMessageStringTable.getString("DirLandQueryBackend"); |
2550 | _PREHASH_DirPopularQueryBackend = gMessageStringTable.getString("DirPopularQueryBackend"); | 2324 | _PREHASH_DirPopularQueryBackend = gMessageStringTable.getString("DirPopularQueryBackend"); |
2551 | _PREHASH_LogoutDemand = gMessageStringTable.getString("LogoutDemand"); | ||
2552 | _PREHASH_HistoryData = gMessageStringTable.getString("HistoryData"); | 2325 | _PREHASH_HistoryData = gMessageStringTable.getString("HistoryData"); |
2553 | _PREHASH_SnapshotID = gMessageStringTable.getString("SnapshotID"); | 2326 | _PREHASH_SnapshotID = gMessageStringTable.getString("SnapshotID"); |
2554 | _PREHASH_Aspect = gMessageStringTable.getString("Aspect"); | 2327 | _PREHASH_Aspect = gMessageStringTable.getString("Aspect"); |
@@ -2556,7 +2329,6 @@ void init_prehash_data() | |||
2556 | _PREHASH_VoteCast = gMessageStringTable.getString("VoteCast"); | 2329 | _PREHASH_VoteCast = gMessageStringTable.getString("VoteCast"); |
2557 | _PREHASH_CastsShadows = gMessageStringTable.getString("CastsShadows"); | 2330 | _PREHASH_CastsShadows = gMessageStringTable.getString("CastsShadows"); |
2558 | _PREHASH_EveryoneMask = gMessageStringTable.getString("EveryoneMask"); | 2331 | _PREHASH_EveryoneMask = gMessageStringTable.getString("EveryoneMask"); |
2559 | _PREHASH_SetSunPhase = gMessageStringTable.getString("SetSunPhase"); | ||
2560 | _PREHASH_ObjectSpinUpdate = gMessageStringTable.getString("ObjectSpinUpdate"); | 2332 | _PREHASH_ObjectSpinUpdate = gMessageStringTable.getString("ObjectSpinUpdate"); |
2561 | _PREHASH_MaturePublish = gMessageStringTable.getString("MaturePublish"); | 2333 | _PREHASH_MaturePublish = gMessageStringTable.getString("MaturePublish"); |
2562 | _PREHASH_UseExistingAsset = gMessageStringTable.getString("UseExistingAsset"); | 2334 | _PREHASH_UseExistingAsset = gMessageStringTable.getString("UseExistingAsset"); |
@@ -2565,7 +2337,6 @@ void init_prehash_data() | |||
2565 | _PREHASH_TeleportCancel = gMessageStringTable.getString("TeleportCancel"); | 2337 | _PREHASH_TeleportCancel = gMessageStringTable.getString("TeleportCancel"); |
2566 | _PREHASH_UnixTime = gMessageStringTable.getString("UnixTime"); | 2338 | _PREHASH_UnixTime = gMessageStringTable.getString("UnixTime"); |
2567 | _PREHASH_QueryFlags = gMessageStringTable.getString("QueryFlags"); | 2339 | _PREHASH_QueryFlags = gMessageStringTable.getString("QueryFlags"); |
2568 | _PREHASH_LastExecFroze = gMessageStringTable.getString("LastExecFroze"); | ||
2569 | _PREHASH_AlwaysRun = gMessageStringTable.getString("AlwaysRun"); | 2340 | _PREHASH_AlwaysRun = gMessageStringTable.getString("AlwaysRun"); |
2570 | _PREHASH_Bottom = gMessageStringTable.getString("Bottom"); | 2341 | _PREHASH_Bottom = gMessageStringTable.getString("Bottom"); |
2571 | _PREHASH_ButtonData = gMessageStringTable.getString("ButtonData"); | 2342 | _PREHASH_ButtonData = gMessageStringTable.getString("ButtonData"); |
@@ -2584,7 +2355,6 @@ void init_prehash_data() | |||
2584 | _PREHASH_GroupNoticesListRequest = gMessageStringTable.getString("GroupNoticesListRequest"); | 2355 | _PREHASH_GroupNoticesListRequest = gMessageStringTable.getString("GroupNoticesListRequest"); |
2585 | _PREHASH_ParcelAccessListRequest = gMessageStringTable.getString("ParcelAccessListRequest"); | 2356 | _PREHASH_ParcelAccessListRequest = gMessageStringTable.getString("ParcelAccessListRequest"); |
2586 | _PREHASH_MuteListRequest = gMessageStringTable.getString("MuteListRequest"); | 2357 | _PREHASH_MuteListRequest = gMessageStringTable.getString("MuteListRequest"); |
2587 | _PREHASH_StartPeriod = gMessageStringTable.getString("StartPeriod"); | ||
2588 | _PREHASH_RpcChannelRequest = gMessageStringTable.getString("RpcChannelRequest"); | 2358 | _PREHASH_RpcChannelRequest = gMessageStringTable.getString("RpcChannelRequest"); |
2589 | _PREHASH_LandStatRequest = gMessageStringTable.getString("LandStatRequest"); | 2359 | _PREHASH_LandStatRequest = gMessageStringTable.getString("LandStatRequest"); |
2590 | _PREHASH_PlacesQuery = gMessageStringTable.getString("PlacesQuery"); | 2360 | _PREHASH_PlacesQuery = gMessageStringTable.getString("PlacesQuery"); |
@@ -2612,34 +2382,27 @@ void init_prehash_data() | |||
2612 | _PREHASH_SoundTrigger = gMessageStringTable.getString("SoundTrigger"); | 2382 | _PREHASH_SoundTrigger = gMessageStringTable.getString("SoundTrigger"); |
2613 | _PREHASH_TerrainRaiseLimit = gMessageStringTable.getString("TerrainRaiseLimit"); | 2383 | _PREHASH_TerrainRaiseLimit = gMessageStringTable.getString("TerrainRaiseLimit"); |
2614 | _PREHASH_Quorum = gMessageStringTable.getString("Quorum"); | 2384 | _PREHASH_Quorum = gMessageStringTable.getString("Quorum"); |
2615 | _PREHASH_TokenBlock = gMessageStringTable.getString("TokenBlock"); | ||
2616 | _PREHASH_AgentBlock = gMessageStringTable.getString("AgentBlock"); | 2385 | _PREHASH_AgentBlock = gMessageStringTable.getString("AgentBlock"); |
2617 | _PREHASH_CommandBlock = gMessageStringTable.getString("CommandBlock"); | 2386 | _PREHASH_CommandBlock = gMessageStringTable.getString("CommandBlock"); |
2618 | _PREHASH_PricePublicObjectDecay = gMessageStringTable.getString("PricePublicObjectDecay"); | 2387 | _PREHASH_PricePublicObjectDecay = gMessageStringTable.getString("PricePublicObjectDecay"); |
2619 | _PREHASH_SpawnPointPos = gMessageStringTable.getString("SpawnPointPos"); | 2388 | _PREHASH_SpawnPointPos = gMessageStringTable.getString("SpawnPointPos"); |
2620 | _PREHASH_AttachedSoundCutoffRadius = gMessageStringTable.getString("AttachedSoundCutoffRadius"); | ||
2621 | _PREHASH_VolumeDetail = gMessageStringTable.getString("VolumeDetail"); | 2389 | _PREHASH_VolumeDetail = gMessageStringTable.getString("VolumeDetail"); |
2622 | _PREHASH_FromAgentName = gMessageStringTable.getString("FromAgentName"); | 2390 | _PREHASH_FromAgentName = gMessageStringTable.getString("FromAgentName"); |
2623 | _PREHASH_Range = gMessageStringTable.getString("Range"); | 2391 | _PREHASH_Range = gMessageStringTable.getString("Range"); |
2624 | _PREHASH_DirectoryVisibility = gMessageStringTable.getString("DirectoryVisibility"); | 2392 | _PREHASH_DirectoryVisibility = gMessageStringTable.getString("DirectoryVisibility"); |
2625 | _PREHASH_PublicIP = gMessageStringTable.getString("PublicIP"); | 2393 | _PREHASH_PublicIP = gMessageStringTable.getString("PublicIP"); |
2626 | _PREHASH_TeleportFailed = gMessageStringTable.getString("TeleportFailed"); | 2394 | _PREHASH_TeleportFailed = gMessageStringTable.getString("TeleportFailed"); |
2627 | _PREHASH_OnlineStatusReply = gMessageStringTable.getString("OnlineStatusReply"); | ||
2628 | _PREHASH_RequestAvatarInfo = gMessageStringTable.getString("RequestAvatarInfo"); | ||
2629 | _PREHASH_PreloadSound = gMessageStringTable.getString("PreloadSound"); | 2395 | _PREHASH_PreloadSound = gMessageStringTable.getString("PreloadSound"); |
2630 | _PREHASH_ScreenshotID = gMessageStringTable.getString("ScreenshotID"); | 2396 | _PREHASH_ScreenshotID = gMessageStringTable.getString("ScreenshotID"); |
2631 | _PREHASH_CovenantTimestamp = gMessageStringTable.getString("CovenantTimestamp"); | 2397 | _PREHASH_CovenantTimestamp = gMessageStringTable.getString("CovenantTimestamp"); |
2632 | _PREHASH_OldestUnacked = gMessageStringTable.getString("OldestUnacked"); | 2398 | _PREHASH_OldestUnacked = gMessageStringTable.getString("OldestUnacked"); |
2633 | _PREHASH_SimulatorIP = gMessageStringTable.getString("SimulatorIP"); | 2399 | _PREHASH_SimulatorIP = gMessageStringTable.getString("SimulatorIP"); |
2634 | _PREHASH_ObjectImport = gMessageStringTable.getString("ObjectImport"); | ||
2635 | _PREHASH_Value = gMessageStringTable.getString("Value"); | 2400 | _PREHASH_Value = gMessageStringTable.getString("Value"); |
2636 | _PREHASH_JointAxisOrAnchor = gMessageStringTable.getString("JointAxisOrAnchor"); | 2401 | _PREHASH_JointAxisOrAnchor = gMessageStringTable.getString("JointAxisOrAnchor"); |
2637 | _PREHASH_Test0 = gMessageStringTable.getString("Test0"); | 2402 | _PREHASH_Test0 = gMessageStringTable.getString("Test0"); |
2638 | _PREHASH_Test1 = gMessageStringTable.getString("Test1"); | 2403 | _PREHASH_Test1 = gMessageStringTable.getString("Test1"); |
2639 | _PREHASH_Test2 = gMessageStringTable.getString("Test2"); | 2404 | _PREHASH_Test2 = gMessageStringTable.getString("Test2"); |
2640 | _PREHASH_SunPhase = gMessageStringTable.getString("SunPhase"); | 2405 | _PREHASH_SunPhase = gMessageStringTable.getString("SunPhase"); |
2641 | _PREHASH_Place = gMessageStringTable.getString("Place"); | ||
2642 | _PREHASH_Phase = gMessageStringTable.getString("Phase"); | ||
2643 | _PREHASH_ParcelDivide = gMessageStringTable.getString("ParcelDivide"); | 2406 | _PREHASH_ParcelDivide = gMessageStringTable.getString("ParcelDivide"); |
2644 | _PREHASH_PriceObjectClaim = gMessageStringTable.getString("PriceObjectClaim"); | 2407 | _PREHASH_PriceObjectClaim = gMessageStringTable.getString("PriceObjectClaim"); |
2645 | _PREHASH_Field = gMessageStringTable.getString("Field"); | 2408 | _PREHASH_Field = gMessageStringTable.getString("Field"); |
@@ -2649,7 +2412,6 @@ void init_prehash_data() | |||
2649 | _PREHASH_Score = gMessageStringTable.getString("Score"); | 2412 | _PREHASH_Score = gMessageStringTable.getString("Score"); |
2650 | _PREHASH_Image = gMessageStringTable.getString("Image"); | 2413 | _PREHASH_Image = gMessageStringTable.getString("Image"); |
2651 | _PREHASH_ObjectClickAction = gMessageStringTable.getString("ObjectClickAction"); | 2414 | _PREHASH_ObjectClickAction = gMessageStringTable.getString("ObjectClickAction"); |
2652 | _PREHASH_Delta = gMessageStringTable.getString("Delta"); | ||
2653 | _PREHASH_Parameter = gMessageStringTable.getString("Parameter"); | 2415 | _PREHASH_Parameter = gMessageStringTable.getString("Parameter"); |
2654 | _PREHASH_Flags = gMessageStringTable.getString("Flags"); | 2416 | _PREHASH_Flags = gMessageStringTable.getString("Flags"); |
2655 | _PREHASH_Plane = gMessageStringTable.getString("Plane"); | 2417 | _PREHASH_Plane = gMessageStringTable.getString("Plane"); |
@@ -2659,26 +2421,24 @@ void init_prehash_data() | |||
2659 | _PREHASH_Textures = gMessageStringTable.getString("Textures"); | 2421 | _PREHASH_Textures = gMessageStringTable.getString("Textures"); |
2660 | _PREHASH_EventData = gMessageStringTable.getString("EventData"); | 2422 | _PREHASH_EventData = gMessageStringTable.getString("EventData"); |
2661 | _PREHASH_Final = gMessageStringTable.getString("Final"); | 2423 | _PREHASH_Final = gMessageStringTable.getString("Final"); |
2424 | _PREHASH_System = gMessageStringTable.getString("System"); | ||
2662 | _PREHASH_TelehubPos = gMessageStringTable.getString("TelehubPos"); | 2425 | _PREHASH_TelehubPos = gMessageStringTable.getString("TelehubPos"); |
2663 | _PREHASH_ReportAutosaveCrash = gMessageStringTable.getString("ReportAutosaveCrash"); | 2426 | _PREHASH_ReportAutosaveCrash = gMessageStringTable.getString("ReportAutosaveCrash"); |
2664 | _PREHASH_CreateTrustedCircuit = gMessageStringTable.getString("CreateTrustedCircuit"); | 2427 | _PREHASH_CreateTrustedCircuit = gMessageStringTable.getString("CreateTrustedCircuit"); |
2665 | _PREHASH_DenyTrustedCircuit = gMessageStringTable.getString("DenyTrustedCircuit"); | 2428 | _PREHASH_DenyTrustedCircuit = gMessageStringTable.getString("DenyTrustedCircuit"); |
2666 | _PREHASH_RequestTrustedCircuit = gMessageStringTable.getString("RequestTrustedCircuit"); | 2429 | _PREHASH_RequestTrustedCircuit = gMessageStringTable.getString("RequestTrustedCircuit"); |
2667 | _PREHASH_Codec = gMessageStringTable.getString("Codec"); | 2430 | _PREHASH_Codec = gMessageStringTable.getString("Codec"); |
2668 | _PREHASH_Level = gMessageStringTable.getString("Level"); | ||
2669 | _PREHASH_Modal = gMessageStringTable.getString("Modal"); | 2431 | _PREHASH_Modal = gMessageStringTable.getString("Modal"); |
2670 | _PREHASH_ChildAgentUnknown = gMessageStringTable.getString("ChildAgentUnknown"); | 2432 | _PREHASH_ChildAgentUnknown = gMessageStringTable.getString("ChildAgentUnknown"); |
2671 | _PREHASH_LandingType = gMessageStringTable.getString("LandingType"); | 2433 | _PREHASH_LandingType = gMessageStringTable.getString("LandingType"); |
2672 | _PREHASH_ScriptRunningReply = gMessageStringTable.getString("ScriptRunningReply"); | 2434 | _PREHASH_ScriptRunningReply = gMessageStringTable.getString("ScriptRunningReply"); |
2673 | _PREHASH_MoneyDetailsReply = gMessageStringTable.getString("MoneyDetailsReply"); | ||
2674 | _PREHASH_Reply = gMessageStringTable.getString("Reply"); | 2435 | _PREHASH_Reply = gMessageStringTable.getString("Reply"); |
2436 | _PREHASH_GroupAccountDetailsReply = gMessageStringTable.getString("GroupAccountDetailsReply"); | ||
2675 | _PREHASH_TelehubRot = gMessageStringTable.getString("TelehubRot"); | 2437 | _PREHASH_TelehubRot = gMessageStringTable.getString("TelehubRot"); |
2676 | _PREHASH_RequestFriendship = gMessageStringTable.getString("RequestFriendship"); | ||
2677 | _PREHASH_AcceptFriendship = gMessageStringTable.getString("AcceptFriendship"); | 2438 | _PREHASH_AcceptFriendship = gMessageStringTable.getString("AcceptFriendship"); |
2678 | _PREHASH_GroupAccountDetailsReply = gMessageStringTable.getString("GroupAccountDetailsReply"); | 2439 | _PREHASH_ItemType = gMessageStringTable.getString("ItemType"); |
2679 | _PREHASH_DwellInfo = gMessageStringTable.getString("DwellInfo"); | 2440 | _PREHASH_DwellInfo = gMessageStringTable.getString("DwellInfo"); |
2680 | _PREHASH_AgentResume = gMessageStringTable.getString("AgentResume"); | 2441 | _PREHASH_AgentResume = gMessageStringTable.getString("AgentResume"); |
2681 | _PREHASH_ItemType = gMessageStringTable.getString("ItemType"); | ||
2682 | _PREHASH_MailFilter = gMessageStringTable.getString("MailFilter"); | 2442 | _PREHASH_MailFilter = gMessageStringTable.getString("MailFilter"); |
2683 | _PREHASH_Disconnect = gMessageStringTable.getString("Disconnect"); | 2443 | _PREHASH_Disconnect = gMessageStringTable.getString("Disconnect"); |
2684 | _PREHASH_SimPosition = gMessageStringTable.getString("SimPosition"); | 2444 | _PREHASH_SimPosition = gMessageStringTable.getString("SimPosition"); |
@@ -2705,7 +2465,6 @@ void init_prehash_data() | |||
2705 | _PREHASH_CategoryID = gMessageStringTable.getString("CategoryID"); | 2465 | _PREHASH_CategoryID = gMessageStringTable.getString("CategoryID"); |
2706 | _PREHASH_Token = gMessageStringTable.getString("Token"); | 2466 | _PREHASH_Token = gMessageStringTable.getString("Token"); |
2707 | _PREHASH_AggregatePerms = gMessageStringTable.getString("AggregatePerms"); | 2467 | _PREHASH_AggregatePerms = gMessageStringTable.getString("AggregatePerms"); |
2708 | _PREHASH_StartParcelRemoveAck = gMessageStringTable.getString("StartParcelRemoveAck"); | ||
2709 | _PREHASH_ObjectSelect = gMessageStringTable.getString("ObjectSelect"); | 2468 | _PREHASH_ObjectSelect = gMessageStringTable.getString("ObjectSelect"); |
2710 | _PREHASH_ForceObjectSelect = gMessageStringTable.getString("ForceObjectSelect"); | 2469 | _PREHASH_ForceObjectSelect = gMessageStringTable.getString("ForceObjectSelect"); |
2711 | _PREHASH_Price = gMessageStringTable.getString("Price"); | 2470 | _PREHASH_Price = gMessageStringTable.getString("Price"); |
@@ -2734,7 +2493,6 @@ void init_prehash_data() | |||
2734 | _PREHASH_AvatarID = gMessageStringTable.getString("AvatarID"); | 2493 | _PREHASH_AvatarID = gMessageStringTable.getString("AvatarID"); |
2735 | _PREHASH_FounderID = gMessageStringTable.getString("FounderID"); | 2494 | _PREHASH_FounderID = gMessageStringTable.getString("FounderID"); |
2736 | _PREHASH_EndPointID = gMessageStringTable.getString("EndPointID"); | 2495 | _PREHASH_EndPointID = gMessageStringTable.getString("EndPointID"); |
2737 | _PREHASH_StipendEstimate = gMessageStringTable.getString("StipendEstimate"); | ||
2738 | _PREHASH_LocationLookAt = gMessageStringTable.getString("LocationLookAt"); | 2496 | _PREHASH_LocationLookAt = gMessageStringTable.getString("LocationLookAt"); |
2739 | _PREHASH_Sound = gMessageStringTable.getString("Sound"); | 2497 | _PREHASH_Sound = gMessageStringTable.getString("Sound"); |
2740 | _PREHASH_Cover = gMessageStringTable.getString("Cover"); | 2498 | _PREHASH_Cover = gMessageStringTable.getString("Cover"); |
@@ -2754,12 +2512,12 @@ void init_prehash_data() | |||
2754 | _PREHASH_GroupRoleChanges = gMessageStringTable.getString("GroupRoleChanges"); | 2512 | _PREHASH_GroupRoleChanges = gMessageStringTable.getString("GroupRoleChanges"); |
2755 | _PREHASH_Count = gMessageStringTable.getString("Count"); | 2513 | _PREHASH_Count = gMessageStringTable.getString("Count"); |
2756 | _PREHASH_South = gMessageStringTable.getString("South"); | 2514 | _PREHASH_South = gMessageStringTable.getString("South"); |
2757 | _PREHASH_Entry = gMessageStringTable.getString("Entry"); | ||
2758 | _PREHASH_ObjectUpdateCompressed = gMessageStringTable.getString("ObjectUpdateCompressed"); | 2515 | _PREHASH_ObjectUpdateCompressed = gMessageStringTable.getString("ObjectUpdateCompressed"); |
2759 | _PREHASH_MuteFlags = gMessageStringTable.getString("MuteFlags"); | 2516 | _PREHASH_MuteFlags = gMessageStringTable.getString("MuteFlags"); |
2760 | _PREHASH_Group = gMessageStringTable.getString("Group"); | 2517 | _PREHASH_Group = gMessageStringTable.getString("Group"); |
2761 | _PREHASH_AgentPause = gMessageStringTable.getString("AgentPause"); | 2518 | _PREHASH_AgentPause = gMessageStringTable.getString("AgentPause"); |
2762 | _PREHASH_LanguagesText = gMessageStringTable.getString("LanguagesText"); | 2519 | _PREHASH_LanguagesText = gMessageStringTable.getString("LanguagesText"); |
2520 | _PREHASH_Error = gMessageStringTable.getString("Error"); | ||
2763 | _PREHASH_InternalScriptMail = gMessageStringTable.getString("InternalScriptMail"); | 2521 | _PREHASH_InternalScriptMail = gMessageStringTable.getString("InternalScriptMail"); |
2764 | _PREHASH_FindAgent = gMessageStringTable.getString("FindAgent"); | 2522 | _PREHASH_FindAgent = gMessageStringTable.getString("FindAgent"); |
2765 | _PREHASH_AgentData = gMessageStringTable.getString("AgentData"); | 2523 | _PREHASH_AgentData = gMessageStringTable.getString("AgentData"); |
@@ -2768,7 +2526,6 @@ void init_prehash_data() | |||
2768 | _PREHASH_AcceptNotices = gMessageStringTable.getString("AcceptNotices"); | 2526 | _PREHASH_AcceptNotices = gMessageStringTable.getString("AcceptNotices"); |
2769 | _PREHASH_SetGroupAcceptNotices = gMessageStringTable.getString("SetGroupAcceptNotices"); | 2527 | _PREHASH_SetGroupAcceptNotices = gMessageStringTable.getString("SetGroupAcceptNotices"); |
2770 | _PREHASH_CloseCircuit = gMessageStringTable.getString("CloseCircuit"); | 2528 | _PREHASH_CloseCircuit = gMessageStringTable.getString("CloseCircuit"); |
2771 | _PREHASH_LogControl = gMessageStringTable.getString("LogControl"); | ||
2772 | _PREHASH_TeleportFinish = gMessageStringTable.getString("TeleportFinish"); | 2529 | _PREHASH_TeleportFinish = gMessageStringTable.getString("TeleportFinish"); |
2773 | _PREHASH_PathRevolutions = gMessageStringTable.getString("PathRevolutions"); | 2530 | _PREHASH_PathRevolutions = gMessageStringTable.getString("PathRevolutions"); |
2774 | _PREHASH_ClassifiedInfoReply = gMessageStringTable.getString("ClassifiedInfoReply"); | 2531 | _PREHASH_ClassifiedInfoReply = gMessageStringTable.getString("ClassifiedInfoReply"); |
@@ -2785,7 +2542,6 @@ void init_prehash_data() | |||
2785 | _PREHASH_EventNotificationAddRequest = gMessageStringTable.getString("EventNotificationAddRequest"); | 2542 | _PREHASH_EventNotificationAddRequest = gMessageStringTable.getString("EventNotificationAddRequest"); |
2786 | _PREHASH_ParcelDwellRequest = gMessageStringTable.getString("ParcelDwellRequest"); | 2543 | _PREHASH_ParcelDwellRequest = gMessageStringTable.getString("ParcelDwellRequest"); |
2787 | _PREHASH_EventLocationRequest = gMessageStringTable.getString("EventLocationRequest"); | 2544 | _PREHASH_EventLocationRequest = gMessageStringTable.getString("EventLocationRequest"); |
2788 | _PREHASH_EndPeriod = gMessageStringTable.getString("EndPeriod"); | ||
2789 | _PREHASH_SetStartLocationRequest = gMessageStringTable.getString("SetStartLocationRequest"); | 2545 | _PREHASH_SetStartLocationRequest = gMessageStringTable.getString("SetStartLocationRequest"); |
2790 | _PREHASH_QueryStart = gMessageStringTable.getString("QueryStart"); | 2546 | _PREHASH_QueryStart = gMessageStringTable.getString("QueryStart"); |
2791 | _PREHASH_EjectData = gMessageStringTable.getString("EjectData"); | 2547 | _PREHASH_EjectData = gMessageStringTable.getString("EjectData"); |
@@ -2798,7 +2554,6 @@ void init_prehash_data() | |||
2798 | _PREHASH_VFileType = gMessageStringTable.getString("VFileType"); | 2554 | _PREHASH_VFileType = gMessageStringTable.getString("VFileType"); |
2799 | _PREHASH_EjectGroupMemberReply = gMessageStringTable.getString("EjectGroupMemberReply"); | 2555 | _PREHASH_EjectGroupMemberReply = gMessageStringTable.getString("EjectGroupMemberReply"); |
2800 | _PREHASH_ImageData = gMessageStringTable.getString("ImageData"); | 2556 | _PREHASH_ImageData = gMessageStringTable.getString("ImageData"); |
2801 | _PREHASH_SpaceServerSimulatorTimeMessage = gMessageStringTable.getString("SpaceServerSimulatorTimeMessage"); | ||
2802 | _PREHASH_SimulatorViewerTimeMessage = gMessageStringTable.getString("SimulatorViewerTimeMessage"); | 2557 | _PREHASH_SimulatorViewerTimeMessage = gMessageStringTable.getString("SimulatorViewerTimeMessage"); |
2803 | _PREHASH_Rotation = gMessageStringTable.getString("Rotation"); | 2558 | _PREHASH_Rotation = gMessageStringTable.getString("Rotation"); |
2804 | _PREHASH_Selection = gMessageStringTable.getString("Selection"); | 2559 | _PREHASH_Selection = gMessageStringTable.getString("Selection"); |
@@ -2806,7 +2561,6 @@ void init_prehash_data() | |||
2806 | _PREHASH_OperationData = gMessageStringTable.getString("OperationData"); | 2561 | _PREHASH_OperationData = gMessageStringTable.getString("OperationData"); |
2807 | _PREHASH_ExpirationDate = gMessageStringTable.getString("ExpirationDate"); | 2562 | _PREHASH_ExpirationDate = gMessageStringTable.getString("ExpirationDate"); |
2808 | _PREHASH_ParcelDeedToGroup = gMessageStringTable.getString("ParcelDeedToGroup"); | 2563 | _PREHASH_ParcelDeedToGroup = gMessageStringTable.getString("ParcelDeedToGroup"); |
2809 | _PREHASH_DirPicksReply = gMessageStringTable.getString("DirPicksReply"); | ||
2810 | _PREHASH_AvatarPicksReply = gMessageStringTable.getString("AvatarPicksReply"); | 2564 | _PREHASH_AvatarPicksReply = gMessageStringTable.getString("AvatarPicksReply"); |
2811 | _PREHASH_GroupTitlesReply = gMessageStringTable.getString("GroupTitlesReply"); | 2565 | _PREHASH_GroupTitlesReply = gMessageStringTable.getString("GroupTitlesReply"); |
2812 | _PREHASH_AgentInfo = gMessageStringTable.getString("AgentInfo"); | 2566 | _PREHASH_AgentInfo = gMessageStringTable.getString("AgentInfo"); |
@@ -2817,8 +2571,8 @@ void init_prehash_data() | |||
2817 | _PREHASH_SourceID = gMessageStringTable.getString("SourceID"); | 2571 | _PREHASH_SourceID = gMessageStringTable.getString("SourceID"); |
2818 | _PREHASH_ChangeUserRights = gMessageStringTable.getString("ChangeUserRights"); | 2572 | _PREHASH_ChangeUserRights = gMessageStringTable.getString("ChangeUserRights"); |
2819 | _PREHASH_TeleportFlags = gMessageStringTable.getString("TeleportFlags"); | 2573 | _PREHASH_TeleportFlags = gMessageStringTable.getString("TeleportFlags"); |
2820 | _PREHASH_AssetData = gMessageStringTable.getString("AssetData"); | ||
2821 | _PREHASH_SlaveParcelData = gMessageStringTable.getString("SlaveParcelData"); | 2574 | _PREHASH_SlaveParcelData = gMessageStringTable.getString("SlaveParcelData"); |
2575 | _PREHASH_AssetData = gMessageStringTable.getString("AssetData"); | ||
2822 | _PREHASH_MultipleObjectUpdate = gMessageStringTable.getString("MultipleObjectUpdate"); | 2576 | _PREHASH_MultipleObjectUpdate = gMessageStringTable.getString("MultipleObjectUpdate"); |
2823 | _PREHASH_ObjectUpdate = gMessageStringTable.getString("ObjectUpdate"); | 2577 | _PREHASH_ObjectUpdate = gMessageStringTable.getString("ObjectUpdate"); |
2824 | _PREHASH_ImprovedTerseObjectUpdate = gMessageStringTable.getString("ImprovedTerseObjectUpdate"); | 2578 | _PREHASH_ImprovedTerseObjectUpdate = gMessageStringTable.getString("ImprovedTerseObjectUpdate"); |
@@ -2834,7 +2588,6 @@ void init_prehash_data() | |||
2834 | _PREHASH_ClaimDate = gMessageStringTable.getString("ClaimDate"); | 2588 | _PREHASH_ClaimDate = gMessageStringTable.getString("ClaimDate"); |
2835 | _PREHASH_MergeParcel = gMessageStringTable.getString("MergeParcel"); | 2589 | _PREHASH_MergeParcel = gMessageStringTable.getString("MergeParcel"); |
2836 | _PREHASH_Priority = gMessageStringTable.getString("Priority"); | 2590 | _PREHASH_Priority = gMessageStringTable.getString("Priority"); |
2837 | _PREHASH_Building = gMessageStringTable.getString("Building"); | ||
2838 | _PREHASH_QueryText = gMessageStringTable.getString("QueryText"); | 2591 | _PREHASH_QueryText = gMessageStringTable.getString("QueryText"); |
2839 | _PREHASH_GroupNoticeAdd = gMessageStringTable.getString("GroupNoticeAdd"); | 2592 | _PREHASH_GroupNoticeAdd = gMessageStringTable.getString("GroupNoticeAdd"); |
2840 | _PREHASH_ReturnType = gMessageStringTable.getString("ReturnType"); | 2593 | _PREHASH_ReturnType = gMessageStringTable.getString("ReturnType"); |
@@ -2844,7 +2597,6 @@ void init_prehash_data() | |||
2844 | _PREHASH_RequestMultipleObjects = gMessageStringTable.getString("RequestMultipleObjects"); | 2597 | _PREHASH_RequestMultipleObjects = gMessageStringTable.getString("RequestMultipleObjects"); |
2845 | _PREHASH_RetrieveInstantMessages = gMessageStringTable.getString("RetrieveInstantMessages"); | 2598 | _PREHASH_RetrieveInstantMessages = gMessageStringTable.getString("RetrieveInstantMessages"); |
2846 | _PREHASH_OpenCircuit = gMessageStringTable.getString("OpenCircuit"); | 2599 | _PREHASH_OpenCircuit = gMessageStringTable.getString("OpenCircuit"); |
2847 | _PREHASH_SecureSessionID = gMessageStringTable.getString("SecureSessionID"); | ||
2848 | _PREHASH_CrossedRegion = gMessageStringTable.getString("CrossedRegion"); | 2600 | _PREHASH_CrossedRegion = gMessageStringTable.getString("CrossedRegion"); |
2849 | _PREHASH_DirGroupsReply = gMessageStringTable.getString("DirGroupsReply"); | 2601 | _PREHASH_DirGroupsReply = gMessageStringTable.getString("DirGroupsReply"); |
2850 | _PREHASH_AvatarGroupsReply = gMessageStringTable.getString("AvatarGroupsReply"); | 2602 | _PREHASH_AvatarGroupsReply = gMessageStringTable.getString("AvatarGroupsReply"); |
@@ -2855,18 +2607,14 @@ void init_prehash_data() | |||
2855 | _PREHASH_ParentEstate = gMessageStringTable.getString("ParentEstate"); | 2607 | _PREHASH_ParentEstate = gMessageStringTable.getString("ParentEstate"); |
2856 | _PREHASH_EstateName = gMessageStringTable.getString("EstateName"); | 2608 | _PREHASH_EstateName = gMessageStringTable.getString("EstateName"); |
2857 | _PREHASH_MuteName = gMessageStringTable.getString("MuteName"); | 2609 | _PREHASH_MuteName = gMessageStringTable.getString("MuteName"); |
2858 | _PREHASH_StartParcelRename = gMessageStringTable.getString("StartParcelRename"); | ||
2859 | _PREHASH_BulkParcelRename = gMessageStringTable.getString("BulkParcelRename"); | ||
2860 | _PREHASH_ParcelRename = gMessageStringTable.getString("ParcelRename"); | 2610 | _PREHASH_ParcelRename = gMessageStringTable.getString("ParcelRename"); |
2861 | _PREHASH_ViewerFilename = gMessageStringTable.getString("ViewerFilename"); | 2611 | _PREHASH_ViewerFilename = gMessageStringTable.getString("ViewerFilename"); |
2862 | _PREHASH_Positive = gMessageStringTable.getString("Positive"); | ||
2863 | _PREHASH_UserReportInternal = gMessageStringTable.getString("UserReportInternal"); | 2612 | _PREHASH_UserReportInternal = gMessageStringTable.getString("UserReportInternal"); |
2864 | _PREHASH_AvatarPropertiesRequest = gMessageStringTable.getString("AvatarPropertiesRequest"); | 2613 | _PREHASH_AvatarPropertiesRequest = gMessageStringTable.getString("AvatarPropertiesRequest"); |
2865 | _PREHASH_ParcelPropertiesRequest = gMessageStringTable.getString("ParcelPropertiesRequest"); | 2614 | _PREHASH_ParcelPropertiesRequest = gMessageStringTable.getString("ParcelPropertiesRequest"); |
2866 | _PREHASH_GroupProfileRequest = gMessageStringTable.getString("GroupProfileRequest"); | 2615 | _PREHASH_GroupProfileRequest = gMessageStringTable.getString("GroupProfileRequest"); |
2867 | _PREHASH_AgentDataUpdateRequest = gMessageStringTable.getString("AgentDataUpdateRequest"); | 2616 | _PREHASH_AgentDataUpdateRequest = gMessageStringTable.getString("AgentDataUpdateRequest"); |
2868 | _PREHASH_PriceObjectScaleFactor = gMessageStringTable.getString("PriceObjectScaleFactor"); | 2617 | _PREHASH_PriceObjectScaleFactor = gMessageStringTable.getString("PriceObjectScaleFactor"); |
2869 | _PREHASH_DirPicksQuery = gMessageStringTable.getString("DirPicksQuery"); | ||
2870 | _PREHASH_OpenEnrollment = gMessageStringTable.getString("OpenEnrollment"); | 2618 | _PREHASH_OpenEnrollment = gMessageStringTable.getString("OpenEnrollment"); |
2871 | _PREHASH_GroupData = gMessageStringTable.getString("GroupData"); | 2619 | _PREHASH_GroupData = gMessageStringTable.getString("GroupData"); |
2872 | _PREHASH_RequestGodlikePowers = gMessageStringTable.getString("RequestGodlikePowers"); | 2620 | _PREHASH_RequestGodlikePowers = gMessageStringTable.getString("RequestGodlikePowers"); |
@@ -2877,7 +2625,6 @@ void init_prehash_data() | |||
2877 | _PREHASH_FirstDetachAll = gMessageStringTable.getString("FirstDetachAll"); | 2625 | _PREHASH_FirstDetachAll = gMessageStringTable.getString("FirstDetachAll"); |
2878 | _PREHASH_EstateID = gMessageStringTable.getString("EstateID"); | 2626 | _PREHASH_EstateID = gMessageStringTable.getString("EstateID"); |
2879 | _PREHASH_ImprovedInstantMessage = gMessageStringTable.getString("ImprovedInstantMessage"); | 2627 | _PREHASH_ImprovedInstantMessage = gMessageStringTable.getString("ImprovedInstantMessage"); |
2880 | _PREHASH_AgentQuit = gMessageStringTable.getString("AgentQuit"); | ||
2881 | _PREHASH_CheckParcelSales = gMessageStringTable.getString("CheckParcelSales"); | 2628 | _PREHASH_CheckParcelSales = gMessageStringTable.getString("CheckParcelSales"); |
2882 | _PREHASH_ParcelSales = gMessageStringTable.getString("ParcelSales"); | 2629 | _PREHASH_ParcelSales = gMessageStringTable.getString("ParcelSales"); |
2883 | _PREHASH_CurrentInterval = gMessageStringTable.getString("CurrentInterval"); | 2630 | _PREHASH_CurrentInterval = gMessageStringTable.getString("CurrentInterval"); |
@@ -2894,12 +2641,8 @@ void init_prehash_data() | |||
2894 | _PREHASH_SystemKickUser = gMessageStringTable.getString("SystemKickUser"); | 2641 | _PREHASH_SystemKickUser = gMessageStringTable.getString("SystemKickUser"); |
2895 | _PREHASH_TransactionTime = gMessageStringTable.getString("TransactionTime"); | 2642 | _PREHASH_TransactionTime = gMessageStringTable.getString("TransactionTime"); |
2896 | _PREHASH_TimeToLive = gMessageStringTable.getString("TimeToLive"); | 2643 | _PREHASH_TimeToLive = gMessageStringTable.getString("TimeToLive"); |
2897 | _PREHASH_StartParcelRemove = gMessageStringTable.getString("StartParcelRemove"); | ||
2898 | _PREHASH_BulkParcelRemove = gMessageStringTable.getString("BulkParcelRemove"); | ||
2899 | _PREHASH_OldAgentID = gMessageStringTable.getString("OldAgentID"); | 2644 | _PREHASH_OldAgentID = gMessageStringTable.getString("OldAgentID"); |
2900 | _PREHASH_BonusEstimate = gMessageStringTable.getString("BonusEstimate"); | ||
2901 | _PREHASH_MusicURL = gMessageStringTable.getString("MusicURL"); | 2645 | _PREHASH_MusicURL = gMessageStringTable.getString("MusicURL"); |
2902 | _PREHASH_CompleteLure = gMessageStringTable.getString("CompleteLure"); | ||
2903 | _PREHASH_ParcelPrimBonus = gMessageStringTable.getString("ParcelPrimBonus"); | 2646 | _PREHASH_ParcelPrimBonus = gMessageStringTable.getString("ParcelPrimBonus"); |
2904 | _PREHASH_EjectUser = gMessageStringTable.getString("EjectUser"); | 2647 | _PREHASH_EjectUser = gMessageStringTable.getString("EjectUser"); |
2905 | _PREHASH_CoarseLocationUpdate = gMessageStringTable.getString("CoarseLocationUpdate"); | 2648 | _PREHASH_CoarseLocationUpdate = gMessageStringTable.getString("CoarseLocationUpdate"); |
@@ -2932,10 +2675,6 @@ void init_prehash_data() | |||
2932 | _PREHASH_EstateOwnerID = gMessageStringTable.getString("EstateOwnerID"); | 2675 | _PREHASH_EstateOwnerID = gMessageStringTable.getString("EstateOwnerID"); |
2933 | _PREHASH_LogoutRequest = gMessageStringTable.getString("LogoutRequest"); | 2676 | _PREHASH_LogoutRequest = gMessageStringTable.getString("LogoutRequest"); |
2934 | _PREHASH_AssetUploadRequest = gMessageStringTable.getString("AssetUploadRequest"); | 2677 | _PREHASH_AssetUploadRequest = gMessageStringTable.getString("AssetUploadRequest"); |
2935 | _PREHASH_ReputationIndividualRequest = gMessageStringTable.getString("ReputationIndividualRequest"); | ||
2936 | _PREHASH_MajorVersion = gMessageStringTable.getString("MajorVersion"); | ||
2937 | _PREHASH_MinorVersion = gMessageStringTable.getString("MinorVersion"); | ||
2938 | _PREHASH_SimulatorAssign = gMessageStringTable.getString("SimulatorAssign"); | ||
2939 | _PREHASH_TransactionType = gMessageStringTable.getString("TransactionType"); | 2678 | _PREHASH_TransactionType = gMessageStringTable.getString("TransactionType"); |
2940 | _PREHASH_AvatarPropertiesUpdate = gMessageStringTable.getString("AvatarPropertiesUpdate"); | 2679 | _PREHASH_AvatarPropertiesUpdate = gMessageStringTable.getString("AvatarPropertiesUpdate"); |
2941 | _PREHASH_ParcelPropertiesUpdate = gMessageStringTable.getString("ParcelPropertiesUpdate"); | 2680 | _PREHASH_ParcelPropertiesUpdate = gMessageStringTable.getString("ParcelPropertiesUpdate"); |
@@ -2944,7 +2683,6 @@ void init_prehash_data() | |||
2944 | _PREHASH_DeRezAck = gMessageStringTable.getString("DeRezAck"); | 2683 | _PREHASH_DeRezAck = gMessageStringTable.getString("DeRezAck"); |
2945 | _PREHASH_TakeControls = gMessageStringTable.getString("TakeControls"); | 2684 | _PREHASH_TakeControls = gMessageStringTable.getString("TakeControls"); |
2946 | _PREHASH_DirLandReply = gMessageStringTable.getString("DirLandReply"); | 2685 | _PREHASH_DirLandReply = gMessageStringTable.getString("DirLandReply"); |
2947 | _PREHASH_SpaceLocationTeleportReply = gMessageStringTable.getString("SpaceLocationTeleportReply"); | ||
2948 | _PREHASH_MuteType = gMessageStringTable.getString("MuteType"); | 2686 | _PREHASH_MuteType = gMessageStringTable.getString("MuteType"); |
2949 | _PREHASH_IMViaEMail = gMessageStringTable.getString("IMViaEMail"); | 2687 | _PREHASH_IMViaEMail = gMessageStringTable.getString("IMViaEMail"); |
2950 | _PREHASH_RentPrice = gMessageStringTable.getString("RentPrice"); | 2688 | _PREHASH_RentPrice = gMessageStringTable.getString("RentPrice"); |
diff --git a/linden/indra/llmessage/message_prehash.h b/linden/indra/llmessage/message_prehash.h index 06a8a9c..b75edca 100644 --- a/linden/indra/llmessage/message_prehash.h +++ b/linden/indra/llmessage/message_prehash.h | |||
@@ -30,7 +30,7 @@ | |||
30 | #define LL_MESSAGE_PREHASH_H | 30 | #define LL_MESSAGE_PREHASH_H |
31 | 31 | ||
32 | /** | 32 | /** |
33 | * Generated from message template version number 1.053 | 33 | * Generated from message template version number 2.000 |
34 | */ | 34 | */ |
35 | 35 | ||
36 | 36 | ||
@@ -59,7 +59,6 @@ extern char * _PREHASH_ScriptAnswerYes; | |||
59 | extern char * _PREHASH_PartnerID; | 59 | extern char * _PREHASH_PartnerID; |
60 | extern char * _PREHASH_DirLandQuery; | 60 | extern char * _PREHASH_DirLandQuery; |
61 | extern char * _PREHASH_TeleportStart; | 61 | extern char * _PREHASH_TeleportStart; |
62 | extern char * _PREHASH_LogMessages; | ||
63 | extern char * _PREHASH_AboutText; | 62 | extern char * _PREHASH_AboutText; |
64 | extern char * _PREHASH_VisualParam; | 63 | extern char * _PREHASH_VisualParam; |
65 | extern char * _PREHASH_GroupPrims; | 64 | extern char * _PREHASH_GroupPrims; |
@@ -67,10 +66,8 @@ extern char * _PREHASH_SelectedPrims; | |||
67 | extern char * _PREHASH_ID; | 66 | extern char * _PREHASH_ID; |
68 | extern char * _PREHASH_UUIDNameRequest; | 67 | extern char * _PREHASH_UUIDNameRequest; |
69 | extern char * _PREHASH_UUIDGroupNameRequest; | 68 | extern char * _PREHASH_UUIDGroupNameRequest; |
70 | extern char * _PREHASH_MoneyTransactionsRequest; | ||
71 | extern char * _PREHASH_GroupAccountTransactionsRequest; | 69 | extern char * _PREHASH_GroupAccountTransactionsRequest; |
72 | extern char * _PREHASH_MapNameRequest; | 70 | extern char * _PREHASH_MapNameRequest; |
73 | extern char * _PREHASH_MailTaskSimRequest; | ||
74 | extern char * _PREHASH_UpdateSimulator; | 71 | extern char * _PREHASH_UpdateSimulator; |
75 | extern char * _PREHASH_BillableFactor; | 72 | extern char * _PREHASH_BillableFactor; |
76 | extern char * _PREHASH_ObjectBonusFactor; | 73 | extern char * _PREHASH_ObjectBonusFactor; |
@@ -80,7 +77,6 @@ extern char * _PREHASH_ConfirmEnableSimulator; | |||
80 | extern char * _PREHASH_LayerType; | 77 | extern char * _PREHASH_LayerType; |
81 | extern char * _PREHASH_OwnerRole; | 78 | extern char * _PREHASH_OwnerRole; |
82 | extern char * _PREHASH_ParcelOverlay; | 79 | extern char * _PREHASH_ParcelOverlay; |
83 | extern char * _PREHASH_AdjustBalance; | ||
84 | extern char * _PREHASH_GroupOwned; | 80 | extern char * _PREHASH_GroupOwned; |
85 | extern char * _PREHASH_IP; | 81 | extern char * _PREHASH_IP; |
86 | extern char * _PREHASH_ChatFromViewer; | 82 | extern char * _PREHASH_ChatFromViewer; |
@@ -115,8 +111,8 @@ extern char * _PREHASH_SensedData; | |||
115 | extern char * _PREHASH_UpdateBlock; | 111 | extern char * _PREHASH_UpdateBlock; |
116 | extern char * _PREHASH_ClassifiedGodDelete; | 112 | extern char * _PREHASH_ClassifiedGodDelete; |
117 | extern char * _PREHASH_ObjectGrabUpdate; | 113 | extern char * _PREHASH_ObjectGrabUpdate; |
118 | extern char * _PREHASH_TaxDate; | ||
119 | extern char * _PREHASH_LocationPos; | 114 | extern char * _PREHASH_LocationPos; |
115 | extern char * _PREHASH_TaxDate; | ||
120 | extern char * _PREHASH_StartDateTime; | 116 | extern char * _PREHASH_StartDateTime; |
121 | extern char * _PREHASH_ObjectUpdateCached; | 117 | extern char * _PREHASH_ObjectUpdateCached; |
122 | extern char * _PREHASH_Packets; | 118 | extern char * _PREHASH_Packets; |
@@ -148,14 +144,11 @@ extern char * _PREHASH_AABBMin; | |||
148 | extern char * _PREHASH_ClassifiedFlags; | 144 | extern char * _PREHASH_ClassifiedFlags; |
149 | extern char * _PREHASH_ControlFlags; | 145 | extern char * _PREHASH_ControlFlags; |
150 | extern char * _PREHASH_TeleportRequest; | 146 | extern char * _PREHASH_TeleportRequest; |
151 | extern char * _PREHASH_SpaceLocationTeleportRequest; | ||
152 | extern char * _PREHASH_LeaderBoardRequest; | ||
153 | extern char * _PREHASH_ScriptTeleportRequest; | 147 | extern char * _PREHASH_ScriptTeleportRequest; |
148 | extern char * _PREHASH_EstateCovenantRequest; | ||
154 | extern char * _PREHASH_DateUTC; | 149 | extern char * _PREHASH_DateUTC; |
155 | extern char * _PREHASH_TaskIDs; | 150 | extern char * _PREHASH_TaskIDs; |
156 | extern char * _PREHASH_EstateCovenantRequest; | ||
157 | extern char * _PREHASH_RequestResult; | 151 | extern char * _PREHASH_RequestResult; |
158 | extern char * _PREHASH_ReputationAgentAssign; | ||
159 | extern char * _PREHASH_CanAcceptAgents; | 152 | extern char * _PREHASH_CanAcceptAgents; |
160 | extern char * _PREHASH_ObjectSaleInfo; | 153 | extern char * _PREHASH_ObjectSaleInfo; |
161 | extern char * _PREHASH_KillChildAgents; | 154 | extern char * _PREHASH_KillChildAgents; |
@@ -167,7 +160,6 @@ extern char * _PREHASH_InfoBlock; | |||
167 | extern char * _PREHASH_OwnershipCost; | 160 | extern char * _PREHASH_OwnershipCost; |
168 | extern char * _PREHASH_AvatarNotesUpdate; | 161 | extern char * _PREHASH_AvatarNotesUpdate; |
169 | extern char * _PREHASH_PID; | 162 | extern char * _PREHASH_PID; |
170 | extern char * _PREHASH_TimeString; | ||
171 | extern char * _PREHASH_DirPopularReply; | 163 | extern char * _PREHASH_DirPopularReply; |
172 | extern char * _PREHASH_TerrainHeightRange00; | 164 | extern char * _PREHASH_TerrainHeightRange00; |
173 | extern char * _PREHASH_SimData; | 165 | extern char * _PREHASH_SimData; |
@@ -193,7 +185,6 @@ extern char * _PREHASH_Objects; | |||
193 | extern char * _PREHASH_URL; | 185 | extern char * _PREHASH_URL; |
194 | extern char * _PREHASH_CreationDate; | 186 | extern char * _PREHASH_CreationDate; |
195 | extern char * _PREHASH_JointPivot; | 187 | extern char * _PREHASH_JointPivot; |
196 | extern char * _PREHASH_RateeID; | ||
197 | extern char * _PREHASH_FPS; | 188 | extern char * _PREHASH_FPS; |
198 | extern char * _PREHASH_HasTelehub; | 189 | extern char * _PREHASH_HasTelehub; |
199 | extern char * _PREHASH_PathEnd; | 190 | extern char * _PREHASH_PathEnd; |
@@ -218,7 +209,6 @@ extern char * _PREHASH_GroupNoticesListReply; | |||
218 | extern char * _PREHASH_ParcelAccessListReply; | 209 | extern char * _PREHASH_ParcelAccessListReply; |
219 | extern char * _PREHASH_RpcChannelReply; | 210 | extern char * _PREHASH_RpcChannelReply; |
220 | extern char * _PREHASH_RegionPresenceResponse; | 211 | extern char * _PREHASH_RegionPresenceResponse; |
221 | extern char * _PREHASH_AgentPresenceResponse; | ||
222 | extern char * _PREHASH_CharterMember; | 212 | extern char * _PREHASH_CharterMember; |
223 | extern char * _PREHASH_EdgeData; | 213 | extern char * _PREHASH_EdgeData; |
224 | extern char * _PREHASH_NameData; | 214 | extern char * _PREHASH_NameData; |
@@ -232,14 +222,12 @@ extern char * _PREHASH_Mag; | |||
232 | extern char * _PREHASH_ParcelPropertiesRequestByID; | 222 | extern char * _PREHASH_ParcelPropertiesRequestByID; |
233 | extern char * _PREHASH_ObjectLink; | 223 | extern char * _PREHASH_ObjectLink; |
234 | extern char * _PREHASH_RpcScriptReplyInbound; | 224 | extern char * _PREHASH_RpcScriptReplyInbound; |
235 | extern char * _PREHASH_BoardData; | ||
236 | extern char * _PREHASH_RezData; | 225 | extern char * _PREHASH_RezData; |
237 | extern char * _PREHASH_RemoveInventoryObjects; | 226 | extern char * _PREHASH_RemoveInventoryObjects; |
238 | extern char * _PREHASH_GroupProposalBallot; | 227 | extern char * _PREHASH_GroupProposalBallot; |
239 | extern char * _PREHASH_RPCServerIP; | 228 | extern char * _PREHASH_RPCServerIP; |
240 | extern char * _PREHASH_Far; | 229 | extern char * _PREHASH_Far; |
241 | extern char * _PREHASH_GodSessionID; | 230 | extern char * _PREHASH_GodSessionID; |
242 | extern char * _PREHASH_ViewerDigest; | ||
243 | extern char * _PREHASH_FLAboutText; | 231 | extern char * _PREHASH_FLAboutText; |
244 | extern char * _PREHASH_RegionHandshakeReply; | 232 | extern char * _PREHASH_RegionHandshakeReply; |
245 | extern char * _PREHASH_GroupActiveProposalItemReply; | 233 | extern char * _PREHASH_GroupActiveProposalItemReply; |
@@ -251,7 +239,6 @@ extern char * _PREHASH_Set; | |||
251 | extern char * _PREHASH_NewName; | 239 | extern char * _PREHASH_NewName; |
252 | extern char * _PREHASH_Key; | 240 | extern char * _PREHASH_Key; |
253 | extern char * _PREHASH_AgentID; | 241 | extern char * _PREHASH_AgentID; |
254 | extern char * _PREHASH_OnlineStatusRequest; | ||
255 | extern char * _PREHASH_EventNotificationRemoveRequest; | 242 | extern char * _PREHASH_EventNotificationRemoveRequest; |
256 | extern char * _PREHASH_NewFolderID; | 243 | extern char * _PREHASH_NewFolderID; |
257 | extern char * _PREHASH_Arc; | 244 | extern char * _PREHASH_Arc; |
@@ -263,7 +250,6 @@ extern char * _PREHASH_Top; | |||
263 | extern char * _PREHASH_MiscStats; | 250 | extern char * _PREHASH_MiscStats; |
264 | extern char * _PREHASH_ImageID; | 251 | extern char * _PREHASH_ImageID; |
265 | extern char * _PREHASH_DataPacket; | 252 | extern char * _PREHASH_DataPacket; |
266 | extern char * _PREHASH_ObjectDehinge; | ||
267 | extern char * _PREHASH_You; | 253 | extern char * _PREHASH_You; |
268 | extern char * _PREHASH_ScriptControlChange; | 254 | extern char * _PREHASH_ScriptControlChange; |
269 | extern char * _PREHASH_LoadURL; | 255 | extern char * _PREHASH_LoadURL; |
@@ -280,9 +266,9 @@ extern char * _PREHASH_Contribution; | |||
280 | extern char * _PREHASH_SetGroupContribution; | 266 | extern char * _PREHASH_SetGroupContribution; |
281 | extern char * _PREHASH_Offline; | 267 | extern char * _PREHASH_Offline; |
282 | extern char * _PREHASH_AgentIsNowWearing; | 268 | extern char * _PREHASH_AgentIsNowWearing; |
283 | extern char * _PREHASH_SecPerDay; | ||
284 | extern char * _PREHASH_Members; | 269 | extern char * _PREHASH_Members; |
285 | extern char * _PREHASH_FailedResends; | 270 | extern char * _PREHASH_FailedResends; |
271 | extern char * _PREHASH_SecPerDay; | ||
286 | extern char * _PREHASH_CameraCenter; | 272 | extern char * _PREHASH_CameraCenter; |
287 | extern char * _PREHASH_CameraLeftAxis; | 273 | extern char * _PREHASH_CameraLeftAxis; |
288 | extern char * _PREHASH_ExBlock; | 274 | extern char * _PREHASH_ExBlock; |
@@ -290,7 +276,6 @@ extern char * _PREHASH_Channel; | |||
290 | extern char * _PREHASH_NetTest; | 276 | extern char * _PREHASH_NetTest; |
291 | extern char * _PREHASH_DiscardLevel; | 277 | extern char * _PREHASH_DiscardLevel; |
292 | extern char * _PREHASH_LayerID; | 278 | extern char * _PREHASH_LayerID; |
293 | extern char * _PREHASH_RatorID; | ||
294 | extern char * _PREHASH_GrabOffset; | 279 | extern char * _PREHASH_GrabOffset; |
295 | extern char * _PREHASH_SimPort; | 280 | extern char * _PREHASH_SimPort; |
296 | extern char * _PREHASH_PricePerMeter; | 281 | extern char * _PREHASH_PricePerMeter; |
@@ -310,21 +295,16 @@ extern char * _PREHASH_SitName; | |||
310 | extern char * _PREHASH_RegionsVisited; | 295 | extern char * _PREHASH_RegionsVisited; |
311 | extern char * _PREHASH_DirClassifiedReply; | 296 | extern char * _PREHASH_DirClassifiedReply; |
312 | extern char * _PREHASH_AvatarClassifiedReply; | 297 | extern char * _PREHASH_AvatarClassifiedReply; |
313 | extern char * _PREHASH_ReputationIndividualReply; | ||
314 | extern char * _PREHASH_MediaURL; | 298 | extern char * _PREHASH_MediaURL; |
315 | extern char * _PREHASH_CompleteAgentMovement; | 299 | extern char * _PREHASH_CompleteAgentMovement; |
316 | extern char * _PREHASH_SpaceIP; | ||
317 | extern char * _PREHASH_ClassifiedID; | 300 | extern char * _PREHASH_ClassifiedID; |
318 | extern char * _PREHASH_LocalID; | 301 | extern char * _PREHASH_LocalID; |
302 | extern char * _PREHASH_SpaceIP; | ||
319 | extern char * _PREHASH_RemoveItem; | 303 | extern char * _PREHASH_RemoveItem; |
320 | extern char * _PREHASH_LogFailedMoneyTransaction; | 304 | extern char * _PREHASH_LogFailedMoneyTransaction; |
321 | extern char * _PREHASH_ViewerStartAuction; | 305 | extern char * _PREHASH_ViewerStartAuction; |
322 | extern char * _PREHASH_StartAuction; | 306 | extern char * _PREHASH_StartAuction; |
323 | extern char * _PREHASH_NameValueName; | ||
324 | extern char * _PREHASH_AngVelX; | ||
325 | extern char * _PREHASH_DuplicateFlags; | 307 | extern char * _PREHASH_DuplicateFlags; |
326 | extern char * _PREHASH_AngVelY; | ||
327 | extern char * _PREHASH_AngVelZ; | ||
328 | extern char * _PREHASH_TextColor; | 308 | extern char * _PREHASH_TextColor; |
329 | extern char * _PREHASH_SlaveID; | 309 | extern char * _PREHASH_SlaveID; |
330 | extern char * _PREHASH_Charter; | 310 | extern char * _PREHASH_Charter; |
@@ -335,21 +315,16 @@ extern char * _PREHASH_ParcelAuctions; | |||
335 | extern char * _PREHASH_OwnerIsGroup; | 315 | extern char * _PREHASH_OwnerIsGroup; |
336 | extern char * _PREHASH_NameValuePair; | 316 | extern char * _PREHASH_NameValuePair; |
337 | extern char * _PREHASH_RemoveNameValuePair; | 317 | extern char * _PREHASH_RemoveNameValuePair; |
338 | extern char * _PREHASH_GetNameValuePair; | ||
339 | extern char * _PREHASH_BulkUpdateInventory; | 318 | extern char * _PREHASH_BulkUpdateInventory; |
340 | extern char * _PREHASH_UpdateTaskInventory; | 319 | extern char * _PREHASH_UpdateTaskInventory; |
341 | extern char * _PREHASH_RemoveTaskInventory; | 320 | extern char * _PREHASH_RemoveTaskInventory; |
342 | extern char * _PREHASH_MoveTaskInventory; | 321 | extern char * _PREHASH_MoveTaskInventory; |
343 | extern char * _PREHASH_RequestTaskInventory; | 322 | extern char * _PREHASH_RequestTaskInventory; |
344 | extern char * _PREHASH_ReplyTaskInventory; | 323 | extern char * _PREHASH_ReplyTaskInventory; |
345 | extern char * _PREHASH_DeclineInventory; | ||
346 | extern char * _PREHASH_AggregatePermInventory; | 324 | extern char * _PREHASH_AggregatePermInventory; |
347 | extern char * _PREHASH_SimulatorInfo; | ||
348 | extern char * _PREHASH_MoneyTransactionsReply; | ||
349 | extern char * _PREHASH_GroupAccountTransactionsReply; | 325 | extern char * _PREHASH_GroupAccountTransactionsReply; |
350 | extern char * _PREHASH_MailTaskSimReply; | 326 | extern char * _PREHASH_SimulatorInfo; |
351 | extern char * _PREHASH_WearableData; | 327 | extern char * _PREHASH_WearableData; |
352 | extern char * _PREHASH_StatisticsData; | ||
353 | extern char * _PREHASH_Enabled; | 328 | extern char * _PREHASH_Enabled; |
354 | extern char * _PREHASH_Savings; | 329 | extern char * _PREHASH_Savings; |
355 | extern char * _PREHASH_SimulatorLoad; | 330 | extern char * _PREHASH_SimulatorLoad; |
@@ -361,15 +336,12 @@ extern char * _PREHASH_JoinGroupRequest; | |||
361 | extern char * _PREHASH_LeaveGroupRequest; | 336 | extern char * _PREHASH_LeaveGroupRequest; |
362 | extern char * _PREHASH_InviteGroupRequest; | 337 | extern char * _PREHASH_InviteGroupRequest; |
363 | extern char * _PREHASH_LiveHelpGroupRequest; | 338 | extern char * _PREHASH_LiveHelpGroupRequest; |
364 | extern char * _PREHASH_ServerVersion; | ||
365 | extern char * _PREHASH_PriceParcelClaimFactor; | 339 | extern char * _PREHASH_PriceParcelClaimFactor; |
366 | extern char * _PREHASH_BillableArea; | 340 | extern char * _PREHASH_BillableArea; |
367 | extern char * _PREHASH_ObjectID; | 341 | extern char * _PREHASH_ObjectID; |
368 | extern char * _PREHASH_ObjectFlagUpdate; | 342 | extern char * _PREHASH_ObjectFlagUpdate; |
369 | extern char * _PREHASH_GroupRoleUpdate; | 343 | extern char * _PREHASH_GroupRoleUpdate; |
370 | extern char * _PREHASH_RequestInventoryAsset; | 344 | extern char * _PREHASH_RequestInventoryAsset; |
371 | extern char * _PREHASH_RedoLand; | ||
372 | extern char * _PREHASH_TravelAccess; | ||
373 | extern char * _PREHASH_ChangedGrid; | 345 | extern char * _PREHASH_ChangedGrid; |
374 | extern char * _PREHASH_AgentDropGroup; | 346 | extern char * _PREHASH_AgentDropGroup; |
375 | extern char * _PREHASH_Details; | 347 | extern char * _PREHASH_Details; |
@@ -402,7 +374,6 @@ extern char * _PREHASH_Timestamp; | |||
402 | extern char * _PREHASH_GlobalPos; | 374 | extern char * _PREHASH_GlobalPos; |
403 | extern char * _PREHASH_GrabOffsetInitial; | 375 | extern char * _PREHASH_GrabOffsetInitial; |
404 | extern char * _PREHASH_IsTrial; | 376 | extern char * _PREHASH_IsTrial; |
405 | extern char * _PREHASH_FinalizeLogout; | ||
406 | extern char * _PREHASH_ObjectDuplicateOnRay; | 377 | extern char * _PREHASH_ObjectDuplicateOnRay; |
407 | extern char * _PREHASH_GroupMembershipCount; | 378 | extern char * _PREHASH_GroupMembershipCount; |
408 | extern char * _PREHASH_MethodData; | 379 | extern char * _PREHASH_MethodData; |
@@ -438,32 +409,26 @@ extern char * _PREHASH_TaskData; | |||
438 | extern char * _PREHASH_SimWideMaxPrims; | 409 | extern char * _PREHASH_SimWideMaxPrims; |
439 | extern char * _PREHASH_TotalPrims; | 410 | extern char * _PREHASH_TotalPrims; |
440 | extern char * _PREHASH_ProfileBegin; | 411 | extern char * _PREHASH_ProfileBegin; |
441 | extern char * _PREHASH_MoneyDetailsRequest; | ||
442 | extern char * _PREHASH_Request; | 412 | extern char * _PREHASH_Request; |
443 | extern char * _PREHASH_GroupAccountDetailsRequest; | 413 | extern char * _PREHASH_GroupAccountDetailsRequest; |
444 | extern char * _PREHASH_GroupActiveProposalsRequest; | 414 | extern char * _PREHASH_GroupActiveProposalsRequest; |
445 | extern char * _PREHASH_StringValue; | 415 | extern char * _PREHASH_StringValue; |
446 | extern char * _PREHASH_ClosestSimulator; | ||
447 | extern char * _PREHASH_Version; | 416 | extern char * _PREHASH_Version; |
448 | extern char * _PREHASH_OtherCount; | 417 | extern char * _PREHASH_OtherCount; |
449 | extern char * _PREHASH_MemberCount; | 418 | extern char * _PREHASH_MemberCount; |
450 | extern char * _PREHASH_ChatData; | 419 | extern char * _PREHASH_ChatData; |
451 | extern char * _PREHASH_IsGroupOwned; | 420 | extern char * _PREHASH_IsGroupOwned; |
452 | extern char * _PREHASH_EnergyEfficiency; | 421 | extern char * _PREHASH_EnergyEfficiency; |
453 | extern char * _PREHASH_MaxPlace; | ||
454 | extern char * _PREHASH_PickInfoUpdate; | 422 | extern char * _PREHASH_PickInfoUpdate; |
455 | extern char * _PREHASH_PickDelete; | 423 | extern char * _PREHASH_PickDelete; |
456 | extern char * _PREHASH_ScriptReset; | 424 | extern char * _PREHASH_ScriptReset; |
457 | extern char * _PREHASH_Requester; | 425 | extern char * _PREHASH_Requester; |
458 | extern char * _PREHASH_ForSale; | 426 | extern char * _PREHASH_ForSale; |
459 | extern char * _PREHASH_NearestLandingRegionReply; | 427 | extern char * _PREHASH_NearestLandingRegionReply; |
460 | extern char * _PREHASH_RecordAgentPresence; | ||
461 | extern char * _PREHASH_EraseAgentPresence; | ||
462 | extern char * _PREHASH_ParcelID; | 428 | extern char * _PREHASH_ParcelID; |
463 | extern char * _PREHASH_Godlike; | 429 | extern char * _PREHASH_Godlike; |
464 | extern char * _PREHASH_TotalDebits; | 430 | extern char * _PREHASH_TotalDebits; |
465 | extern char * _PREHASH_Direction; | 431 | extern char * _PREHASH_Direction; |
466 | extern char * _PREHASH_Appearance; | ||
467 | extern char * _PREHASH_HealthData; | 432 | extern char * _PREHASH_HealthData; |
468 | extern char * _PREHASH_LeftAxis; | 433 | extern char * _PREHASH_LeftAxis; |
469 | extern char * _PREHASH_LocationBlock; | 434 | extern char * _PREHASH_LocationBlock; |
@@ -471,41 +436,31 @@ extern char * _PREHASH_ObjectImage; | |||
471 | extern char * _PREHASH_TerrainStartHeight00; | 436 | extern char * _PREHASH_TerrainStartHeight00; |
472 | extern char * _PREHASH_TerrainStartHeight01; | 437 | extern char * _PREHASH_TerrainStartHeight01; |
473 | extern char * _PREHASH_TerrainStartHeight10; | 438 | extern char * _PREHASH_TerrainStartHeight10; |
474 | extern char * _PREHASH_ObjectHinge; | ||
475 | extern char * _PREHASH_TerrainStartHeight11; | 439 | extern char * _PREHASH_TerrainStartHeight11; |
476 | extern char * _PREHASH_MetersPerGrid; | ||
477 | extern char * _PREHASH_WaterHeight; | 440 | extern char * _PREHASH_WaterHeight; |
478 | extern char * _PREHASH_FetchInventoryReply; | 441 | extern char * _PREHASH_FetchInventoryReply; |
479 | extern char * _PREHASH_MoneySummaryReply; | ||
480 | extern char * _PREHASH_GroupAccountSummaryReply; | 442 | extern char * _PREHASH_GroupAccountSummaryReply; |
481 | extern char * _PREHASH_AttachedSound; | 443 | extern char * _PREHASH_AttachedSound; |
482 | extern char * _PREHASH_ParamInUse; | 444 | extern char * _PREHASH_ParamInUse; |
483 | extern char * _PREHASH_GodKickUser; | 445 | extern char * _PREHASH_GodKickUser; |
484 | extern char * _PREHASH_PickName; | 446 | extern char * _PREHASH_PickName; |
485 | extern char * _PREHASH_TaskName; | 447 | extern char * _PREHASH_TaskName; |
486 | extern char * _PREHASH_SubType; | ||
487 | extern char * _PREHASH_ObjectCount; | 448 | extern char * _PREHASH_ObjectCount; |
488 | extern char * _PREHASH_RegionPresenceRequestByHandle; | 449 | extern char * _PREHASH_RegionPresenceRequestByHandle; |
489 | extern char * _PREHASH_RezSingleAttachmentFromInv; | 450 | extern char * _PREHASH_RezSingleAttachmentFromInv; |
490 | extern char * _PREHASH_ChildAgentUpdate; | 451 | extern char * _PREHASH_ChildAgentUpdate; |
491 | extern char * _PREHASH_ToID; | ||
492 | extern char * _PREHASH_ViewerPort; | ||
493 | extern char * _PREHASH_IsOwnerGroup; | 452 | extern char * _PREHASH_IsOwnerGroup; |
494 | extern char * _PREHASH_AgentHeightWidth; | 453 | extern char * _PREHASH_AgentHeightWidth; |
495 | extern char * _PREHASH_VerticalAngle; | 454 | extern char * _PREHASH_VerticalAngle; |
496 | extern char * _PREHASH_WearableType; | 455 | extern char * _PREHASH_WearableType; |
497 | extern char * _PREHASH_AggregatePermNextOwner; | 456 | extern char * _PREHASH_AggregatePermNextOwner; |
498 | extern char * _PREHASH_ShowInList; | 457 | extern char * _PREHASH_ShowInList; |
499 | extern char * _PREHASH_PositionSuggestion; | ||
500 | extern char * _PREHASH_UpdateParcel; | 458 | extern char * _PREHASH_UpdateParcel; |
501 | extern char * _PREHASH_ClearAgentSessions; | ||
502 | extern char * _PREHASH_SetAlwaysRun; | 459 | extern char * _PREHASH_SetAlwaysRun; |
503 | extern char * _PREHASH_NVPair; | 460 | extern char * _PREHASH_NVPair; |
504 | extern char * _PREHASH_SearchType; | 461 | extern char * _PREHASH_SearchType; |
505 | extern char * _PREHASH_ObjectSpinStart; | 462 | extern char * _PREHASH_ObjectSpinStart; |
506 | extern char * _PREHASH_UseEstateSun; | 463 | extern char * _PREHASH_UseEstateSun; |
507 | extern char * _PREHASH_LogoutBlock; | ||
508 | extern char * _PREHASH_RelayLogControl; | ||
509 | extern char * _PREHASH_RegionID; | 464 | extern char * _PREHASH_RegionID; |
510 | extern char * _PREHASH_AbuseRegionID; | 465 | extern char * _PREHASH_AbuseRegionID; |
511 | extern char * _PREHASH_Creator; | 466 | extern char * _PREHASH_Creator; |
@@ -514,14 +469,12 @@ extern char * _PREHASH_DirEventsReply; | |||
514 | extern char * _PREHASH_EventInfoReply; | 469 | extern char * _PREHASH_EventInfoReply; |
515 | extern char * _PREHASH_UserInfoReply; | 470 | extern char * _PREHASH_UserInfoReply; |
516 | extern char * _PREHASH_PathRadiusOffset; | 471 | extern char * _PREHASH_PathRadiusOffset; |
517 | extern char * _PREHASH_SessionInfo; | ||
518 | extern char * _PREHASH_TextureData; | 472 | extern char * _PREHASH_TextureData; |
519 | extern char * _PREHASH_ChatPass; | 473 | extern char * _PREHASH_ChatPass; |
520 | extern char * _PREHASH_TargetID; | 474 | extern char * _PREHASH_TargetID; |
521 | extern char * _PREHASH_DefaultPayPrice; | 475 | extern char * _PREHASH_DefaultPayPrice; |
522 | extern char * _PREHASH_UserLocation; | 476 | extern char * _PREHASH_UserLocation; |
523 | extern char * _PREHASH_MaxPrims; | 477 | extern char * _PREHASH_MaxPrims; |
524 | extern char * _PREHASH_RegionIP; | ||
525 | extern char * _PREHASH_LandmarkID; | 478 | extern char * _PREHASH_LandmarkID; |
526 | extern char * _PREHASH_InitiateDownload; | 479 | extern char * _PREHASH_InitiateDownload; |
527 | extern char * _PREHASH_Name; | 480 | extern char * _PREHASH_Name; |
@@ -529,18 +482,13 @@ extern char * _PREHASH_OtherCleanTime; | |||
529 | extern char * _PREHASH_ParcelSetOtherCleanTime; | 482 | extern char * _PREHASH_ParcelSetOtherCleanTime; |
530 | extern char * _PREHASH_TeleportPriceExponent; | 483 | extern char * _PREHASH_TeleportPriceExponent; |
531 | extern char * _PREHASH_Gain; | 484 | extern char * _PREHASH_Gain; |
532 | extern char * _PREHASH_VelX; | ||
533 | extern char * _PREHASH_PacketAck; | 485 | extern char * _PREHASH_PacketAck; |
534 | extern char * _PREHASH_PathSkew; | 486 | extern char * _PREHASH_PathSkew; |
535 | extern char * _PREHASH_Negative; | ||
536 | extern char * _PREHASH_VelY; | ||
537 | extern char * _PREHASH_SimulatorShutdownRequest; | 487 | extern char * _PREHASH_SimulatorShutdownRequest; |
538 | extern char * _PREHASH_NearestLandingRegionRequest; | 488 | extern char * _PREHASH_NearestLandingRegionRequest; |
539 | extern char * _PREHASH_VelZ; | ||
540 | extern char * _PREHASH_OtherID; | 489 | extern char * _PREHASH_OtherID; |
541 | extern char * _PREHASH_MemberID; | 490 | extern char * _PREHASH_MemberID; |
542 | extern char * _PREHASH_MapLayerRequest; | 491 | extern char * _PREHASH_MapLayerRequest; |
543 | extern char * _PREHASH_PatchVersion; | ||
544 | extern char * _PREHASH_ObjectScale; | 492 | extern char * _PREHASH_ObjectScale; |
545 | extern char * _PREHASH_TargetIP; | 493 | extern char * _PREHASH_TargetIP; |
546 | extern char * _PREHASH_Redo; | 494 | extern char * _PREHASH_Redo; |
@@ -583,27 +531,20 @@ extern char * _PREHASH_Perp; | |||
583 | extern char * _PREHASH_Code; | 531 | extern char * _PREHASH_Code; |
584 | extern char * _PREHASH_InvType; | 532 | extern char * _PREHASH_InvType; |
585 | extern char * _PREHASH_AgentFOV; | 533 | extern char * _PREHASH_AgentFOV; |
586 | extern char * _PREHASH_BulkMoneyTransfer; | ||
587 | extern char * _PREHASH_Audible; | 534 | extern char * _PREHASH_Audible; |
588 | extern char * _PREHASH_AuctionData; | 535 | extern char * _PREHASH_AuctionData; |
589 | extern char * _PREHASH_IDBlock; | 536 | extern char * _PREHASH_IDBlock; |
590 | extern char * _PREHASH_ReputationData; | ||
591 | extern char * _PREHASH_West; | 537 | extern char * _PREHASH_West; |
592 | extern char * _PREHASH_Undo; | 538 | extern char * _PREHASH_Undo; |
593 | extern char * _PREHASH_TotalNumItems; | 539 | extern char * _PREHASH_TotalNumItems; |
594 | extern char * _PREHASH_Info; | 540 | extern char * _PREHASH_Info; |
595 | extern char * _PREHASH_Area; | 541 | extern char * _PREHASH_Area; |
596 | extern char * _PREHASH_Behavior; | ||
597 | extern char * _PREHASH_SimCrashed; | 542 | extern char * _PREHASH_SimCrashed; |
598 | extern char * _PREHASH_Text; | 543 | extern char * _PREHASH_Text; |
599 | extern char * _PREHASH_AgentToNewRegion; | ||
600 | extern char * _PREHASH_PriceGroupCreate; | 544 | extern char * _PREHASH_PriceGroupCreate; |
601 | extern char * _PREHASH_ObjectShape; | 545 | extern char * _PREHASH_ObjectShape; |
602 | extern char * _PREHASH_GroupRoleDataReply; | 546 | extern char * _PREHASH_GroupRoleDataReply; |
603 | extern char * _PREHASH_PosX; | ||
604 | extern char * _PREHASH_PosY; | ||
605 | extern char * _PREHASH_MuteCRC; | 547 | extern char * _PREHASH_MuteCRC; |
606 | extern char * _PREHASH_PosZ; | ||
607 | extern char * _PREHASH_Size; | 548 | extern char * _PREHASH_Size; |
608 | extern char * _PREHASH_FromAddress; | 549 | extern char * _PREHASH_FromAddress; |
609 | extern char * _PREHASH_Body; | 550 | extern char * _PREHASH_Body; |
@@ -621,16 +562,14 @@ extern char * _PREHASH_Stat; | |||
621 | extern char * _PREHASH_SoundID; | 562 | extern char * _PREHASH_SoundID; |
622 | extern char * _PREHASH_Item; | 563 | extern char * _PREHASH_Item; |
623 | extern char * _PREHASH_User; | 564 | extern char * _PREHASH_User; |
624 | extern char * _PREHASH_RemoteInfos; | ||
625 | extern char * _PREHASH_Prey; | 565 | extern char * _PREHASH_Prey; |
626 | extern char * _PREHASH_UsecSinceStart; | ||
627 | extern char * _PREHASH_RayStart; | 566 | extern char * _PREHASH_RayStart; |
567 | extern char * _PREHASH_UsecSinceStart; | ||
628 | extern char * _PREHASH_ParcelData; | 568 | extern char * _PREHASH_ParcelData; |
629 | extern char * _PREHASH_CameraUpAxis; | 569 | extern char * _PREHASH_CameraUpAxis; |
630 | extern char * _PREHASH_ScriptDialog; | 570 | extern char * _PREHASH_ScriptDialog; |
631 | extern char * _PREHASH_MasterParcelData; | 571 | extern char * _PREHASH_MasterParcelData; |
632 | extern char * _PREHASH_Invalid; | 572 | extern char * _PREHASH_Invalid; |
633 | extern char * _PREHASH_MinPlace; | ||
634 | extern char * _PREHASH_ProfileCurve; | 573 | extern char * _PREHASH_ProfileCurve; |
635 | extern char * _PREHASH_ParcelAccessListUpdate; | 574 | extern char * _PREHASH_ParcelAccessListUpdate; |
636 | extern char * _PREHASH_MuteListUpdate; | 575 | extern char * _PREHASH_MuteListUpdate; |
@@ -649,14 +588,12 @@ extern char * _PREHASH_DeRezObject; | |||
649 | extern char * _PREHASH_IsTemporary; | 588 | extern char * _PREHASH_IsTemporary; |
650 | extern char * _PREHASH_InsigniaID; | 589 | extern char * _PREHASH_InsigniaID; |
651 | extern char * _PREHASH_CheckFlags; | 590 | extern char * _PREHASH_CheckFlags; |
652 | extern char * _PREHASH_TransferPriority; | ||
653 | extern char * _PREHASH_EventID; | 591 | extern char * _PREHASH_EventID; |
654 | extern char * _PREHASH_Selected; | 592 | extern char * _PREHASH_Selected; |
655 | extern char * _PREHASH_FromAgentId; | 593 | extern char * _PREHASH_FromAgentId; |
656 | extern char * _PREHASH_Type; | 594 | extern char * _PREHASH_Type; |
657 | extern char * _PREHASH_ChatType; | 595 | extern char * _PREHASH_ChatType; |
658 | extern char * _PREHASH_ReportData; | 596 | extern char * _PREHASH_ReportData; |
659 | extern char * _PREHASH_LeaderBoardData; | ||
660 | extern char * _PREHASH_RequestBlock; | 597 | extern char * _PREHASH_RequestBlock; |
661 | extern char * _PREHASH_GrantData; | 598 | extern char * _PREHASH_GrantData; |
662 | extern char * _PREHASH_DetachAttachmentIntoInv; | 599 | extern char * _PREHASH_DetachAttachmentIntoInv; |
@@ -672,12 +609,9 @@ extern char * _PREHASH_OnlineNotification; | |||
672 | extern char * _PREHASH_OfflineNotification; | 609 | extern char * _PREHASH_OfflineNotification; |
673 | extern char * _PREHASH_SendPostcard; | 610 | extern char * _PREHASH_SendPostcard; |
674 | extern char * _PREHASH_RequestFlags; | 611 | extern char * _PREHASH_RequestFlags; |
675 | extern char * _PREHASH_MoneyHistoryRequest; | ||
676 | extern char * _PREHASH_MoneySummaryRequest; | ||
677 | extern char * _PREHASH_GroupAccountSummaryRequest; | 612 | extern char * _PREHASH_GroupAccountSummaryRequest; |
678 | extern char * _PREHASH_GroupVoteHistoryRequest; | 613 | extern char * _PREHASH_GroupVoteHistoryRequest; |
679 | extern char * _PREHASH_ParamValue; | 614 | extern char * _PREHASH_ParamValue; |
680 | extern char * _PREHASH_Checksum; | ||
681 | extern char * _PREHASH_MaxAgents; | 615 | extern char * _PREHASH_MaxAgents; |
682 | extern char * _PREHASH_CreateNewOutfitAttachments; | 616 | extern char * _PREHASH_CreateNewOutfitAttachments; |
683 | extern char * _PREHASH_RegionHandle; | 617 | extern char * _PREHASH_RegionHandle; |
@@ -687,12 +621,10 @@ extern char * _PREHASH_AvatarInterestsUpdate; | |||
687 | extern char * _PREHASH_GroupNoticeID; | 621 | extern char * _PREHASH_GroupNoticeID; |
688 | extern char * _PREHASH_ParcelName; | 622 | extern char * _PREHASH_ParcelName; |
689 | extern char * _PREHASH_PriceObjectRent; | 623 | extern char * _PREHASH_PriceObjectRent; |
690 | extern char * _PREHASH_ConnectAgentToUserserver; | ||
691 | extern char * _PREHASH_ConnectToUserserver; | ||
692 | extern char * _PREHASH_OfferCallingCard; | 624 | extern char * _PREHASH_OfferCallingCard; |
693 | extern char * _PREHASH_AgentAccess; | ||
694 | extern char * _PREHASH_AcceptCallingCard; | 625 | extern char * _PREHASH_AcceptCallingCard; |
695 | extern char * _PREHASH_DeclineCallingCard; | 626 | extern char * _PREHASH_DeclineCallingCard; |
627 | extern char * _PREHASH_AgentAccess; | ||
696 | extern char * _PREHASH_DataHomeLocationReply; | 628 | extern char * _PREHASH_DataHomeLocationReply; |
697 | extern char * _PREHASH_EventLocationReply; | 629 | extern char * _PREHASH_EventLocationReply; |
698 | extern char * _PREHASH_TerseDateID; | 630 | extern char * _PREHASH_TerseDateID; |
@@ -710,8 +642,8 @@ extern char * _PREHASH_Invoice; | |||
710 | extern char * _PREHASH_IntervalDays; | 642 | extern char * _PREHASH_IntervalDays; |
711 | extern char * _PREHASH_PathScaleX; | 643 | extern char * _PREHASH_PathScaleX; |
712 | extern char * _PREHASH_FromTaskID; | 644 | extern char * _PREHASH_FromTaskID; |
713 | extern char * _PREHASH_TimeInfo; | ||
714 | extern char * _PREHASH_PathScaleY; | 645 | extern char * _PREHASH_PathScaleY; |
646 | extern char * _PREHASH_TimeInfo; | ||
715 | extern char * _PREHASH_PublicCount; | 647 | extern char * _PREHASH_PublicCount; |
716 | extern char * _PREHASH_ParcelJoin; | 648 | extern char * _PREHASH_ParcelJoin; |
717 | extern char * _PREHASH_GroupRolesCount; | 649 | extern char * _PREHASH_GroupRolesCount; |
@@ -736,7 +668,6 @@ extern char * _PREHASH_NearestLandingRegionUpdated; | |||
736 | extern char * _PREHASH_PassToAgent; | 668 | extern char * _PREHASH_PassToAgent; |
737 | extern char * _PREHASH_PreyAgent; | 669 | extern char * _PREHASH_PreyAgent; |
738 | extern char * _PREHASH_SimStats; | 670 | extern char * _PREHASH_SimStats; |
739 | extern char * _PREHASH_Options; | ||
740 | extern char * _PREHASH_LogoutReply; | 671 | extern char * _PREHASH_LogoutReply; |
741 | extern char * _PREHASH_FeatureDisabled; | 672 | extern char * _PREHASH_FeatureDisabled; |
742 | extern char * _PREHASH_ObjectLocalID; | 673 | extern char * _PREHASH_ObjectLocalID; |
@@ -747,10 +678,8 @@ extern char * _PREHASH_Destination; | |||
747 | extern char * _PREHASH_MasterID; | 678 | extern char * _PREHASH_MasterID; |
748 | extern char * _PREHASH_TransferData; | 679 | extern char * _PREHASH_TransferData; |
749 | extern char * _PREHASH_WantToMask; | 680 | extern char * _PREHASH_WantToMask; |
750 | extern char * _PREHASH_AvatarData; | ||
751 | extern char * _PREHASH_ParcelSelectObjects; | 681 | extern char * _PREHASH_ParcelSelectObjects; |
752 | extern char * _PREHASH_ExtraParams; | 682 | extern char * _PREHASH_ExtraParams; |
753 | extern char * _PREHASH_LogLogin; | ||
754 | extern char * _PREHASH_CreatorID; | 683 | extern char * _PREHASH_CreatorID; |
755 | extern char * _PREHASH_Summary; | 684 | extern char * _PREHASH_Summary; |
756 | extern char * _PREHASH_BuyObjectInventory; | 685 | extern char * _PREHASH_BuyObjectInventory; |
@@ -791,8 +720,8 @@ extern char * _PREHASH_ButtonLabel; | |||
791 | extern char * _PREHASH_GranterID; | 720 | extern char * _PREHASH_GranterID; |
792 | extern char * _PREHASH_WantToText; | 721 | extern char * _PREHASH_WantToText; |
793 | extern char * _PREHASH_ReportType; | 722 | extern char * _PREHASH_ReportType; |
794 | extern char * _PREHASH_DataBlock; | ||
795 | extern char * _PREHASH_SimulatorReady; | 723 | extern char * _PREHASH_SimulatorReady; |
724 | extern char * _PREHASH_DataBlock; | ||
796 | extern char * _PREHASH_AnimationSourceList; | 725 | extern char * _PREHASH_AnimationSourceList; |
797 | extern char * _PREHASH_SubscribeLoad; | 726 | extern char * _PREHASH_SubscribeLoad; |
798 | extern char * _PREHASH_UnsubscribeLoad; | 727 | extern char * _PREHASH_UnsubscribeLoad; |
@@ -819,9 +748,8 @@ extern char * _PREHASH_Header; | |||
819 | extern char * _PREHASH_GestureFlags; | 748 | extern char * _PREHASH_GestureFlags; |
820 | extern char * _PREHASH_XferID; | 749 | extern char * _PREHASH_XferID; |
821 | extern char * _PREHASH_StatValue; | 750 | extern char * _PREHASH_StatValue; |
822 | extern char * _PREHASH_PickID; | ||
823 | extern char * _PREHASH_TaskID; | 751 | extern char * _PREHASH_TaskID; |
824 | extern char * _PREHASH_GridsPerEdge; | 752 | extern char * _PREHASH_PickID; |
825 | extern char * _PREHASH_RayEnd; | 753 | extern char * _PREHASH_RayEnd; |
826 | extern char * _PREHASH_Throttles; | 754 | extern char * _PREHASH_Throttles; |
827 | extern char * _PREHASH_RebakeAvatarTextures; | 755 | extern char * _PREHASH_RebakeAvatarTextures; |
@@ -834,30 +762,24 @@ extern char * _PREHASH_Access; | |||
834 | extern char * _PREHASH_TitleRoleID; | 762 | extern char * _PREHASH_TitleRoleID; |
835 | extern char * _PREHASH_SquareMetersCredit; | 763 | extern char * _PREHASH_SquareMetersCredit; |
836 | extern char * _PREHASH_Filename; | 764 | extern char * _PREHASH_Filename; |
837 | extern char * _PREHASH_SecuredTemplateChecksumRequest; | ||
838 | extern char * _PREHASH_TemplateChecksumRequest; | ||
839 | extern char * _PREHASH_AgentPresenceRequest; | ||
840 | extern char * _PREHASH_ClassifiedInfoRequest; | 765 | extern char * _PREHASH_ClassifiedInfoRequest; |
841 | extern char * _PREHASH_ParcelInfoRequest; | 766 | extern char * _PREHASH_ParcelInfoRequest; |
842 | extern char * _PREHASH_ParcelObjectOwnersRequest; | 767 | extern char * _PREHASH_ParcelObjectOwnersRequest; |
843 | extern char * _PREHASH_TeleportLandmarkRequest; | 768 | extern char * _PREHASH_TeleportLandmarkRequest; |
844 | extern char * _PREHASH_EventInfoRequest; | 769 | extern char * _PREHASH_EventInfoRequest; |
845 | extern char * _PREHASH_ChatFromSimulator; | ||
846 | extern char * _PREHASH_PickInfoRequest; | ||
847 | extern char * _PREHASH_MoneyBalanceRequest; | 770 | extern char * _PREHASH_MoneyBalanceRequest; |
848 | extern char * _PREHASH_GroupMembersRequest; | 771 | extern char * _PREHASH_GroupMembersRequest; |
849 | extern char * _PREHASH_GroupRoleMembersRequest; | 772 | extern char * _PREHASH_GroupRoleMembersRequest; |
773 | extern char * _PREHASH_ChatFromSimulator; | ||
850 | extern char * _PREHASH_OldFolderID; | 774 | extern char * _PREHASH_OldFolderID; |
851 | extern char * _PREHASH_UserInfoRequest; | 775 | extern char * _PREHASH_UserInfoRequest; |
852 | extern char * _PREHASH_TextureID; | 776 | extern char * _PREHASH_TextureID; |
853 | extern char * _PREHASH_ProfileURL; | 777 | extern char * _PREHASH_ProfileURL; |
854 | extern char * _PREHASH_Handle; | 778 | extern char * _PREHASH_Handle; |
855 | extern char * _PREHASH_StartParcelRenameAck; | ||
856 | extern char * _PREHASH_ButtonIndex; | 779 | extern char * _PREHASH_ButtonIndex; |
857 | extern char * _PREHASH_GetScriptRunning; | 780 | extern char * _PREHASH_GetScriptRunning; |
858 | extern char * _PREHASH_SetScriptRunning; | 781 | extern char * _PREHASH_SetScriptRunning; |
859 | extern char * _PREHASH_Health; | 782 | extern char * _PREHASH_Health; |
860 | extern char * _PREHASH_FileID; | ||
861 | extern char * _PREHASH_CircuitInfo; | 783 | extern char * _PREHASH_CircuitInfo; |
862 | extern char * _PREHASH_ObjectBuy; | 784 | extern char * _PREHASH_ObjectBuy; |
863 | extern char * _PREHASH_ProfileEnd; | 785 | extern char * _PREHASH_ProfileEnd; |
@@ -882,7 +804,6 @@ extern char * _PREHASH_PingID; | |||
882 | extern char * _PREHASH_Change; | 804 | extern char * _PREHASH_Change; |
883 | extern char * _PREHASH_Height; | 805 | extern char * _PREHASH_Height; |
884 | extern char * _PREHASH_Region; | 806 | extern char * _PREHASH_Region; |
885 | extern char * _PREHASH_MoneyHistoryReply; | ||
886 | extern char * _PREHASH_TelehubInfo; | 807 | extern char * _PREHASH_TelehubInfo; |
887 | extern char * _PREHASH_StateSave; | 808 | extern char * _PREHASH_StateSave; |
888 | extern char * _PREHASH_RoleData; | 809 | extern char * _PREHASH_RoleData; |
@@ -893,11 +814,10 @@ extern char * _PREHASH_ParcelGodMarkAsContent; | |||
893 | extern char * _PREHASH_UsePhysics; | 814 | extern char * _PREHASH_UsePhysics; |
894 | extern char * _PREHASH_RegionDenyTransacted; | 815 | extern char * _PREHASH_RegionDenyTransacted; |
895 | extern char * _PREHASH_JointType; | 816 | extern char * _PREHASH_JointType; |
896 | extern char * _PREHASH_TaxEstimate; | ||
897 | extern char * _PREHASH_ObjectTaxEstimate; | 817 | extern char * _PREHASH_ObjectTaxEstimate; |
898 | extern char * _PREHASH_LightTaxEstimate; | 818 | extern char * _PREHASH_LightTaxEstimate; |
899 | extern char * _PREHASH_TeleportLandingStatusChanged; | ||
900 | extern char * _PREHASH_LandTaxEstimate; | 819 | extern char * _PREHASH_LandTaxEstimate; |
820 | extern char * _PREHASH_TeleportLandingStatusChanged; | ||
901 | extern char * _PREHASH_GroupTaxEstimate; | 821 | extern char * _PREHASH_GroupTaxEstimate; |
902 | extern char * _PREHASH_AvgViewerFPS; | 822 | extern char * _PREHASH_AvgViewerFPS; |
903 | extern char * _PREHASH_Buttons; | 823 | extern char * _PREHASH_Buttons; |
@@ -929,8 +849,6 @@ extern char * _PREHASH_WinnerID; | |||
929 | extern char * _PREHASH_ChannelType; | 849 | extern char * _PREHASH_ChannelType; |
930 | extern char * _PREHASH_NonExemptMembers; | 850 | extern char * _PREHASH_NonExemptMembers; |
931 | extern char * _PREHASH_Agents; | 851 | extern char * _PREHASH_Agents; |
932 | extern char * _PREHASH_SimulatorStart; | ||
933 | extern char * _PREHASH_Enable; | ||
934 | extern char * _PREHASH_MemberData; | 852 | extern char * _PREHASH_MemberData; |
935 | extern char * _PREHASH_ToGroupID; | 853 | extern char * _PREHASH_ToGroupID; |
936 | extern char * _PREHASH_ImageNotInDatabase; | 854 | extern char * _PREHASH_ImageNotInDatabase; |
@@ -938,27 +856,21 @@ extern char * _PREHASH_StartDate; | |||
938 | extern char * _PREHASH_AnimID; | 856 | extern char * _PREHASH_AnimID; |
939 | extern char * _PREHASH_Serial; | 857 | extern char * _PREHASH_Serial; |
940 | extern char * _PREHASH_AbuseRegionName; | 858 | extern char * _PREHASH_AbuseRegionName; |
941 | extern char * _PREHASH_ControlPort; | ||
942 | extern char * _PREHASH_ModifyLand; | 859 | extern char * _PREHASH_ModifyLand; |
943 | extern char * _PREHASH_Digest; | 860 | extern char * _PREHASH_Digest; |
944 | extern char * _PREHASH_Victim; | 861 | extern char * _PREHASH_Victim; |
945 | extern char * _PREHASH_Script; | 862 | extern char * _PREHASH_Script; |
946 | extern char * _PREHASH_TemplateChecksumReply; | ||
947 | extern char * _PREHASH_PickInfoReply; | 863 | extern char * _PREHASH_PickInfoReply; |
948 | extern char * _PREHASH_MoneyBalanceReply; | 864 | extern char * _PREHASH_MoneyBalanceReply; |
949 | extern char * _PREHASH_RoutedMoneyBalanceReply; | 865 | extern char * _PREHASH_RoutedMoneyBalanceReply; |
950 | extern char * _PREHASH_RoleID; | 866 | extern char * _PREHASH_RoleID; |
951 | extern char * _PREHASH_RegionInfo; | 867 | extern char * _PREHASH_RegionInfo; |
952 | extern char * _PREHASH_Sequence; | ||
953 | extern char * _PREHASH_GodUpdateRegionInfo; | 868 | extern char * _PREHASH_GodUpdateRegionInfo; |
954 | extern char * _PREHASH_LocalX; | ||
955 | extern char * _PREHASH_LocalY; | ||
956 | extern char * _PREHASH_StartAnim; | 869 | extern char * _PREHASH_StartAnim; |
957 | extern char * _PREHASH_Location; | ||
958 | extern char * _PREHASH_Action; | 870 | extern char * _PREHASH_Action; |
871 | extern char * _PREHASH_Location; | ||
959 | extern char * _PREHASH_Rights; | 872 | extern char * _PREHASH_Rights; |
960 | extern char * _PREHASH_SearchDir; | 873 | extern char * _PREHASH_SearchDir; |
961 | extern char * _PREHASH_Active; | ||
962 | extern char * _PREHASH_TransferRequest; | 874 | extern char * _PREHASH_TransferRequest; |
963 | extern char * _PREHASH_ScriptSensorRequest; | 875 | extern char * _PREHASH_ScriptSensorRequest; |
964 | extern char * _PREHASH_MoneyTransferRequest; | 876 | extern char * _PREHASH_MoneyTransferRequest; |
@@ -969,8 +881,6 @@ extern char * _PREHASH_Center; | |||
969 | extern char * _PREHASH_SharedData; | 881 | extern char * _PREHASH_SharedData; |
970 | extern char * _PREHASH_PSBlock; | 882 | extern char * _PREHASH_PSBlock; |
971 | extern char * _PREHASH_UUIDNameBlock; | 883 | extern char * _PREHASH_UUIDNameBlock; |
972 | extern char * _PREHASH_Viewer; | ||
973 | extern char * _PREHASH_GroupNoticeDelete; | ||
974 | extern char * _PREHASH_GroupTitleUpdate; | 884 | extern char * _PREHASH_GroupTitleUpdate; |
975 | extern char * _PREHASH_Method; | 885 | extern char * _PREHASH_Method; |
976 | extern char * _PREHASH_TouchName; | 886 | extern char * _PREHASH_TouchName; |
@@ -982,11 +892,9 @@ extern char * _PREHASH_GodlikeMessage; | |||
982 | extern char * _PREHASH_SystemMessage; | 892 | extern char * _PREHASH_SystemMessage; |
983 | extern char * _PREHASH_BodyRotation; | 893 | extern char * _PREHASH_BodyRotation; |
984 | extern char * _PREHASH_SearchRegions; | 894 | extern char * _PREHASH_SearchRegions; |
985 | extern char * _PREHASH_Ignore; | ||
986 | extern char * _PREHASH_AnimationData; | 895 | extern char * _PREHASH_AnimationData; |
987 | extern char * _PREHASH_StatID; | 896 | extern char * _PREHASH_StatID; |
988 | extern char * _PREHASH_ItemID; | 897 | extern char * _PREHASH_ItemID; |
989 | extern char * _PREHASH_AvatarStatisticsReply; | ||
990 | extern char * _PREHASH_ScriptDialogReply; | 898 | extern char * _PREHASH_ScriptDialogReply; |
991 | extern char * _PREHASH_RegionIDAndHandleReply; | 899 | extern char * _PREHASH_RegionIDAndHandleReply; |
992 | extern char * _PREHASH_CameraAtOffset; | 900 | extern char * _PREHASH_CameraAtOffset; |
@@ -1011,7 +919,6 @@ extern char * _PREHASH_OldItemID; | |||
1011 | extern char * _PREHASH_RegionPort; | 919 | extern char * _PREHASH_RegionPort; |
1012 | extern char * _PREHASH_PriceEnergyUnit; | 920 | extern char * _PREHASH_PriceEnergyUnit; |
1013 | extern char * _PREHASH_Bitmap; | 921 | extern char * _PREHASH_Bitmap; |
1014 | extern char * _PREHASH_TrackAgentSession; | ||
1015 | extern char * _PREHASH_CacheMissType; | 922 | extern char * _PREHASH_CacheMissType; |
1016 | extern char * _PREHASH_VFileID; | 923 | extern char * _PREHASH_VFileID; |
1017 | extern char * _PREHASH_GroupInsigniaID; | 924 | extern char * _PREHASH_GroupInsigniaID; |
@@ -1059,7 +966,6 @@ extern char * _PREHASH_MeanCollisionAlert; | |||
1059 | extern char * _PREHASH_CanAcceptTasks; | 966 | extern char * _PREHASH_CanAcceptTasks; |
1060 | extern char * _PREHASH_ItemData; | 967 | extern char * _PREHASH_ItemData; |
1061 | extern char * _PREHASH_AnimationList; | 968 | extern char * _PREHASH_AnimationList; |
1062 | extern char * _PREHASH_PassObject; | ||
1063 | extern char * _PREHASH_Reputation; | 969 | extern char * _PREHASH_Reputation; |
1064 | extern char * _PREHASH_IntValue; | 970 | extern char * _PREHASH_IntValue; |
1065 | extern char * _PREHASH_TargetType; | 971 | extern char * _PREHASH_TargetType; |
@@ -1082,10 +988,8 @@ extern char * _PREHASH_ParcelBuy; | |||
1082 | extern char * _PREHASH_DirFindQueryBackend; | 988 | extern char * _PREHASH_DirFindQueryBackend; |
1083 | extern char * _PREHASH_DirPlacesQueryBackend; | 989 | extern char * _PREHASH_DirPlacesQueryBackend; |
1084 | extern char * _PREHASH_DirClassifiedQueryBackend; | 990 | extern char * _PREHASH_DirClassifiedQueryBackend; |
1085 | extern char * _PREHASH_DirPicksQueryBackend; | ||
1086 | extern char * _PREHASH_DirLandQueryBackend; | 991 | extern char * _PREHASH_DirLandQueryBackend; |
1087 | extern char * _PREHASH_DirPopularQueryBackend; | 992 | extern char * _PREHASH_DirPopularQueryBackend; |
1088 | extern char * _PREHASH_LogoutDemand; | ||
1089 | extern char * _PREHASH_HistoryData; | 993 | extern char * _PREHASH_HistoryData; |
1090 | extern char * _PREHASH_SnapshotID; | 994 | extern char * _PREHASH_SnapshotID; |
1091 | extern char * _PREHASH_Aspect; | 995 | extern char * _PREHASH_Aspect; |
@@ -1093,7 +997,6 @@ extern char * _PREHASH_ParamSize; | |||
1093 | extern char * _PREHASH_VoteCast; | 997 | extern char * _PREHASH_VoteCast; |
1094 | extern char * _PREHASH_CastsShadows; | 998 | extern char * _PREHASH_CastsShadows; |
1095 | extern char * _PREHASH_EveryoneMask; | 999 | extern char * _PREHASH_EveryoneMask; |
1096 | extern char * _PREHASH_SetSunPhase; | ||
1097 | extern char * _PREHASH_ObjectSpinUpdate; | 1000 | extern char * _PREHASH_ObjectSpinUpdate; |
1098 | extern char * _PREHASH_MaturePublish; | 1001 | extern char * _PREHASH_MaturePublish; |
1099 | extern char * _PREHASH_UseExistingAsset; | 1002 | extern char * _PREHASH_UseExistingAsset; |
@@ -1102,7 +1005,6 @@ extern char * _PREHASH_ParcelLocalID; | |||
1102 | extern char * _PREHASH_TeleportCancel; | 1005 | extern char * _PREHASH_TeleportCancel; |
1103 | extern char * _PREHASH_UnixTime; | 1006 | extern char * _PREHASH_UnixTime; |
1104 | extern char * _PREHASH_QueryFlags; | 1007 | extern char * _PREHASH_QueryFlags; |
1105 | extern char * _PREHASH_LastExecFroze; | ||
1106 | extern char * _PREHASH_AlwaysRun; | 1008 | extern char * _PREHASH_AlwaysRun; |
1107 | extern char * _PREHASH_Bottom; | 1009 | extern char * _PREHASH_Bottom; |
1108 | extern char * _PREHASH_ButtonData; | 1010 | extern char * _PREHASH_ButtonData; |
@@ -1121,7 +1023,6 @@ extern char * _PREHASH_NVPairs; | |||
1121 | extern char * _PREHASH_GroupNoticesListRequest; | 1023 | extern char * _PREHASH_GroupNoticesListRequest; |
1122 | extern char * _PREHASH_ParcelAccessListRequest; | 1024 | extern char * _PREHASH_ParcelAccessListRequest; |
1123 | extern char * _PREHASH_MuteListRequest; | 1025 | extern char * _PREHASH_MuteListRequest; |
1124 | extern char * _PREHASH_StartPeriod; | ||
1125 | extern char * _PREHASH_RpcChannelRequest; | 1026 | extern char * _PREHASH_RpcChannelRequest; |
1126 | extern char * _PREHASH_LandStatRequest; | 1027 | extern char * _PREHASH_LandStatRequest; |
1127 | extern char * _PREHASH_PlacesQuery; | 1028 | extern char * _PREHASH_PlacesQuery; |
@@ -1149,34 +1050,27 @@ extern char * _PREHASH_SnapSelection; | |||
1149 | extern char * _PREHASH_SoundTrigger; | 1050 | extern char * _PREHASH_SoundTrigger; |
1150 | extern char * _PREHASH_TerrainRaiseLimit; | 1051 | extern char * _PREHASH_TerrainRaiseLimit; |
1151 | extern char * _PREHASH_Quorum; | 1052 | extern char * _PREHASH_Quorum; |
1152 | extern char * _PREHASH_TokenBlock; | ||
1153 | extern char * _PREHASH_AgentBlock; | 1053 | extern char * _PREHASH_AgentBlock; |
1154 | extern char * _PREHASH_CommandBlock; | 1054 | extern char * _PREHASH_CommandBlock; |
1155 | extern char * _PREHASH_PricePublicObjectDecay; | 1055 | extern char * _PREHASH_PricePublicObjectDecay; |
1156 | extern char * _PREHASH_SpawnPointPos; | 1056 | extern char * _PREHASH_SpawnPointPos; |
1157 | extern char * _PREHASH_AttachedSoundCutoffRadius; | ||
1158 | extern char * _PREHASH_VolumeDetail; | 1057 | extern char * _PREHASH_VolumeDetail; |
1159 | extern char * _PREHASH_FromAgentName; | 1058 | extern char * _PREHASH_FromAgentName; |
1160 | extern char * _PREHASH_Range; | 1059 | extern char * _PREHASH_Range; |
1161 | extern char * _PREHASH_DirectoryVisibility; | 1060 | extern char * _PREHASH_DirectoryVisibility; |
1162 | extern char * _PREHASH_PublicIP; | 1061 | extern char * _PREHASH_PublicIP; |
1163 | extern char * _PREHASH_TeleportFailed; | 1062 | extern char * _PREHASH_TeleportFailed; |
1164 | extern char * _PREHASH_OnlineStatusReply; | ||
1165 | extern char * _PREHASH_RequestAvatarInfo; | ||
1166 | extern char * _PREHASH_PreloadSound; | 1063 | extern char * _PREHASH_PreloadSound; |
1167 | extern char * _PREHASH_ScreenshotID; | 1064 | extern char * _PREHASH_ScreenshotID; |
1168 | extern char * _PREHASH_CovenantTimestamp; | 1065 | extern char * _PREHASH_CovenantTimestamp; |
1169 | extern char * _PREHASH_OldestUnacked; | 1066 | extern char * _PREHASH_OldestUnacked; |
1170 | extern char * _PREHASH_SimulatorIP; | 1067 | extern char * _PREHASH_SimulatorIP; |
1171 | extern char * _PREHASH_ObjectImport; | ||
1172 | extern char * _PREHASH_Value; | 1068 | extern char * _PREHASH_Value; |
1173 | extern char * _PREHASH_JointAxisOrAnchor; | 1069 | extern char * _PREHASH_JointAxisOrAnchor; |
1174 | extern char * _PREHASH_Test0; | 1070 | extern char * _PREHASH_Test0; |
1175 | extern char * _PREHASH_Test1; | 1071 | extern char * _PREHASH_Test1; |
1176 | extern char * _PREHASH_Test2; | 1072 | extern char * _PREHASH_Test2; |
1177 | extern char * _PREHASH_SunPhase; | 1073 | extern char * _PREHASH_SunPhase; |
1178 | extern char * _PREHASH_Place; | ||
1179 | extern char * _PREHASH_Phase; | ||
1180 | extern char * _PREHASH_ParcelDivide; | 1074 | extern char * _PREHASH_ParcelDivide; |
1181 | extern char * _PREHASH_PriceObjectClaim; | 1075 | extern char * _PREHASH_PriceObjectClaim; |
1182 | extern char * _PREHASH_Field; | 1076 | extern char * _PREHASH_Field; |
@@ -1186,7 +1080,6 @@ extern char * _PREHASH_LiveHelpGroupReply; | |||
1186 | extern char * _PREHASH_Score; | 1080 | extern char * _PREHASH_Score; |
1187 | extern char * _PREHASH_Image; | 1081 | extern char * _PREHASH_Image; |
1188 | extern char * _PREHASH_ObjectClickAction; | 1082 | extern char * _PREHASH_ObjectClickAction; |
1189 | extern char * _PREHASH_Delta; | ||
1190 | extern char * _PREHASH_Parameter; | 1083 | extern char * _PREHASH_Parameter; |
1191 | extern char * _PREHASH_Flags; | 1084 | extern char * _PREHASH_Flags; |
1192 | extern char * _PREHASH_Plane; | 1085 | extern char * _PREHASH_Plane; |
@@ -1196,26 +1089,24 @@ extern char * _PREHASH_DirFindQuery; | |||
1196 | extern char * _PREHASH_Textures; | 1089 | extern char * _PREHASH_Textures; |
1197 | extern char * _PREHASH_EventData; | 1090 | extern char * _PREHASH_EventData; |
1198 | extern char * _PREHASH_Final; | 1091 | extern char * _PREHASH_Final; |
1092 | extern char * _PREHASH_System; | ||
1199 | extern char * _PREHASH_TelehubPos; | 1093 | extern char * _PREHASH_TelehubPos; |
1200 | extern char * _PREHASH_ReportAutosaveCrash; | 1094 | extern char * _PREHASH_ReportAutosaveCrash; |
1201 | extern char * _PREHASH_CreateTrustedCircuit; | 1095 | extern char * _PREHASH_CreateTrustedCircuit; |
1202 | extern char * _PREHASH_DenyTrustedCircuit; | 1096 | extern char * _PREHASH_DenyTrustedCircuit; |
1203 | extern char * _PREHASH_RequestTrustedCircuit; | 1097 | extern char * _PREHASH_RequestTrustedCircuit; |
1204 | extern char * _PREHASH_Codec; | 1098 | extern char * _PREHASH_Codec; |
1205 | extern char * _PREHASH_Level; | ||
1206 | extern char * _PREHASH_Modal; | 1099 | extern char * _PREHASH_Modal; |
1207 | extern char * _PREHASH_ChildAgentUnknown; | 1100 | extern char * _PREHASH_ChildAgentUnknown; |
1208 | extern char * _PREHASH_LandingType; | 1101 | extern char * _PREHASH_LandingType; |
1209 | extern char * _PREHASH_ScriptRunningReply; | 1102 | extern char * _PREHASH_ScriptRunningReply; |
1210 | extern char * _PREHASH_MoneyDetailsReply; | ||
1211 | extern char * _PREHASH_Reply; | 1103 | extern char * _PREHASH_Reply; |
1104 | extern char * _PREHASH_GroupAccountDetailsReply; | ||
1212 | extern char * _PREHASH_TelehubRot; | 1105 | extern char * _PREHASH_TelehubRot; |
1213 | extern char * _PREHASH_RequestFriendship; | ||
1214 | extern char * _PREHASH_AcceptFriendship; | 1106 | extern char * _PREHASH_AcceptFriendship; |
1215 | extern char * _PREHASH_GroupAccountDetailsReply; | 1107 | extern char * _PREHASH_ItemType; |
1216 | extern char * _PREHASH_DwellInfo; | 1108 | extern char * _PREHASH_DwellInfo; |
1217 | extern char * _PREHASH_AgentResume; | 1109 | extern char * _PREHASH_AgentResume; |
1218 | extern char * _PREHASH_ItemType; | ||
1219 | extern char * _PREHASH_MailFilter; | 1110 | extern char * _PREHASH_MailFilter; |
1220 | extern char * _PREHASH_Disconnect; | 1111 | extern char * _PREHASH_Disconnect; |
1221 | extern char * _PREHASH_SimPosition; | 1112 | extern char * _PREHASH_SimPosition; |
@@ -1242,7 +1133,6 @@ extern char * _PREHASH_VoteType; | |||
1242 | extern char * _PREHASH_CategoryID; | 1133 | extern char * _PREHASH_CategoryID; |
1243 | extern char * _PREHASH_Token; | 1134 | extern char * _PREHASH_Token; |
1244 | extern char * _PREHASH_AggregatePerms; | 1135 | extern char * _PREHASH_AggregatePerms; |
1245 | extern char * _PREHASH_StartParcelRemoveAck; | ||
1246 | extern char * _PREHASH_ObjectSelect; | 1136 | extern char * _PREHASH_ObjectSelect; |
1247 | extern char * _PREHASH_ForceObjectSelect; | 1137 | extern char * _PREHASH_ForceObjectSelect; |
1248 | extern char * _PREHASH_Price; | 1138 | extern char * _PREHASH_Price; |
@@ -1271,7 +1161,6 @@ extern char * _PREHASH_Notes; | |||
1271 | extern char * _PREHASH_AvatarID; | 1161 | extern char * _PREHASH_AvatarID; |
1272 | extern char * _PREHASH_FounderID; | 1162 | extern char * _PREHASH_FounderID; |
1273 | extern char * _PREHASH_EndPointID; | 1163 | extern char * _PREHASH_EndPointID; |
1274 | extern char * _PREHASH_StipendEstimate; | ||
1275 | extern char * _PREHASH_LocationLookAt; | 1164 | extern char * _PREHASH_LocationLookAt; |
1276 | extern char * _PREHASH_Sound; | 1165 | extern char * _PREHASH_Sound; |
1277 | extern char * _PREHASH_Cover; | 1166 | extern char * _PREHASH_Cover; |
@@ -1291,12 +1180,12 @@ extern char * _PREHASH_ProfileHollow; | |||
1291 | extern char * _PREHASH_GroupRoleChanges; | 1180 | extern char * _PREHASH_GroupRoleChanges; |
1292 | extern char * _PREHASH_Count; | 1181 | extern char * _PREHASH_Count; |
1293 | extern char * _PREHASH_South; | 1182 | extern char * _PREHASH_South; |
1294 | extern char * _PREHASH_Entry; | ||
1295 | extern char * _PREHASH_ObjectUpdateCompressed; | 1183 | extern char * _PREHASH_ObjectUpdateCompressed; |
1296 | extern char * _PREHASH_MuteFlags; | 1184 | extern char * _PREHASH_MuteFlags; |
1297 | extern char * _PREHASH_Group; | 1185 | extern char * _PREHASH_Group; |
1298 | extern char * _PREHASH_AgentPause; | 1186 | extern char * _PREHASH_AgentPause; |
1299 | extern char * _PREHASH_LanguagesText; | 1187 | extern char * _PREHASH_LanguagesText; |
1188 | extern char * _PREHASH_Error; | ||
1300 | extern char * _PREHASH_InternalScriptMail; | 1189 | extern char * _PREHASH_InternalScriptMail; |
1301 | extern char * _PREHASH_FindAgent; | 1190 | extern char * _PREHASH_FindAgent; |
1302 | extern char * _PREHASH_AgentData; | 1191 | extern char * _PREHASH_AgentData; |
@@ -1305,7 +1194,6 @@ extern char * _PREHASH_AssetBlock; | |||
1305 | extern char * _PREHASH_AcceptNotices; | 1194 | extern char * _PREHASH_AcceptNotices; |
1306 | extern char * _PREHASH_SetGroupAcceptNotices; | 1195 | extern char * _PREHASH_SetGroupAcceptNotices; |
1307 | extern char * _PREHASH_CloseCircuit; | 1196 | extern char * _PREHASH_CloseCircuit; |
1308 | extern char * _PREHASH_LogControl; | ||
1309 | extern char * _PREHASH_TeleportFinish; | 1197 | extern char * _PREHASH_TeleportFinish; |
1310 | extern char * _PREHASH_PathRevolutions; | 1198 | extern char * _PREHASH_PathRevolutions; |
1311 | extern char * _PREHASH_ClassifiedInfoReply; | 1199 | extern char * _PREHASH_ClassifiedInfoReply; |
@@ -1322,7 +1210,6 @@ extern char * _PREHASH_DataHomeLocationRequest; | |||
1322 | extern char * _PREHASH_EventNotificationAddRequest; | 1210 | extern char * _PREHASH_EventNotificationAddRequest; |
1323 | extern char * _PREHASH_ParcelDwellRequest; | 1211 | extern char * _PREHASH_ParcelDwellRequest; |
1324 | extern char * _PREHASH_EventLocationRequest; | 1212 | extern char * _PREHASH_EventLocationRequest; |
1325 | extern char * _PREHASH_EndPeriod; | ||
1326 | extern char * _PREHASH_SetStartLocationRequest; | 1213 | extern char * _PREHASH_SetStartLocationRequest; |
1327 | extern char * _PREHASH_QueryStart; | 1214 | extern char * _PREHASH_QueryStart; |
1328 | extern char * _PREHASH_EjectData; | 1215 | extern char * _PREHASH_EjectData; |
@@ -1335,7 +1222,6 @@ extern char * _PREHASH_ParcelRelease; | |||
1335 | extern char * _PREHASH_VFileType; | 1222 | extern char * _PREHASH_VFileType; |
1336 | extern char * _PREHASH_EjectGroupMemberReply; | 1223 | extern char * _PREHASH_EjectGroupMemberReply; |
1337 | extern char * _PREHASH_ImageData; | 1224 | extern char * _PREHASH_ImageData; |
1338 | extern char * _PREHASH_SpaceServerSimulatorTimeMessage; | ||
1339 | extern char * _PREHASH_SimulatorViewerTimeMessage; | 1225 | extern char * _PREHASH_SimulatorViewerTimeMessage; |
1340 | extern char * _PREHASH_Rotation; | 1226 | extern char * _PREHASH_Rotation; |
1341 | extern char * _PREHASH_Selection; | 1227 | extern char * _PREHASH_Selection; |
@@ -1343,7 +1229,6 @@ extern char * _PREHASH_TransactionData; | |||
1343 | extern char * _PREHASH_OperationData; | 1229 | extern char * _PREHASH_OperationData; |
1344 | extern char * _PREHASH_ExpirationDate; | 1230 | extern char * _PREHASH_ExpirationDate; |
1345 | extern char * _PREHASH_ParcelDeedToGroup; | 1231 | extern char * _PREHASH_ParcelDeedToGroup; |
1346 | extern char * _PREHASH_DirPicksReply; | ||
1347 | extern char * _PREHASH_AvatarPicksReply; | 1232 | extern char * _PREHASH_AvatarPicksReply; |
1348 | extern char * _PREHASH_GroupTitlesReply; | 1233 | extern char * _PREHASH_GroupTitlesReply; |
1349 | extern char * _PREHASH_AgentInfo; | 1234 | extern char * _PREHASH_AgentInfo; |
@@ -1354,8 +1239,8 @@ extern char * _PREHASH_PassPrice; | |||
1354 | extern char * _PREHASH_SourceID; | 1239 | extern char * _PREHASH_SourceID; |
1355 | extern char * _PREHASH_ChangeUserRights; | 1240 | extern char * _PREHASH_ChangeUserRights; |
1356 | extern char * _PREHASH_TeleportFlags; | 1241 | extern char * _PREHASH_TeleportFlags; |
1357 | extern char * _PREHASH_AssetData; | ||
1358 | extern char * _PREHASH_SlaveParcelData; | 1242 | extern char * _PREHASH_SlaveParcelData; |
1243 | extern char * _PREHASH_AssetData; | ||
1359 | extern char * _PREHASH_MultipleObjectUpdate; | 1244 | extern char * _PREHASH_MultipleObjectUpdate; |
1360 | extern char * _PREHASH_ObjectUpdate; | 1245 | extern char * _PREHASH_ObjectUpdate; |
1361 | extern char * _PREHASH_ImprovedTerseObjectUpdate; | 1246 | extern char * _PREHASH_ImprovedTerseObjectUpdate; |
@@ -1371,7 +1256,6 @@ extern char * _PREHASH_TaskLocalID; | |||
1371 | extern char * _PREHASH_ClaimDate; | 1256 | extern char * _PREHASH_ClaimDate; |
1372 | extern char * _PREHASH_MergeParcel; | 1257 | extern char * _PREHASH_MergeParcel; |
1373 | extern char * _PREHASH_Priority; | 1258 | extern char * _PREHASH_Priority; |
1374 | extern char * _PREHASH_Building; | ||
1375 | extern char * _PREHASH_QueryText; | 1259 | extern char * _PREHASH_QueryText; |
1376 | extern char * _PREHASH_GroupNoticeAdd; | 1260 | extern char * _PREHASH_GroupNoticeAdd; |
1377 | extern char * _PREHASH_ReturnType; | 1261 | extern char * _PREHASH_ReturnType; |
@@ -1381,7 +1265,6 @@ extern char * _PREHASH_HeaderData; | |||
1381 | extern char * _PREHASH_RequestMultipleObjects; | 1265 | extern char * _PREHASH_RequestMultipleObjects; |
1382 | extern char * _PREHASH_RetrieveInstantMessages; | 1266 | extern char * _PREHASH_RetrieveInstantMessages; |
1383 | extern char * _PREHASH_OpenCircuit; | 1267 | extern char * _PREHASH_OpenCircuit; |
1384 | extern char * _PREHASH_SecureSessionID; | ||
1385 | extern char * _PREHASH_CrossedRegion; | 1268 | extern char * _PREHASH_CrossedRegion; |
1386 | extern char * _PREHASH_DirGroupsReply; | 1269 | extern char * _PREHASH_DirGroupsReply; |
1387 | extern char * _PREHASH_AvatarGroupsReply; | 1270 | extern char * _PREHASH_AvatarGroupsReply; |
@@ -1392,18 +1275,14 @@ extern char * _PREHASH_Position; | |||
1392 | extern char * _PREHASH_ParentEstate; | 1275 | extern char * _PREHASH_ParentEstate; |
1393 | extern char * _PREHASH_EstateName; | 1276 | extern char * _PREHASH_EstateName; |
1394 | extern char * _PREHASH_MuteName; | 1277 | extern char * _PREHASH_MuteName; |
1395 | extern char * _PREHASH_StartParcelRename; | ||
1396 | extern char * _PREHASH_BulkParcelRename; | ||
1397 | extern char * _PREHASH_ParcelRename; | 1278 | extern char * _PREHASH_ParcelRename; |
1398 | extern char * _PREHASH_ViewerFilename; | 1279 | extern char * _PREHASH_ViewerFilename; |
1399 | extern char * _PREHASH_Positive; | ||
1400 | extern char * _PREHASH_UserReportInternal; | 1280 | extern char * _PREHASH_UserReportInternal; |
1401 | extern char * _PREHASH_AvatarPropertiesRequest; | 1281 | extern char * _PREHASH_AvatarPropertiesRequest; |
1402 | extern char * _PREHASH_ParcelPropertiesRequest; | 1282 | extern char * _PREHASH_ParcelPropertiesRequest; |
1403 | extern char * _PREHASH_GroupProfileRequest; | 1283 | extern char * _PREHASH_GroupProfileRequest; |
1404 | extern char * _PREHASH_AgentDataUpdateRequest; | 1284 | extern char * _PREHASH_AgentDataUpdateRequest; |
1405 | extern char * _PREHASH_PriceObjectScaleFactor; | 1285 | extern char * _PREHASH_PriceObjectScaleFactor; |
1406 | extern char * _PREHASH_DirPicksQuery; | ||
1407 | extern char * _PREHASH_OpenEnrollment; | 1286 | extern char * _PREHASH_OpenEnrollment; |
1408 | extern char * _PREHASH_GroupData; | 1287 | extern char * _PREHASH_GroupData; |
1409 | extern char * _PREHASH_RequestGodlikePowers; | 1288 | extern char * _PREHASH_RequestGodlikePowers; |
@@ -1414,7 +1293,6 @@ extern char * _PREHASH_Controls; | |||
1414 | extern char * _PREHASH_FirstDetachAll; | 1293 | extern char * _PREHASH_FirstDetachAll; |
1415 | extern char * _PREHASH_EstateID; | 1294 | extern char * _PREHASH_EstateID; |
1416 | extern char * _PREHASH_ImprovedInstantMessage; | 1295 | extern char * _PREHASH_ImprovedInstantMessage; |
1417 | extern char * _PREHASH_AgentQuit; | ||
1418 | extern char * _PREHASH_CheckParcelSales; | 1296 | extern char * _PREHASH_CheckParcelSales; |
1419 | extern char * _PREHASH_ParcelSales; | 1297 | extern char * _PREHASH_ParcelSales; |
1420 | extern char * _PREHASH_CurrentInterval; | 1298 | extern char * _PREHASH_CurrentInterval; |
@@ -1431,12 +1309,8 @@ extern char * _PREHASH_OwnerIDs; | |||
1431 | extern char * _PREHASH_SystemKickUser; | 1309 | extern char * _PREHASH_SystemKickUser; |
1432 | extern char * _PREHASH_TransactionTime; | 1310 | extern char * _PREHASH_TransactionTime; |
1433 | extern char * _PREHASH_TimeToLive; | 1311 | extern char * _PREHASH_TimeToLive; |
1434 | extern char * _PREHASH_StartParcelRemove; | ||
1435 | extern char * _PREHASH_BulkParcelRemove; | ||
1436 | extern char * _PREHASH_OldAgentID; | 1312 | extern char * _PREHASH_OldAgentID; |
1437 | extern char * _PREHASH_BonusEstimate; | ||
1438 | extern char * _PREHASH_MusicURL; | 1313 | extern char * _PREHASH_MusicURL; |
1439 | extern char * _PREHASH_CompleteLure; | ||
1440 | extern char * _PREHASH_ParcelPrimBonus; | 1314 | extern char * _PREHASH_ParcelPrimBonus; |
1441 | extern char * _PREHASH_EjectUser; | 1315 | extern char * _PREHASH_EjectUser; |
1442 | extern char * _PREHASH_CoarseLocationUpdate; | 1316 | extern char * _PREHASH_CoarseLocationUpdate; |
@@ -1469,10 +1343,6 @@ extern char * _PREHASH_ParcelProperties; | |||
1469 | extern char * _PREHASH_EstateOwnerID; | 1343 | extern char * _PREHASH_EstateOwnerID; |
1470 | extern char * _PREHASH_LogoutRequest; | 1344 | extern char * _PREHASH_LogoutRequest; |
1471 | extern char * _PREHASH_AssetUploadRequest; | 1345 | extern char * _PREHASH_AssetUploadRequest; |
1472 | extern char * _PREHASH_ReputationIndividualRequest; | ||
1473 | extern char * _PREHASH_MajorVersion; | ||
1474 | extern char * _PREHASH_MinorVersion; | ||
1475 | extern char * _PREHASH_SimulatorAssign; | ||
1476 | extern char * _PREHASH_TransactionType; | 1346 | extern char * _PREHASH_TransactionType; |
1477 | extern char * _PREHASH_AvatarPropertiesUpdate; | 1347 | extern char * _PREHASH_AvatarPropertiesUpdate; |
1478 | extern char * _PREHASH_ParcelPropertiesUpdate; | 1348 | extern char * _PREHASH_ParcelPropertiesUpdate; |
@@ -1481,7 +1351,6 @@ extern char * _PREHASH_AbortXfer; | |||
1481 | extern char * _PREHASH_DeRezAck; | 1351 | extern char * _PREHASH_DeRezAck; |
1482 | extern char * _PREHASH_TakeControls; | 1352 | extern char * _PREHASH_TakeControls; |
1483 | extern char * _PREHASH_DirLandReply; | 1353 | extern char * _PREHASH_DirLandReply; |
1484 | extern char * _PREHASH_SpaceLocationTeleportReply; | ||
1485 | extern char * _PREHASH_MuteType; | 1354 | extern char * _PREHASH_MuteType; |
1486 | extern char * _PREHASH_IMViaEMail; | 1355 | extern char * _PREHASH_IMViaEMail; |
1487 | extern char * _PREHASH_RentPrice; | 1356 | extern char * _PREHASH_RentPrice; |