Mercurial > hg > nginx-quic
comparison src/imap/ngx_imap_handler.c @ 1108:109e8c7d7cc1
return error for too long commands
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 14 Feb 2007 20:45:19 +0000 |
parents | db7c468c447d |
children | b0fc4af1f196 |
comparison
equal
deleted
inserted
replaced
1107:db7c468c447d | 1108:109e8c7d7cc1 |
---|---|
1210 static ngx_int_t | 1210 static ngx_int_t |
1211 ngx_imap_read_command(ngx_imap_session_t *s) | 1211 ngx_imap_read_command(ngx_imap_session_t *s) |
1212 { | 1212 { |
1213 ssize_t n; | 1213 ssize_t n; |
1214 ngx_int_t rc; | 1214 ngx_int_t rc; |
1215 ngx_str_t l; | |
1215 | 1216 |
1216 n = s->connection->recv(s->connection, s->buffer->last, | 1217 n = s->connection->recv(s->connection, s->buffer->last, |
1217 s->buffer->end - s->buffer->last); | 1218 s->buffer->end - s->buffer->last); |
1218 | 1219 |
1219 if (n == NGX_ERROR || n == 0) { | 1220 if (n == NGX_ERROR || n == 0) { |
1238 rc = ngx_pop3_parse_command(s); | 1239 rc = ngx_pop3_parse_command(s); |
1239 } else { | 1240 } else { |
1240 rc = ngx_imap_parse_command(s); | 1241 rc = ngx_imap_parse_command(s); |
1241 } | 1242 } |
1242 | 1243 |
1243 if (rc == NGX_AGAIN | 1244 if (rc == NGX_AGAIN) { |
1244 || rc == NGX_IMAP_NEXT | 1245 |
1245 || rc == NGX_IMAP_PARSE_INVALID_COMMAND) | 1246 if (s->buffer->last < s->buffer->end) { |
1246 { | 1247 return rc; |
1248 } | |
1249 | |
1250 l.len = s->buffer->last - s->buffer->start; | |
1251 l.data = s->buffer->start; | |
1252 | |
1253 ngx_log_error(NGX_LOG_INFO, s->connection->log, 0, | |
1254 "client sent too long command \"%V\"", &l); | |
1255 | |
1256 return NGX_IMAP_PARSE_INVALID_COMMAND; | |
1257 } | |
1258 | |
1259 if (rc == NGX_IMAP_NEXT || rc == NGX_IMAP_PARSE_INVALID_COMMAND) { | |
1247 return rc; | 1260 return rc; |
1248 } | 1261 } |
1249 | 1262 |
1250 if (rc == NGX_ERROR) { | 1263 if (rc == NGX_ERROR) { |
1251 ngx_imap_close_connection(s->connection); | 1264 ngx_imap_close_connection(s->connection); |