|
@@ -506,9 +506,14 @@ int auth_check(struct sip_msg* _m, char* _realm, char* _table, char *_flags)
|
|
|
} else {
|
|
|
uri = furi;
|
|
|
}
|
|
|
- if(srealm.len!=uri->user.len
|
|
|
- || strncmp(srealm.s, uri->user.s, srealm.len)!=0)
|
|
|
- return AUTH_USER_MISMATCH;
|
|
|
+ if((iflags&AUTH_CHECK_SKIPFWD_F)
|
|
|
+ && (_m->REQ_METHOD==METHOD_INVITE || _m->REQ_METHOD==METHOD_BYE
|
|
|
+ || _m->REQ_METHOD==METHOD_PRACK || _m->REQ_METHOD==METHOD_UPDATE
|
|
|
+ || _m->REQ_METHOD==METHOD_MESSAGE)) {
|
|
|
+ if(srealm.len!=uri->user.len
|
|
|
+ || strncmp(srealm.s, uri->user.s, srealm.len)!=0)
|
|
|
+ return AUTH_USER_MISMATCH;
|
|
|
+ }
|
|
|
|
|
|
if(_m->REQ_METHOD==METHOD_REGISTER || _m->REQ_METHOD==METHOD_PUBLISH) {
|
|
|
/* check from==to */
|