mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 07:24:01 +03:00
Set buffer sizes to sockets
This commit is contained in:
+14
-3
@@ -12,11 +12,22 @@ import (
|
|||||||
"github.com/9seconds/mtg/wrappers"
|
"github.com/9seconds/mtg/wrappers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const handshakeTimeout = 10 * time.Second
|
const (
|
||||||
|
handshakeTimeout = 10 * time.Second
|
||||||
|
readBufferSize = 64 * 1024
|
||||||
|
writeBufferSize = 64 * 1024
|
||||||
|
)
|
||||||
|
|
||||||
func DirectInit(socket net.Conn, connID string, conf *config.Config) (wrappers.Wrap, *mtproto.ConnectionOpts, error) {
|
func DirectInit(socket net.Conn, connID string, conf *config.Config) (wrappers.Wrap, *mtproto.ConnectionOpts, error) {
|
||||||
if err := config.SetSocketOptions(socket); err != nil {
|
tcpSocket := socket.(*net.TCPConn)
|
||||||
return nil, nil, errors.Annotate(err, "Cannot set socket options")
|
if err := tcpSocket.SetNoDelay(false); err != nil {
|
||||||
|
return nil, nil, errors.Annotate(err, "Cannot disable NO_DELAY to client socket")
|
||||||
|
}
|
||||||
|
if err := tcpSocket.SetReadBuffer(readBufferSize); err != nil {
|
||||||
|
return nil, nil, errors.Annotate(err, "Cannot set read buffer size of client socket")
|
||||||
|
}
|
||||||
|
if err := tcpSocket.SetWriteBuffer(writeBufferSize); err != nil {
|
||||||
|
return nil, nil, errors.Annotate(err, "Cannot set write buffer size of client socket")
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.SetReadDeadline(time.Now().Add(handshakeTimeout))
|
socket.SetReadDeadline(time.Now().Add(handshakeTimeout))
|
||||||
|
|||||||
@@ -149,20 +149,3 @@ func NewConfig(debug, verbose bool, // nolint: gocyclo
|
|||||||
|
|
||||||
return conf, nil
|
return conf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSocketOptions makes socket keepalive, sets buffer sizes
|
|
||||||
func SetSocketOptions(conn net.Conn) error {
|
|
||||||
socket := conn.(*net.TCPConn)
|
|
||||||
|
|
||||||
if err := socket.SetReadBuffer(BufferReadSize); err != nil {
|
|
||||||
return errors.Annotate(err, "Cannot set read buffer size")
|
|
||||||
}
|
|
||||||
if err := socket.SetWriteBuffer(BufferWriteSize); err != nil {
|
|
||||||
return errors.Annotate(err, "Cannot set write buffer size")
|
|
||||||
}
|
|
||||||
if err := socket.SetNoDelay(true); err != nil {
|
|
||||||
return errors.Annotate(err, "Cannot activate nodelay for the socket")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|||||||
+15
-3
@@ -10,7 +10,11 @@ import (
|
|||||||
"github.com/9seconds/mtg/wrappers"
|
"github.com/9seconds/mtg/wrappers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const telegramDialTimeout = 10 * time.Second
|
const (
|
||||||
|
telegramDialTimeout = 10 * time.Second
|
||||||
|
readBufferSize = 64 * 1024
|
||||||
|
writeBufferSize = 64 * 1024
|
||||||
|
)
|
||||||
|
|
||||||
type tgDialer struct {
|
type tgDialer struct {
|
||||||
net.Dialer
|
net.Dialer
|
||||||
@@ -23,8 +27,16 @@ func (t *tgDialer) dial(addr string) (net.Conn, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot connect to Telegram")
|
return nil, errors.Annotate(err, "Cannot connect to Telegram")
|
||||||
}
|
}
|
||||||
if err = config.SetSocketOptions(conn); err != nil {
|
|
||||||
return nil, errors.Annotate(err, "Cannot set socket options")
|
tcpSocket := conn.(*net.TCPConn)
|
||||||
|
if err = tcpSocket.SetNoDelay(true); err != nil {
|
||||||
|
return nil, errors.Annotate(err, "Cannot set NO_DELAY to Telegram")
|
||||||
|
}
|
||||||
|
if err = tcpSocket.SetReadBuffer(readBufferSize); err != nil {
|
||||||
|
return nil, errors.Annotate(err, "Cannot set read buffer size on telegram socket")
|
||||||
|
}
|
||||||
|
if err = tcpSocket.SetWriteBuffer(writeBufferSize); err != nil {
|
||||||
|
return nil, errors.Annotate(err, "Cannot set write buffer size on telegram socket")
|
||||||
}
|
}
|
||||||
|
|
||||||
return conn, nil
|
return conn, nil
|
||||||
|
|||||||
Reference in New Issue
Block a user