X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdiameter%2Fcodec%2FMessage.hpp;h=48d2b848342797fd75c8969fd8a67d64c54ba96c;hb=2921c651c9945cefec0715167201596aaa079e8d;hp=449a49aeb47374fc74624625005733d9d137f2c6;hpb=b105cc8fc16f1d9bf26969a209e3bf1d506a2ef3;p=anna.git diff --git a/include/anna/diameter/codec/Message.hpp b/include/anna/diameter/codec/Message.hpp index 449a49a..48d2b84 100644 --- a/include/anna/diameter/codec/Message.hpp +++ b/include/anna/diameter/codec/Message.hpp @@ -244,24 +244,26 @@ public: /** Sets/unsets E bit activation. Application should not have to use this because dictionary information is used in order to configure flags when Message identifier is stored. + This flag MUST NOT be set in request messages (in this case, it will be ignored). @param activate Activates/deactivates the bit. True by default. */ - void setErrorBit(bool activate = true) throw() { if(activate) a_flags |= EBitMask; else a_flags &= (~EBitMask); } + void setErrorBit(bool activate = true) throw() { if(isRequest()) return; if(activate) a_flags |= EBitMask; else a_flags &= (~EBitMask); } /** Sets/unsets T bit activation. Application should not have to use this because dictionary information is used in order to configure flags when Message identifier is stored. + This flag MUST NOT be set in answer messages (in this case, it will be ignored). @param activate Activates/deactivates the bit. True by default. */ - void setPotentiallyReTransmittedMessageBit(bool activate = true) throw() { if(activate) a_flags |= TBitMask; else a_flags &= (~TBitMask); } + void setPotentiallyReTransmittedMessageBit(bool activate = true) throw() { if(isAnswer()) return; if(activate) a_flags |= TBitMask; else a_flags &= (~TBitMask); } /** Sets the message application id. The codec engine could be configured to force a stack selection based in this field value: see #selectStackWithApplicationId. - In multistack applications (which also shall be monothreaded), you only have to take care about how to apply this method: the thing + In multistack applications (in case of being monothread), you only have to take care about how to apply this method: the thing is that you must not interleave message builds which belongs to different stacks. For example, you could think about setting the message header for message A using stack A. Then, start to add the message header fields for a second message B using another stack B. Following you would add the message A avps, but then, the stack is not going to be automatically changed (this is only done through this @@ -272,7 +274,7 @@ public: @param aid Application-id. */ - void setApplicationId(U32 aid) throw(); + void setApplicationId(U32 aid) throw(anna::RuntimeException); /** Sets the message hop-by-hop