aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spdu/spdu.go (renamed from tde/tde.go)13
1 files changed, 11 insertions, 2 deletions
diff --git a/tde/tde.go b/spdu/spdu.go
index 93b6010..688d5b4 100644
--- a/tde/tde.go
+++ b/spdu/spdu.go
@@ -1,17 +1,26 @@
-package tde
+// SPDU (Session Protocol Data Unit)
+package spdu
import (
"encoding/binary"
+ "errors"
"io"
"net"
)
-const maxLen = 240 // max PDU len incl. header
+// |<-- 2 octets -->|<-- maximum 240 octets -->|
+// | header | acse/rose pdu |
+// | big endian | |
+
+const maxLen = 240 // max PDU size
type Conn struct{ net.Conn }
func (c Conn) Write(p []byte) (n int, err error) {
size := uint16(len(p))
+ if size > maxLen {
+ return 0, errors.New("PDU too big")
+ }
if err := binary.Write(c.Conn, binary.BigEndian, size); err != nil {
return 0, err
}