(i_isalnum(*parser->cur) || *parser->cur == '-'))
parser->cur++;
- if (key_r != NULL)
- *key_r = p_strdup_until(parser->pool, pbegin, parser->cur);
+ *key_r = p_strdup_until(parser->pool, pbegin, parser->cur);
if (parser->cur >= parser->end) {
- if (params_r != NULL)
- *params_r = p_new(parser->pool, const char *, 1);
+ *params_r = p_new(parser->pool, const char *, 1);
return 1;
}
if (*parser->cur != ' ') {
parser->cur++;
pbegin = parser->cur;
- if (params_r != NULL)
- p_array_init(¶ms, parser->pool, 32);
+ p_array_init(¶ms, parser->pool, 32);
while (parser->cur < parser->end) {
if (*parser->cur == ' ') {
if (parser->cur+1 >= parser->end ||
"Missing EHLO parameter after ' '";
return -1;
}
- if (params_r != NULL) {
- param = p_strdup_until(parser->pool, pbegin,
- parser->cur);
- array_push_back(¶ms, ¶m);
- }
+ param = p_strdup_until(parser->pool, pbegin,
+ parser->cur);
+ array_push_back(¶ms, ¶m);
pbegin = parser->cur + 1;
} else if (!smtp_char_is_ehlo_param(*parser->cur)) {
parser->error =
parser->cur++;
}
- if (params_r != NULL) {
- param = p_strdup_until(parser->pool, pbegin, parser->cur);
- array_push_back(¶ms, ¶m);
- array_append_zero(¶ms);
- *params_r = array_front(¶ms);
- }
+ param = p_strdup_until(parser->pool, pbegin, parser->cur);
+ array_push_back(¶ms, ¶m);
+ array_append_zero(¶ms);
+ *params_r = array_front(¶ms);
return 1;
}
{
struct smtp_parser parser;
+ *key_r = NULL;
+ *params_r = NULL;
+ *error_r = NULL;
+
if (ehlo_line == NULL || *ehlo_line == '\0') {
- if (error_r != NULL)
- *error_r = "Parameter is empty";
+ *error_r = "Parameter is empty";
return -1;
}
smtp_parser_init(&parser, pool_datastack_create(), ehlo_line);
if (smtp_parse_ehlo_line(&parser, key_r, params_r) <= 0) {
- if (error_r != NULL)
- *error_r = parser.error;
+ *error_r = parser.error;
return -1;
}
return 1;