Fix short write in metadata injector.
parent
69147a81b3
commit
78f280e743
|
@ -39,22 +39,23 @@ func (mi *MetadataInjector) writeMetadata() (n int, err error) {
|
|||
|
||||
func (mi *MetadataInjector) Write(data []byte) (n int, err error) {
|
||||
for n < len(data) {
|
||||
restLen := len(data) - n
|
||||
toWrite := mi.MetadataInterval - mi.offset
|
||||
if toWrite > restLen {
|
||||
toWrite = restLen
|
||||
}
|
||||
|
||||
if toWrite <= 0 {
|
||||
_, cerr := mi.writeMetadata()
|
||||
//n += cn
|
||||
if cerr != nil {
|
||||
err = cerr
|
||||
_, err = mi.writeMetadata()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
mi.offset = 0
|
||||
// toWrite = mi.MetadataInterval
|
||||
continue
|
||||
}
|
||||
|
||||
outBytes := make([]byte, toWrite)
|
||||
copy(outBytes, data[mi.offset:mi.offset+toWrite])
|
||||
copy(outBytes, data[n:n+toWrite])
|
||||
cn, cerr := mi.Writer.Write(outBytes)
|
||||
n += cn
|
||||
mi.offset += cn
|
||||
|
|
|
@ -73,11 +73,23 @@ func (instance *pluginInstance) Init() {
|
|||
if sendMetadata {
|
||||
mw = streams.NewMetadataInjector(w, metaInt)
|
||||
nw = mw
|
||||
|
||||
metadataChan := channel.Metadata()
|
||||
defer close(metadataChan)
|
||||
go func() {
|
||||
for metadata := range metadataChan {
|
||||
metadataToWrite := streams.Metadata{}
|
||||
if value, ok := metadata["StreamTitle"]; ok {
|
||||
metadataToWrite["StreamTitle"] = value
|
||||
}
|
||||
mw.SetMetadata(metadataToWrite)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
_, err := io.Copy(nw, sr)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
log.Println("copying stream to output failed:", err)
|
||||
}
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in New Issue