Browse Source

add new arguments --read-timeout and --write-timeout

pull/31/head
aler9 5 years ago
parent
commit
dc52266a70
  1. 2
      README.md
  2. 17
      main.go
  3. 4
      server-client.go
  4. 2
      server-udpl.go

2
README.md

@ -73,6 +73,8 @@ Flags:
--rtsp-port=8554 port of the RTSP TCP listener --rtsp-port=8554 port of the RTSP TCP listener
--rtp-port=8000 port of the RTP UDP listener --rtp-port=8000 port of the RTP UDP listener
--rtcp-port=8001 port of the RTCP UDP listener --rtcp-port=8001 port of the RTCP UDP listener
--read-timeout=5s timeout for read operations
--write-timeout=5s timeout for write operations
--publish-user="" optional username required to publish --publish-user="" optional username required to publish
--publish-pass="" optional password required to publish --publish-pass="" optional password required to publish
--pre-script="" optional script to run on client connect --pre-script="" optional script to run on client connect

17
main.go

@ -13,11 +13,6 @@ import (
var Version string = "v0.0.0" var Version string = "v0.0.0"
const (
_READ_TIMEOUT = 5 * time.Second
_WRITE_TIMEOUT = 5 * time.Second
)
type trackFlow int type trackFlow int
const ( const (
@ -50,6 +45,8 @@ type args struct {
rtspPort int rtspPort int
rtpPort int rtpPort int
rtcpPort int rtcpPort int
readTimeout time.Duration
writeTimeout time.Duration
publishUser string publishUser string
publishPass string publishPass string
preScript string preScript string
@ -77,6 +74,12 @@ func newProgram(args args) (*program, error) {
if args.rtcpPort == 0 { if args.rtcpPort == 0 {
args.rtcpPort = 8001 args.rtcpPort = 8001
} }
if args.readTimeout == time.Duration(0) {
args.readTimeout = 5 * time.Second
}
if args.writeTimeout == time.Duration(0) {
args.writeTimeout = 5 * time.Second
}
if args.version == true { if args.version == true {
fmt.Println("rtsp-simple-server " + Version) fmt.Println("rtsp-simple-server " + Version)
@ -170,6 +173,8 @@ func main() {
argRtspPort := kingpin.Flag("rtsp-port", "port of the RTSP TCP listener").Default("8554").Int() argRtspPort := kingpin.Flag("rtsp-port", "port of the RTSP TCP listener").Default("8554").Int()
argRtpPort := kingpin.Flag("rtp-port", "port of the RTP UDP listener").Default("8000").Int() argRtpPort := kingpin.Flag("rtp-port", "port of the RTP UDP listener").Default("8000").Int()
argRtcpPort := kingpin.Flag("rtcp-port", "port of the RTCP UDP listener").Default("8001").Int() argRtcpPort := kingpin.Flag("rtcp-port", "port of the RTCP UDP listener").Default("8001").Int()
argReadTimeout := kingpin.Flag("read-timeout", "timeout for read operations").Default("5s").Duration()
argWriteTimeout := kingpin.Flag("write-timeout", "timeout for write operations").Default("5s").Duration()
argPublishUser := kingpin.Flag("publish-user", "optional username required to publish").Default("").String() argPublishUser := kingpin.Flag("publish-user", "optional username required to publish").Default("").String()
argPublishPass := kingpin.Flag("publish-pass", "optional password required to publish").Default("").String() argPublishPass := kingpin.Flag("publish-pass", "optional password required to publish").Default("").String()
argPreScript := kingpin.Flag("pre-script", "optional script to run on client connect").Default("").String() argPreScript := kingpin.Flag("pre-script", "optional script to run on client connect").Default("").String()
@ -183,6 +188,8 @@ func main() {
rtspPort: *argRtspPort, rtspPort: *argRtspPort,
rtpPort: *argRtpPort, rtpPort: *argRtpPort,
rtcpPort: *argRtcpPort, rtcpPort: *argRtcpPort,
readTimeout: *argReadTimeout,
writeTimeout: *argWriteTimeout,
publishUser: *argPublishUser, publishUser: *argPublishUser,
publishPass: *argPublishPass, publishPass: *argPublishPass,
preScript: *argPreScript, preScript: *argPreScript,

4
server-client.go

@ -122,8 +122,8 @@ func newServerClient(p *program, nconn net.Conn) *serverClient {
p: p, p: p,
conn: gortsplib.NewConnServer(gortsplib.ConnServerConf{ conn: gortsplib.NewConnServer(gortsplib.ConnServerConf{
NConn: nconn, NConn: nconn,
ReadTimeout: _READ_TIMEOUT, ReadTimeout: p.args.readTimeout,
WriteTimeout: _WRITE_TIMEOUT, WriteTimeout: p.args.writeTimeout,
}), }),
state: _CLIENT_STATE_STARTING, state: _CLIENT_STATE_STARTING,
write: make(chan *gortsplib.InterleavedFrame), write: make(chan *gortsplib.InterleavedFrame),

2
server-udpl.go

@ -52,7 +52,7 @@ func (l *serverUdpListener) log(format string, args ...interface{}) {
func (l *serverUdpListener) run() { func (l *serverUdpListener) run() {
go func() { go func() {
for w := range l.write { for w := range l.write {
l.nconn.SetWriteDeadline(time.Now().Add(_WRITE_TIMEOUT)) l.nconn.SetWriteDeadline(time.Now().Add(l.p.args.writeTimeout))
l.nconn.WriteTo(w.buf, w.addr) l.nconn.WriteTo(w.buf, w.addr)
} }
}() }()

Loading…
Cancel
Save