Merge pull request #7 from fildaw/master

Fixes with RTPRelay.go and actioncam.go
This commit is contained in:
Jonas Köritz 2021-04-27 10:47:09 +02:00 committed by GitHub
commit f4a985a822
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 61 additions and 55 deletions

View file

@ -71,6 +71,7 @@ func main() {
case sig := <-signalChannel:
log.Printf("Got signal %s, exiting...\n", sig)
cancel()
os.Exit(0)
}
}(cancel)

View file

@ -20,6 +20,8 @@ type RTPRelay struct {
context context.Context
}
var close bool
// CreateRTPRelay creates a UDP listener that handles live data
// from the camera and forwards it as an RTP stream
func CreateRTPRelay(ctx context.Context, targetAddress net.IP, targetPort int) *RTPRelay {
@ -29,7 +31,9 @@ func CreateRTPRelay(ctx context.Context, targetAddress net.IP, targetPort int) *
log.Printf("ERROR: %s\n", err)
}
close = false
relay := RTPRelay{
close: false,
targetIP: targetAddress,
targetPort: targetPort,
listener: conn,
@ -66,7 +70,7 @@ func handleCameraStream(relay RTPRelay, conn net.PacketConn) {
frameBuffer := bytes.Buffer{}
packetBuffer := bytes.Buffer{}
T:
for {
conn.SetReadDeadline(time.Now().Add(10 * time.Second))
@ -75,12 +79,12 @@ func handleCameraStream(relay RTPRelay, conn net.PacketConn) {
log.Println("Context Done")
rtpConn.Close()
relay.listener.Close()
break
break T
default:
if relay.close {
if close {
rtpConn.Close()
relay.listener.Close()
break
break T
}
conn.ReadFrom(buffer)
@ -136,6 +140,7 @@ func handleCameraStream(relay RTPRelay, conn net.PacketConn) {
// Stop stops listening for packets
func (r *RTPRelay) Stop() {
r.listener.Close()
close = true
r.close = true
r.listener.Close()
}