本文共 2878 字,大约阅读时间需要 9 分钟。
elementsconsult an abstract service known as a location service,
whichprovides address bindings for a particular domain
---10.1 Overview
ReSIProcate的LocationServer类,职责明确
generatesa final response, the TU uses a timer which is called
timerC. Timer C MUST be set for each client transaction when
anINVITE request is proxied. The timer MUST be larger than 3
minutes.Section 16.7 bullet 2 discusses how this timer is
updatedwith provisional responses, and Section 16.8 discusses
processingwhen it fires.
---11. Set timer C
注:Proxy的int mTimerC;
aCall-ID value, a local tag and a remote tag.
---12 Dialogs
参考resip::DialogId
transmissionswithin the dialog. This state consists of the dialog
ID,a local sequence number (used to order requests from the UA to
itspeer), a remote sequence number (used to order requests from its
peerto the UA), a local URI, a remote URI, remote target, a boolean
flagcalled "secure", and a route set, which is an ordered list of
URIs.The route set is the list of servers that need to be traversed
tosend a request to the peer.
---12 Dialogs
联系Dum的Dialog类
a boolean flag called "secure" | bool mSecure |
a route set, which is an ordered list of URIs The route set is the list of servers that need to be traversed to send a request to the peer. | NameAddrs mRouteSet; |
a remote sequence number (used to order requests from its peer to the UA) | unsigned int mRemoteCSeq; |
a local sequence number (used to order requests from the UA to its peer) | unsigned int mLocalCSeq; |
Dialog ID | DialogId mId;
|
a local URI | NameAddr mLocalNameAddr; |
a remote URI | NameAddr mRemoteNameAddr; |
Remote target | NameAddr mRemoteTarget; |
maintenanceof a state machine.
17.1 Client Transaction
注:联想到mStateMacFifo及mStateMachineFifo,附state和machine的值
typedef enum
{
ClientNonInvite,
ClientInvite,
ServerNonInvite,
ServerInvite,
ClientStale,
ServerStale,
Stateless // may not be needed
} Machine;
typedef enum
{
Calling,
Trying,
Proceeding,
Completed,
Confirmed,
Terminated,
Bogus
} State;
that a server listens on for UDP, it MUSTlisten on that same port
and interface for TCP. This is because a message may need to be sent
using TCP, rather than UDP, if it is toolarge. As a result, the
converse is not true. A server need not listen for UDP on a
particular address and port just because itis listening on that same
address and port for TCP. There may, of course, be other reasons why
a server needs to listen for UDP on aparticular address and port.
---18.2.1 Receiving Requests
注:前面也多次提到,在某些限制条件下,即便使用UDP传输,SIP Message也不得不通过TCP传输,因此如果配置UDP传输的话,需要同时监视UDP和TCP。不过Resiprocate的proxy似乎没有注意到这一点。
转载地址:http://tzppi.baihongyu.com/