Fix handling error on invalid URL
This commit is contained in:
parent
9636023787
commit
fde0595744
@ -178,6 +178,7 @@ func (self *Server) Serve(listener net.Listener) error {
|
|||||||
if Debug {
|
if Debug {
|
||||||
fmt.Println("rtmp: server: client closed err:", err)
|
fmt.Println("rtmp: server: client closed err:", err)
|
||||||
}
|
}
|
||||||
|
conn.Close()
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -190,6 +191,7 @@ func (self *Server) Close() {
|
|||||||
close(self.doneChan)
|
close(self.doneChan)
|
||||||
|
|
||||||
self.listener.Close()
|
self.listener.Close()
|
||||||
|
self.listener = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -398,7 +400,7 @@ func getTcUrl(u *url.URL) string {
|
|||||||
return nu.String()
|
return nu.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func createURL(tcurl, app, play string) (u *url.URL) {
|
func createURL(tcurl, app, play string) (*url.URL, error) {
|
||||||
ps := strings.Split(app+"/"+play, "/")
|
ps := strings.Split(app+"/"+play, "/")
|
||||||
out := []string{""}
|
out := []string{""}
|
||||||
for _, s := range ps {
|
for _, s := range ps {
|
||||||
@ -410,7 +412,11 @@ func createURL(tcurl, app, play string) (u *url.URL) {
|
|||||||
out = append(out, "")
|
out = append(out, "")
|
||||||
}
|
}
|
||||||
path := strings.Join(out, "/")
|
path := strings.Join(out, "/")
|
||||||
u, _ = url.ParseRequestURI(path)
|
|
||||||
|
u, err := url.ParseRequestURI(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if tcurl != "" {
|
if tcurl != "" {
|
||||||
tu, _ := url.Parse(tcurl)
|
tu, _ := url.Parse(tcurl)
|
||||||
@ -419,7 +425,8 @@ func createURL(tcurl, app, play string) (u *url.URL) {
|
|||||||
u.Scheme = tu.Scheme
|
u.Scheme = tu.Scheme
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
|
return u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var CodecTypes = flv.CodecTypes
|
var CodecTypes = flv.CodecTypes
|
||||||
@ -553,7 +560,13 @@ func (self *Conn) readConnect() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
self.URL = createURL(tcurl, connectpath, publishpath)
|
u, uerr := createURL(tcurl, connectpath, publishpath)
|
||||||
|
if uerr != nil {
|
||||||
|
err = fmt.Errorf("invalid URL: %w", uerr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
self.URL = u
|
||||||
self.publishing = true
|
self.publishing = true
|
||||||
self.reading = true
|
self.reading = true
|
||||||
self.stage++
|
self.stage++
|
||||||
@ -599,7 +612,13 @@ func (self *Conn) readConnect() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
self.URL = createURL(tcurl, connectpath, playpath)
|
u, uerr := createURL(tcurl, connectpath, playpath)
|
||||||
|
if uerr != nil {
|
||||||
|
err = fmt.Errorf("invalid URL: %w", uerr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
self.URL = u
|
||||||
self.playing = true
|
self.playing = true
|
||||||
self.writing = true
|
self.writing = true
|
||||||
self.stage++
|
self.stage++
|
||||||
|
Loading…
x
Reference in New Issue
Block a user