Merge pull request #167 from cathugger/master
srnd: ensure clean XOVER output
This commit is contained in:
commit
0994940ae3
@ -550,6 +550,13 @@ func (self *nntpConnection) checkMIMEHeaderNoAuth(daemon *NNTPDaemon, hdr textpr
|
||||
return
|
||||
}
|
||||
|
||||
var overReplacer = strings.NewReplacer("\t", " ", "\n", " ", "\r", "", "\000", "")
|
||||
|
||||
// safeOver cleans string for OVER/XOVER output
|
||||
func safeOver(s string) string {
|
||||
return strings.TrimSpace(overReplacer.Replace(s))
|
||||
}
|
||||
|
||||
func (self *nntpConnection) handleLine(daemon *NNTPDaemon, code int, line string, conn *textproto.Conn) (err error) {
|
||||
parts := strings.Split(line, " ")
|
||||
var msgid string
|
||||
@ -914,7 +921,25 @@ func (self *nntpConnection) handleLine(daemon *NNTPDaemon, code int, line string
|
||||
for _, model := range models {
|
||||
if model != nil {
|
||||
if err == nil {
|
||||
io.WriteString(dw, fmt.Sprintf("%.6d\t%s\t\"%s\" <%s@%s>\t%s\t%s\t%s\r\n", model.NNTPID(), model.Subject(), model.Name(), model.Name(), model.Frontend(), model.Date(), model.MessageID(), model.Reference()))
|
||||
/*
|
||||
The first 8 fields MUST be the following, in order:
|
||||
"0" or article number (see below)
|
||||
Subject header content
|
||||
From header content
|
||||
Date header content
|
||||
Message-ID header content
|
||||
References header content
|
||||
:bytes metadata item
|
||||
:lines metadata item
|
||||
*/
|
||||
fmt.Fprintf(dw,
|
||||
"%.6d\t%s\t\"%s\" <%s@%s>\t%s\t%s\t%s\r\n",
|
||||
model.NNTPID(),
|
||||
safeOver(model.Subject()),
|
||||
safeOver(model.Name()), safeOver(model.Name()), safeOver(model.Frontend()),
|
||||
safeOver(model.Date()),
|
||||
safeOver(model.MessageID()),
|
||||
safeOver(model.Reference()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user