aboutsummaryrefslogtreecommitdiff
path: root/hotline
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2023-01-18 14:32:19 -0800
committerJeff Halter <868228+jhalter@users.noreply.github.com>2023-01-18 14:32:19 -0800
commit5890e1d2ea61f89a0dcc2f4e6b01c31991d2977f (patch)
tree2b3a4b5377f44f0899ee2757d0a523801cb063f1 /hotline
parentf6d10820df99ba533077581ae1201400260e7fb9 (diff)
Improve compatability of threaded news post and delete
Diffstat (limited to 'hotline')
-rw-r--r--hotline/transaction_handlers.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/hotline/transaction_handlers.go b/hotline/transaction_handlers.go
index 12b1d41..acc8fe4 100644
--- a/hotline/transaction_handlers.go
+++ b/hotline/transaction_handlers.go
@@ -1321,7 +1321,10 @@ func HandleDelNewsArt(cc *ClientConn, t *Transaction) (res []Transaction, err er
// 326 News article ID
// 337 News article – recursive delete Delete child articles (1) or not (0)
pathStrs := ReadNewsPath(t.GetField(fieldNewsPath).Data)
- ID := binary.BigEndian.Uint16(t.GetField(fieldNewsArtID).Data)
+ ID, err := byteToInt(t.GetField(fieldNewsArtID).Data)
+ if err != nil {
+ return res, err
+ }
// TODO: Delete recursive
cats := cc.Server.GetNewsCatByPath(pathStrs[:len(pathStrs)-1])
@@ -1359,13 +1362,21 @@ func HandlePostNewsArt(cc *ClientConn, t *Transaction) (res []Transaction, err e
catName := pathStrs[len(pathStrs)-1]
cat := cats[catName]
+ artID, err := byteToInt(t.GetField(fieldNewsArtID).Data)
+ if err != nil {
+ return res, err
+ }
+ convertedArtID := uint32(artID)
+ bs := make([]byte, 4)
+ binary.LittleEndian.PutUint32(bs, convertedArtID)
+
newArt := NewsArtData{
Title: string(t.GetField(fieldNewsArtTitle).Data),
Poster: string(cc.UserName),
Date: toHotlineTime(time.Now()),
PrevArt: []byte{0, 0, 0, 0},
NextArt: []byte{0, 0, 0, 0},
- ParentArt: append([]byte{0, 0}, t.GetField(fieldNewsArtID).Data...),
+ ParentArt: bs,
FirstChildArt: []byte{0, 0, 0, 0},
DataFlav: []byte("text/plain"),
Data: string(t.GetField(fieldNewsArtData).Data),
@@ -1389,9 +1400,9 @@ func HandlePostNewsArt(cc *ClientConn, t *Transaction) (res []Transaction, err e
}
// Update parent article with first child reply
- parentID := binary.BigEndian.Uint16(t.GetField(fieldNewsArtID).Data)
+ parentID := convertedArtID
if parentID != 0 {
- parentArt := cat.Articles[uint32(parentID)]
+ parentArt := cat.Articles[parentID]
if bytes.Equal(parentArt.FirstChildArt, []byte{0, 0, 0, 0}) {
binary.BigEndian.PutUint32(parentArt.FirstChildArt, nextID)