const char *name)
{
const unsigned char *data;
- size_t name_len;
+ size_t name_len, data_len;
if (cmd->data == NULL)
return FALSE;
- data = cmd->data->data;
name_len = strlen(name);
- if (cmd->data->used < name_len ||
+ data = cmd->data->data;
+ data_len = cmd->data->used;
+
+ if (cmd->state >= SMTP_CLIENT_COMMAND_STATE_SUBMITTED) {
+ /* ignore CRLF, which is added at command submission */
+ i_assert(data_len >= 2);
+ data_len -= 2;
+ }
+
+ if (data_len < name_len ||
i_memcasecmp(data, name, name_len) != 0)
return FALSE;
- return (cmd->data->used == name_len ||
- data[name_len] == ' ');
+ return (data_len == name_len || data[name_len] == ' ');
}
void smtp_client_command_lock(struct smtp_client_command *cmd)