mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 19:52:48 +00:00
Clean up chan_sip
This clean up was broken out from https://reviewboard.asterisk.org/r/1976/ and addresses the following: - struct sip_refer converted to use the stringfields API. - sip_{refer|notify}_allocate -> sip_{notify|refer}_alloc to match other *alloc functions. - Replace get_msg_text, get_msg_text2 and get_pidf_body -> No, not get_pidf_msg_text_body3 but get_content, to match add_content. - get_body doesn't get the request body, renamed to get_content_line. - get_body_by_line doesn't get the body line, and is just a simple if test. Moved code inline and removed function. - Remove camelCase in struct sip_peer peer state variables, onHold -> onhold, inUse -> inuse, inRinging -> ringing. - Remove camelCase in struct sip_request rlPart1 -> rlpart1, rlPart2 -> rlpart2. - Rename instances of pvt->randdata to pvt->nonce because that is what it is, no need to update struct sip_pvt because _it already has a nonce field_. - Removed struct sip_pvt randdata stringfield. - Remove useless (and inconsistent) 'header' suffix on variables in handle_request_subscribe. - Use ast_strdupa on Event header in handle_request_subscribe to avoid overly complicated strncmp calls to find the event package. - Move get_destination check in handle_request_subscribe to avoid duplicate checking for packages that don't need it. - Move extension state callback management in handle_request_subscribe to avoid duplicate checking for packages that don't need it. - Remove duplicate append_date prototype. - Rename append_date -> add_date to match other add_xxx functions. - Added add_expires helper function, removed code that manually added expires header. - Remove _header suffix on add_diversion_header (no other header adding functions have this). - Don't pass req->debug to request handle_request_XXXXX handlers if req is also being passed. - Don't pass req->ignore to check_auth as req is already being passed. - Don't create a subscription in handle_request_subscribe if p->expiry == 0. - Don't walk of the back of referred_by_name when splitting string in get_refer_info - Remove duplicate check for no dialog in handle_incoming when sipmethod == SIP_REFER, handle_request_refer checks for that. Review: https://reviewboard.asterisk.org/r/1993/ Patch-by: gareth git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370636 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -785,14 +785,14 @@ struct sip_socket {
|
||||
* Then call parse_request() and req.method = find_sip_method();
|
||||
* to initialize the other fields. The \r\n at the end of each line is
|
||||
* replaced by \0, so that data[] is not a conforming SIP message anymore.
|
||||
* After this processing, rlPart1 is set to non-NULL to remember
|
||||
* After this processing, rlpart1 is set to non-NULL to remember
|
||||
* that we can run get_header() on this kind of packet.
|
||||
*
|
||||
* parse_request() splits the first line as follows:
|
||||
* Requests have in the first line method uri SIP/2.0
|
||||
* rlPart1 = method; rlPart2 = uri;
|
||||
* rlpart1 = method; rlpart2 = uri;
|
||||
* Responses have in the first line SIP/2.0 NNN description
|
||||
* rlPart1 = SIP/2.0; rlPart2 = NNN + description;
|
||||
* rlpart1 = SIP/2.0; rlpart2 = NNN + description;
|
||||
*
|
||||
* For outgoing packets, we initialize the fields with init_req() or init_resp()
|
||||
* (which fills the first line to "METHOD uri SIP/2.0" or "SIP/2.0 code text"),
|
||||
@@ -802,8 +802,8 @@ struct sip_socket {
|
||||
* \endverbatim
|
||||
*/
|
||||
struct sip_request {
|
||||
ptrdiff_t rlPart1; /*!< Offset of the SIP Method Name or "SIP/2.0" protocol version */
|
||||
ptrdiff_t rlPart2; /*!< Offset of the Request URI or Response Status */
|
||||
ptrdiff_t rlpart1; /*!< Offset of the SIP Method Name or "SIP/2.0" protocol version */
|
||||
ptrdiff_t rlpart2; /*!< Offset of the Request URI or Response Status */
|
||||
int headers; /*!< # of SIP Headers */
|
||||
int method; /*!< Method of this request */
|
||||
int lines; /*!< Body Content */
|
||||
@@ -824,7 +824,7 @@ struct sip_request {
|
||||
|
||||
/* \brief given a sip_request and an offset, return the char * that resides there
|
||||
*
|
||||
* It used to be that rlPart1, rlPart2, and the header and line arrays were character
|
||||
* It used to be that rlpart1, rlpart2, and the header and line arrays were character
|
||||
* pointers. They are now offsets into the ast_str portion of the sip_request structure.
|
||||
* To avoid adding a bunch of redundant pointer arithmetic to the code, this macro is
|
||||
* provided to retrieve the string at a particular offset within the request's buffer
|
||||
@@ -918,26 +918,27 @@ struct _map_x_s {
|
||||
const char *s;
|
||||
};
|
||||
|
||||
/*! \brief Structure to handle SIP transfers. Dynamically allocated when needed
|
||||
\note OEJ: Should be moved to string fields */
|
||||
/*! \brief Structure to handle SIP transfers. Dynamically allocated when needed */
|
||||
struct sip_refer {
|
||||
char refer_to[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO extension */
|
||||
char refer_to_domain[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO domain */
|
||||
char refer_to_urioption[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO uri options */
|
||||
char refer_to_context[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO context */
|
||||
char referred_by[AST_MAX_EXTENSION]; /*!< Place to store REFERRED-BY extension */
|
||||
char referred_by_name[AST_MAX_EXTENSION]; /*!< Place to store REFERRED-BY extension */
|
||||
char refer_contact[AST_MAX_EXTENSION]; /*!< Place to store Contact info from a REFER extension */
|
||||
char replaces_callid[SIPBUFSIZE]; /*!< Replace info: callid */
|
||||
char replaces_callid_totag[SIPBUFSIZE/2]; /*!< Replace info: to-tag */
|
||||
char replaces_callid_fromtag[SIPBUFSIZE/2]; /*!< Replace info: from-tag */
|
||||
struct sip_pvt *refer_call; /*!< Call we are referring. This is just a reference to a
|
||||
* dialog owned by someone else, so we should not destroy
|
||||
* it when the sip_refer object goes.
|
||||
*/
|
||||
int attendedtransfer; /*!< Attended or blind transfer? */
|
||||
int localtransfer; /*!< Transfer to local domain? */
|
||||
enum referstatus status; /*!< REFER status */
|
||||
AST_DECLARE_STRING_FIELDS(
|
||||
AST_STRING_FIELD(refer_to); /*!< Place to store REFER-TO extension */
|
||||
AST_STRING_FIELD(refer_to_domain); /*!< Place to store REFER-TO domain */
|
||||
AST_STRING_FIELD(refer_to_urioption); /*!< Place to store REFER-TO uri options */
|
||||
AST_STRING_FIELD(refer_to_context); /*!< Place to store REFER-TO context */
|
||||
AST_STRING_FIELD(referred_by); /*!< Place to store REFERRED-BY extension */
|
||||
AST_STRING_FIELD(referred_by_name); /*!< Place to store REFERRED-BY extension */
|
||||
AST_STRING_FIELD(refer_contact); /*!< Place to store Contact info from a REFER extension */
|
||||
AST_STRING_FIELD(replaces_callid); /*!< Replace info: callid */
|
||||
AST_STRING_FIELD(replaces_callid_totag); /*!< Replace info: to-tag */
|
||||
AST_STRING_FIELD(replaces_callid_fromtag); /*!< Replace info: from-tag */
|
||||
);
|
||||
struct sip_pvt *refer_call; /*!< Call we are referring. This is just a reference to a
|
||||
* dialog owned by someone else, so we should not destroy
|
||||
* it when the sip_refer object goes.
|
||||
*/
|
||||
int attendedtransfer; /*!< Attended or blind transfer? */
|
||||
int localtransfer; /*!< Transfer to local domain? */
|
||||
enum referstatus status; /*!< REFER status */
|
||||
};
|
||||
|
||||
/*! \brief Struct to handle custom SIP notify requests. Dynamically allocated when needed */
|
||||
@@ -1006,7 +1007,6 @@ struct sip_pvt {
|
||||
AST_STRING_FIELD(callid); /*!< Global CallID */
|
||||
AST_STRING_FIELD(initviabranch); /*!< The branch ID from the topmost Via header in the initial request */
|
||||
AST_STRING_FIELD(initviasentby); /*!< The sent-by from the topmost Via header in the initial request */
|
||||
AST_STRING_FIELD(randdata); /*!< Random data */
|
||||
AST_STRING_FIELD(accountcode); /*!< Account code */
|
||||
AST_STRING_FIELD(realm); /*!< Authorization realm */
|
||||
AST_STRING_FIELD(nonce); /*!< Authorization nonce */
|
||||
@@ -1304,9 +1304,9 @@ struct sip_peer {
|
||||
struct sip_auth_container *auth;/*!< Realm authentication credentials */
|
||||
int amaflags; /*!< AMA Flags (for billing) */
|
||||
int callingpres; /*!< Calling id presentation */
|
||||
int inUse; /*!< Number of calls in use */
|
||||
int inRinging; /*!< Number of calls ringing */
|
||||
int onHold; /*!< Peer has someone on hold */
|
||||
int inuse; /*!< Number of calls in use */
|
||||
int ringing; /*!< Number of calls ringing */
|
||||
int onhold; /*!< Peer has someone on hold */
|
||||
int call_limit; /*!< Limit of concurrent calls */
|
||||
int t38_maxdatagram; /*!< T.38 FaxMaxDatagram override */
|
||||
int busy_level; /*!< Level of active channels where we signal busy */
|
||||
|
@@ -125,7 +125,7 @@ void sip_report_inval_password(const struct sip_pvt *p, const char *response_cha
|
||||
},
|
||||
.common.session_id = session_id,
|
||||
|
||||
.challenge = p->randdata,
|
||||
.challenge = p->nonce,
|
||||
.received_challenge = response_challenge,
|
||||
.received_hash = response_hash,
|
||||
};
|
||||
@@ -206,7 +206,7 @@ void sip_report_failed_challenge_response(const struct sip_pvt *p, const char *r
|
||||
},
|
||||
.common.session_id = session_id,
|
||||
|
||||
.challenge = p->randdata,
|
||||
.challenge = p->nonce,
|
||||
.response = response,
|
||||
.expected_response = expected_response,
|
||||
};
|
||||
@@ -242,7 +242,7 @@ void sip_report_chal_sent(const struct sip_pvt *p)
|
||||
},
|
||||
.common.session_id = session_id,
|
||||
|
||||
.challenge = p->randdata,
|
||||
.challenge = p->nonce,
|
||||
};
|
||||
|
||||
if (!ast_strlen_zero(p->from)) { /* When dialing, show account making call */
|
||||
|
Reference in New Issue
Block a user