update
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"time"
|
||||
@@ -130,6 +132,7 @@ func WaitForFrame(conn net.Conn, resultChan chan<- FrameWithPayload) error {
|
||||
payload := make([]byte, frame.Length)
|
||||
_, err = conn.Read(payload)
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
return err
|
||||
}
|
||||
resultChan <- FrameWithPayload{
|
||||
@@ -169,21 +172,28 @@ func (c *Connection) Listen() (*GenericListener, error) {
|
||||
}
|
||||
|
||||
const (
|
||||
MaxCallDuration = 900 * time.Millisecond
|
||||
MaxCallDuration = 300 * time.Millisecond
|
||||
ListenerKeepalive = 5 * time.Second
|
||||
)
|
||||
|
||||
func (l *GenericListener) HandleConnection(conn net.Conn) {
|
||||
for !l.StopListener {
|
||||
ch := make(chan FrameWithPayload, 1)
|
||||
//conn.SetReadDeadline(time.Now().Add(MaxCallDuration))
|
||||
go WaitForFrame(conn, ch)
|
||||
frame := <-ch
|
||||
err := l.HandleFrame(conn, &frame)
|
||||
if err != nil {
|
||||
log.Fatalf("Error in handler: %v\n", err)
|
||||
}
|
||||
var err error
|
||||
var frame Frame
|
||||
b := bufio.NewReader(conn)
|
||||
for err != io.EOF {
|
||||
|
||||
err = binary.Read(b, binary.LittleEndian, &frame)
|
||||
|
||||
if err == nil && frame.IsValid() {
|
||||
payload := make([]byte, frame.Length)
|
||||
_, err = b.Read(payload)
|
||||
if err == nil {
|
||||
err = l.HandleFrame(conn, &FrameWithPayload{
|
||||
Frame: frame,
|
||||
Payload: payload,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user