Retry post to pastebin for 3 times

This commit is contained in:
Zero King
2017-07-11 10:19:29 +00:00
parent d587b99300
commit 63851524ff
+37 -35
View File
@@ -43,42 +43,44 @@ func (r *remoteLogger) run() {
r.parent.LogTextChan <- &LogText{FieldName: "", Text: nil}
return
}
fileInfo, err := os.Stat(logBigFile.Filename)
if err != nil {
// TODO: print err in log
continue
for i := 1; i < 3; i++ {
fileInfo, err := os.Stat(logBigFile.Filename)
if err != nil {
// TODO: print err in log
break
}
file, err := os.Open(logBigFile.Filename)
if err != nil {
break
}
buf := new(bytes.Buffer)
mimeWriter := multipart.NewWriter(buf)
writer, err := mimeWriter.CreateFormField("paste")
if err != nil {
break
}
// Max 8 MiB
if fileSize := fileInfo.Size(); fileSize > 8*1024*1024 {
file.Seek(fileSize-8*1024*1024, 0)
}
io.Copy(writer, file)
file.Close()
mimeWriter.Close()
resp, err := r.httpClient.Post(pasteURL.String(), mimeWriter.FormDataContentType(), buf)
if err != nil {
continue
}
loc := resp.Header.Get("Location")
if loc == "" {
continue
}
u, err := pasteURL.Parse(loc)
if err != nil {
break
}
GlobalLogger.LogTextChan <- &LogText{logBigFile.FieldName + "-pastebin", []byte(u.String())}
break
}
file, err := os.Open(logBigFile.Filename)
if err != nil {
continue
}
buf := new(bytes.Buffer)
mimeWriter := multipart.NewWriter(buf)
writer, err := mimeWriter.CreateFormField("paste")
if err != nil {
continue
}
// Max 8 MiB
if fileSize := fileInfo.Size(); fileSize > 8*1024*1024 {
file.Seek(fileSize-8*1024*1024, 0)
}
io.Copy(writer, file)
file.Close()
mimeWriter.Close()
resp, err := r.httpClient.Post(pasteURL.String(), mimeWriter.FormDataContentType(), buf)
if err != nil {
continue
}
// TODO: retry 3 times
loc := resp.Header.Get("Location")
if loc == "" {
continue
}
u, err := pasteURL.Parse(loc)
if err != nil {
continue
}
GlobalLogger.LogTextChan <- &LogText{logBigFile.FieldName + "-pastebin", []byte(u.String())}
}
}
}