mirror of
https://tildegit.org/solderpunk/molly-brown
synced 2024-05-13 04:26:03 +02:00
Set 30 second deadline for reading requests. See #35.
This commit is contained in:
parent
c4866d2965
commit
4b54eb6134
17
handler.go
17
handler.go
|
@ -204,17 +204,28 @@ func handleGeminiRequest(conn net.Conn, sysConfig SysConfig, config UserConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
func readRequest(conn net.Conn, logEntry *LogEntry) (*url.URL, error) {
|
func readRequest(conn net.Conn, logEntry *LogEntry) (*url.URL, error) {
|
||||||
|
err := conn.SetReadDeadline(time.Now().Add(30 * time.Second))
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error setting read deadline: " + err.Error())
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
reader := bufio.NewReaderSize(conn, 1024)
|
reader := bufio.NewReaderSize(conn, 1024)
|
||||||
request, overflow, err := reader.ReadLine()
|
request, overflow, err := reader.ReadLine()
|
||||||
|
|
||||||
if overflow {
|
if overflow {
|
||||||
conn.Write([]byte("59 Request too long!\r\n"))
|
conn.Write([]byte("59 Request too long!\r\n"))
|
||||||
logEntry.Status = 59
|
logEntry.Status = 59
|
||||||
return nil, errors.New("Request too long")
|
return nil, errors.New("Request too long")
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
log.Println("Error reading request from " + conn.RemoteAddr().String() + ": " + err.Error())
|
if errors.Is(err, os.ErrDeadlineExceeded) {
|
||||||
conn.Write([]byte("40 Unknown error reading request!\r\n"))
|
conn.Write([]byte("40 Request timed out!\r\n"))
|
||||||
|
} else {
|
||||||
|
log.Println("Error reading request from " + conn.RemoteAddr().String() + ": " + err.Error())
|
||||||
|
conn.Write([]byte("40 Unknown error reading request!\r\n"))
|
||||||
|
}
|
||||||
logEntry.Status = 40
|
logEntry.Status = 40
|
||||||
return nil, errors.New("Error reading request")
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse request as URL
|
// Parse request as URL
|
||||||
|
|
Loading…
Reference in New Issue