}
*result_r = USERDB_RESULT_OK;
- *reply_r = auth_stream_reply_init(request->pool);
+ *reply_r = auth_stream_reply_init_userdb(request->pool);
auth_stream_reply_import(*reply_r, value);
return TRUE;
}
{
struct userdb_module *module = request->userdb->userdb;
- request->userdb_reply = auth_stream_reply_init(request->pool);
+ request->userdb_reply = auth_stream_reply_init_userdb(request->pool);
auth_stream_reply_add(request->userdb_reply, NULL, request->user);
userdb_template_export(module->default_fields_tmpl, request);
struct auth_stream_reply {
string_t *str;
+ bool userdb;
};
struct auth_stream_reply *auth_stream_reply_init(pool_t pool)
return reply;
}
+struct auth_stream_reply *auth_stream_reply_init_userdb(pool_t pool)
+{
+ struct auth_stream_reply *reply;
+
+ reply = auth_stream_reply_init(pool);
+ reply->userdb = TRUE;
+ return reply;
+}
+
void auth_stream_reply_add(struct auth_stream_reply *reply,
const char *key, const char *value)
{
auth_stream_reply_find_area(struct auth_stream_reply *reply, const char *key,
unsigned int *idx_r, unsigned int *len_r)
{
- const char *str = str_c(reply->str);
- unsigned int i, start, key_len = strlen(key);
+ const char *p, *str = str_c(reply->str);
+ unsigned int i = 0, start, key_len = strlen(key);
+
+ if (reply->userdb) {
+ p = strchr(str, '\t');
+ if (p == NULL)
+ return FALSE;
+ i = p-str+1;
+ }
- i = 0;
while (str[i] != '\0') {
start = i;
for (; str[i] != '\0'; i++) {
struct auth_request;
struct auth_stream_reply *auth_stream_reply_init(pool_t pool);
+struct auth_stream_reply *auth_stream_reply_init_userdb(pool_t pool);
void auth_stream_reply_add(struct auth_stream_reply *reply,
const char *key, const char *value);
void auth_stream_reply_reset(struct auth_stream_reply *reply);