break;
case CR:
state = sw_almost_done;
- s->arg_end = p;
break;
case LF:
- s->arg_end = p;
goto done;
default:
if (s->args.nelts <= 2) {
done:
s->buffer->pos = p + 1;
-
- if (s->arg_start) {
- arg = ngx_array_push(&s->args);
- if (arg == NULL) {
- return NGX_ERROR;
- }
- arg->len = s->arg_end - s->arg_start;
- arg->data = s->arg_start;
- s->arg_start = NULL;
- }
-
s->state = (s->command != NGX_POP3_AUTH) ? sw_start : sw_argument;
return NGX_OK;
invalid:
s->state = sw_invalid;
- s->arg_start = NULL;
/* skip invalid command till LF */
break;
case CR:
state = sw_almost_done;
- s->arg_end = p;
break;
case LF:
- s->arg_end = p;
goto done;
case '"':
if (s->args.nelts <= 2) {
done:
s->buffer->pos = p + 1;
-
- if (s->arg_start) {
- arg = ngx_array_push(&s->args);
- if (arg == NULL) {
- return NGX_ERROR;
- }
- arg->len = s->arg_end - s->arg_start;
- arg->data = s->arg_start;
-
- s->arg_start = NULL;
- s->cmd_start = NULL;
- s->quoted = 0;
- s->no_sync_literal = 0;
- s->literal_len = 0;
- }
-
s->state = (s->command != NGX_IMAP_AUTHENTICATE) ? sw_start : sw_argument;
return NGX_OK;
invalid:
s->state = sw_start;
- s->arg_start = NULL;
s->quoted = 0;
s->backslash = 0;
s->no_sync_literal = 0;
break;
case CR:
state = sw_almost_done;
- s->arg_end = p;
break;
case LF:
- s->arg_end = p;
goto done;
default:
if (s->args.nelts <= 10) {
done:
s->buffer->pos = p + 1;
-
- if (s->arg_start) {
- arg = ngx_array_push(&s->args);
- if (arg == NULL) {
- return NGX_ERROR;
- }
- arg->len = s->arg_end - s->arg_start;
- arg->data = s->arg_start;
- s->arg_start = NULL;
- }
-
s->state = (s->command != NGX_SMTP_AUTH) ? sw_start : sw_argument;
return NGX_OK;
invalid:
s->state = sw_invalid;
- s->arg_start = NULL;
/* skip invalid command till LF */