@item
Finish all SP protocol related goroutines, less memory leak.
+@item
+SP protocol generates less socket write calls, thus generating less TCP
+packets.
+
@end itemize
@node Release 5.2.1
func MarshalSP(typ SPType, sp interface{}) []byte {
var buf bytes.Buffer
- var err error
- if _, err = xdr.Marshal(&buf, SPHead{typ}); err != nil {
+ if _, err := xdr.Marshal(&buf, SPHead{typ}); err != nil {
panic(err)
}
- if _, err = xdr.Marshal(&buf, sp); err != nil {
+ if _, err := xdr.Marshal(&buf, sp); err != nil {
panic(err)
}
return buf.Bytes()
isDead chan struct{}
listOnly bool
onlyPkts map[[32]byte]bool
+ writeSPBuf bytes.Buffer
sync.RWMutex
}
}
func (state *SPState) WriteSP(dst io.Writer, payload []byte) error {
- n, err := xdr.Marshal(dst, SPRaw{Magic: MagicNNCPLv1, Payload: payload})
- if err == nil {
+ state.writeSPBuf.Reset()
+ n, err := xdr.Marshal(&state.writeSPBuf, SPRaw{
+ Magic: MagicNNCPLv1,
+ Payload: payload,
+ })
+ if err != nil {
+ return err
+ }
+ if n, err = dst.Write(state.writeSPBuf.Bytes()); err == nil {
state.TxLastSeen = time.Now()
state.TxBytes += int64(n)
}