fixed parser bug when handling empty strings, added empty string check to email alarm
This commit is contained in:
parent
2d99960f06
commit
3a4317f3a9
@ -44,6 +44,9 @@ func (a *AlarmEmail) Parse(tk string) (bool, error) {
|
||||
case "smtp":
|
||||
a.state = TK_SMTP
|
||||
default:
|
||||
if len(a.To) < 1 {
|
||||
return false, fmt.Errorf("email alarm requires to address")
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
@ -56,6 +59,9 @@ func (a *AlarmEmail) Parse(tk string) (bool, error) {
|
||||
a.state = TK_NONE
|
||||
|
||||
case TK_TO:
|
||||
if strings.TrimSpace(tk) == "" {
|
||||
return false, fmt.Errorf("to address cannot be empty")
|
||||
}
|
||||
a.To = append(a.To, tk)
|
||||
a.state = TK_NONE
|
||||
|
||||
|
@ -276,7 +276,7 @@ func (p *Parser) Split(data []byte, atEOF bool) (int, []byte, error) {
|
||||
|
||||
for i := 0; i < len(data); i++ {
|
||||
c := data[i]
|
||||
// fmt.Printf("%c (%t) (%t)\n", c, started, ignoreline)
|
||||
//fmt.Printf("%c (%t) (%t)\n", c, started, ignoreline)
|
||||
switch c {
|
||||
case '\f', '\n', '\r':
|
||||
p.Line++
|
||||
@ -292,10 +292,17 @@ func (p *Parser) Split(data []byte, atEOF bool) (int, []byte, error) {
|
||||
}
|
||||
|
||||
case '\'', '"', '`':
|
||||
if started && quote == c {
|
||||
// When the quote ends
|
||||
if quote == c {
|
||||
// if we've gotten data, return it
|
||||
if started {
|
||||
return i + 1, data[startidx:i], nil
|
||||
}
|
||||
// if we haven't return nothing
|
||||
return i + 1, []byte{}, nil
|
||||
}
|
||||
|
||||
// start a quoted string
|
||||
if !ignoreline && quote == 0 {
|
||||
quote = c
|
||||
}
|
||||
@ -314,6 +321,10 @@ func (p *Parser) Split(data []byte, atEOF bool) (int, []byte, error) {
|
||||
}
|
||||
|
||||
if atEOF {
|
||||
if quote != 0 {
|
||||
return 0, nil, fmt.Errorf("unterminated quote")
|
||||
}
|
||||
|
||||
if ignoreline {
|
||||
return len(data), nil, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user