From 4eff566a73b807f303b665f0a90039f0e8bd0c54 Mon Sep 17 00:00:00 2001 From: saxon Date: Mon, 23 Jul 2018 00:14:23 +0930 Subject: [PATCH] Started writing handshake function - program currently still buildable --- rtmp/rtmp.go | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/rtmp/rtmp.go b/rtmp/rtmp.go index 69b78689..754a981d 100644 --- a/rtmp/rtmp.go +++ b/rtmp/rtmp.go @@ -130,6 +130,8 @@ const ( RTMP_BUFFER_CACHE_SIZE = (16 * 1024) RTMP_CHANNELS = 65600 RTMP_SWF_HASHLEN = 32 + RTMP_SIG_SIZE = 1536 + RTMP_LARGE_HEADER_SIZE = 12 ) const ( @@ -632,14 +634,12 @@ func rtmpConnect(r *C.RTMP, cp *C.RTMPPacket) int { } } - // TODO: port this if rtmpConnect0(r, (*C.sockaddr)(unsafe.Pointer(&service))) == 0 { return 0 } r.m_bSendCounter = 1 - // TODO: port this return int(rtmpConnect1(r, cp)) } @@ -690,6 +690,7 @@ func rtmpConnect1(r *C.RTMP, cp *C.RTMPPacket) int { if debugMode { log.Println("... connected, handshaking...") } + // TODO: port this if C.HandShake(r, 1) == 0 { log.Println("rtmpConnect1: handshake failed!") return 0 @@ -698,6 +699,7 @@ func rtmpConnect1(r *C.RTMP, cp *C.RTMPPacket) int { log.Println("... handshaked...") } + // TODO: port this if C.SendConnectPacket(r, cp) == 0 { log.Println("RTMP connect failed!") return 0 @@ -705,6 +707,35 @@ func rtmpConnect1(r *C.RTMP, cp *C.RTMPPacket) int { return 1 } +// TODO: complete this + +/* +func handShake(r *C.RTMP, FP9HandShake int32) int { + var i, bMatch int + var uptime, suptime uint32 + var typ byte + // TODO: port this const + var clientbuf [RTMP_SIG_SIZE + 1]byte + clientsig := (*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&clientbuf[0])) + + uintptr(1))) + var serversig [RTMP_SIG_SIZE]byte + + clientbuf[0] = 0x03 // not encrypted + + // TODO: port rtmp_getTime + uptime = inet.Htonl(uint32(C.RTMP_GetTime())) + memmove(unsafe.Pointer(clientsig), unsafe.Pointer(&uptime), 4) + + memset(indxBytePtr(unsafe.Pointer(clientsig), 4), 0, 4) + + for i := 8; i < RTMP_SIG_SIZE; i++ { + *indxBytePtr(unsafe.Pointer(clientsig), i) = byte(rand.Intn(256)) + } + +} + +*/ + func rtmpConnectStream(r *C.RTMP, seekTime int32) int { var packet C.RTMPPacket