Fix response with empty producer
This commit is contained in:
@@ -9,8 +9,6 @@ import (
|
|||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Init() {
|
func Init() {
|
||||||
@@ -39,9 +37,7 @@ func Init() {
|
|||||||
|
|
||||||
HandleFunc("/api/frame.mp4", frameHandler)
|
HandleFunc("/api/frame.mp4", frameHandler)
|
||||||
HandleFunc("/api/frame.raw", frameHandler)
|
HandleFunc("/api/frame.raw", frameHandler)
|
||||||
HandleFunc("/api/stack", stackHandler)
|
|
||||||
HandleFunc("/api/streams", streamsHandler)
|
HandleFunc("/api/streams", streamsHandler)
|
||||||
HandleFunc("/api/exit", exitHandler)
|
|
||||||
HandleFunc("/api/ws", apiWS)
|
HandleFunc("/api/ws", apiWS)
|
||||||
|
|
||||||
// ensure we can listen without errors
|
// ensure we can listen without errors
|
||||||
@@ -99,12 +95,6 @@ func streamsHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func exitHandler(w http.ResponseWriter, r *http.Request) {
|
|
||||||
s := r.URL.Query().Get("code")
|
|
||||||
code, _ := strconv.Atoi(s)
|
|
||||||
os.Exit(code)
|
|
||||||
}
|
|
||||||
|
|
||||||
func apiWS(w http.ResponseWriter, r *http.Request) {
|
func apiWS(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := new(Context)
|
ctx := new(Context)
|
||||||
if err := ctx.Upgrade(w, r); err != nil {
|
if err := ctx.Upgrade(w, r); err != nil {
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package debug
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/AlexxIT/go2rtc/cmd/api"
|
||||||
|
"github.com/AlexxIT/go2rtc/cmd/streams"
|
||||||
|
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Init() {
|
||||||
|
api.HandleFunc("/api/stack", stackHandler)
|
||||||
|
api.HandleFunc("/api/exit", exitHandler)
|
||||||
|
|
||||||
|
streams.HandleFunc("null", nullHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func exitHandler(_ http.ResponseWriter, r *http.Request) {
|
||||||
|
s := r.URL.Query().Get("code")
|
||||||
|
code, _ := strconv.Atoi(s)
|
||||||
|
os.Exit(code)
|
||||||
|
}
|
||||||
|
|
||||||
|
func nullHandler(string) (streamer.Producer, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package api
|
package debug
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@@ -29,7 +29,7 @@ func (p *Producer) GetMedias() []*streamer.Media {
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
p.element, err = GetProducer(p.url)
|
p.element, err = GetProducer(p.url)
|
||||||
if err != nil {
|
if err != nil || p.element == nil {
|
||||||
log.Error().Err(err).Str("url", p.url).Msg("[streams] probe producer")
|
log.Error().Err(err).Str("url", p.url).Msg("[streams] probe producer")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package streams
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ func (s *Stream) AddConsumer(cons streamer.Consumer) (err error) {
|
|||||||
|
|
||||||
// can't match tracks for consumer
|
// can't match tracks for consumer
|
||||||
if len(consumer.tracks) == 0 {
|
if len(consumer.tracks) == 0 {
|
||||||
return nil
|
return errors.New("couldn't find the matching tracks")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.consumers = append(s.consumers, consumer)
|
s.consumers = append(s.consumers, consumer)
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ func offerHandler(ctx *api.Context, msg *streamer.Message) {
|
|||||||
// 2. AddConsumer, so we get new tracks
|
// 2. AddConsumer, so we get new tracks
|
||||||
if err = stream.AddConsumer(conn); err != nil {
|
if err = stream.AddConsumer(conn); err != nil {
|
||||||
log.Warn().Err(err).Msg("[api.webrtc] add consumer")
|
log.Warn().Err(err).Msg("[api.webrtc] add consumer")
|
||||||
|
_ = conn.Conn.Close()
|
||||||
ctx.Error(err)
|
ctx.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"github.com/AlexxIT/go2rtc/cmd/api"
|
"github.com/AlexxIT/go2rtc/cmd/api"
|
||||||
"github.com/AlexxIT/go2rtc/cmd/app"
|
"github.com/AlexxIT/go2rtc/cmd/app"
|
||||||
|
"github.com/AlexxIT/go2rtc/cmd/debug"
|
||||||
"github.com/AlexxIT/go2rtc/cmd/exec"
|
"github.com/AlexxIT/go2rtc/cmd/exec"
|
||||||
"github.com/AlexxIT/go2rtc/cmd/ffmpeg"
|
"github.com/AlexxIT/go2rtc/cmd/ffmpeg"
|
||||||
"github.com/AlexxIT/go2rtc/cmd/hass"
|
"github.com/AlexxIT/go2rtc/cmd/hass"
|
||||||
@@ -33,6 +34,7 @@ func main() {
|
|||||||
mse.Init()
|
mse.Init()
|
||||||
|
|
||||||
ngrok.Init()
|
ngrok.Init()
|
||||||
|
debug.Init()
|
||||||
|
|
||||||
sigs := make(chan os.Signal, 1)
|
sigs := make(chan os.Signal, 1)
|
||||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|||||||
Reference in New Issue
Block a user