|
@@ -186,18 +186,18 @@ static inline int parse_digest_param(str* _s, dig_cred_t* _c)
|
|
|
* body content will be stored
|
|
|
*/
|
|
|
switch(t) {
|
|
|
- case PAR_USERNAME: ptr = &(_c->username); break;
|
|
|
- case PAR_REALM: ptr = &(_c->realm); break;
|
|
|
- case PAR_NONCE: ptr = &(_c->nonce); break;
|
|
|
- case PAR_URI: ptr = &(_c->uri); break;
|
|
|
- case PAR_RESPONSE: ptr = &(_c->response); break;
|
|
|
- case PAR_CNONCE: ptr = &(_c->cnonce); break;
|
|
|
- case PAR_OPAQUE: ptr = &(_c->opaque); break;
|
|
|
- case PAR_QOP: ptr = &(_c->qop.qop_str); break;
|
|
|
- case PAR_NC: ptr = &(_c->nc); break;
|
|
|
- case PAR_ALGORITHM: ptr = &(_c->alg.alg_str); break;
|
|
|
- case PAR_OTHER: ptr = &dummy; break;
|
|
|
- default: ptr = &dummy; break;
|
|
|
+ case PAR_USERNAME: ptr = &(_c->username.whole); break;
|
|
|
+ case PAR_REALM: ptr = &(_c->realm); break;
|
|
|
+ case PAR_NONCE: ptr = &(_c->nonce); break;
|
|
|
+ case PAR_URI: ptr = &(_c->uri); break;
|
|
|
+ case PAR_RESPONSE: ptr = &(_c->response); break;
|
|
|
+ case PAR_CNONCE: ptr = &(_c->cnonce); break;
|
|
|
+ case PAR_OPAQUE: ptr = &(_c->opaque); break;
|
|
|
+ case PAR_QOP: ptr = &(_c->qop.qop_str); break;
|
|
|
+ case PAR_NC: ptr = &(_c->nc); break;
|
|
|
+ case PAR_ALGORITHM: ptr = &(_c->alg.alg_str); break;
|
|
|
+ case PAR_OTHER: ptr = &dummy; break;
|
|
|
+ default: ptr = &dummy; break;
|
|
|
}
|
|
|
|
|
|
/* If the first character is qoute, it is
|
|
@@ -264,29 +264,26 @@ static inline void parse_algorithm(struct algorithm* _a)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#ifdef DIGEST_DOMAIN
|
|
|
+
|
|
|
/*
|
|
|
- * Parse username for domain
|
|
|
+ * Parse username for user and domain parts
|
|
|
*/
|
|
|
-static inline void parse_domain(struct dig_cred* _c)
|
|
|
+static inline void parse_username(struct username* _u)
|
|
|
{
|
|
|
char* d;
|
|
|
|
|
|
- if (_c->username.len <= 2) return;
|
|
|
+ _u->user = _u->whole;
|
|
|
+ if (_u->whole.len <= 2) return;
|
|
|
|
|
|
- d = q_memchr(_c->username.s, '@', _c->username.len);
|
|
|
+ d = q_memchr(_u->whole.s, '@', _u->whole.len);
|
|
|
|
|
|
if (d) {
|
|
|
- _c->domain.s = d;
|
|
|
- _c->domain.len = _c->username.len - (d - _c->username.s) - 1;
|
|
|
- _c->username.len = d - _c->username.s;
|
|
|
+ _u->domain.s = d;
|
|
|
+ _u->domain.len = _u->whole.len - (d - _u->whole.s) - 1;
|
|
|
+ _u->user.len = d - _u->user.s;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
/*
|
|
|
* Parse Digest credentials parameter, one by one
|
|
@@ -325,9 +322,7 @@ static inline int parse_digest_params(str* _s, dig_cred_t* _c)
|
|
|
parse_algorithm(&(_c->alg));
|
|
|
}
|
|
|
|
|
|
-#ifdef DIGEST_DOMAIN
|
|
|
- parse_domain(_c);
|
|
|
-#endif
|
|
|
+ parse_username(&_c->username);
|
|
|
|
|
|
return 0;
|
|
|
}
|