diff --git a/client/direct.go b/client/direct.go index 9f0df10..266071e 100644 --- a/client/direct.go +++ b/client/direct.go @@ -12,11 +12,22 @@ import ( "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) { - if err := config.SetSocketOptions(socket); err != nil { - return nil, nil, errors.Annotate(err, "Cannot set socket options") + tcpSocket := socket.(*net.TCPConn) + 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)) diff --git a/config/config.go b/config/config.go index 59d06cd..27c11d0 100644 --- a/config/config.go +++ b/config/config.go @@ -149,20 +149,3 @@ func NewConfig(debug, verbose bool, // nolint: gocyclo 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 -} diff --git a/telegram/dialer.go b/telegram/dialer.go index fc70d64..58b4ff5 100644 --- a/telegram/dialer.go +++ b/telegram/dialer.go @@ -10,7 +10,11 @@ import ( "github.com/9seconds/mtg/wrappers" ) -const telegramDialTimeout = 10 * time.Second +const ( + telegramDialTimeout = 10 * time.Second + readBufferSize = 64 * 1024 + writeBufferSize = 64 * 1024 +) type tgDialer struct { net.Dialer @@ -23,8 +27,16 @@ func (t *tgDialer) dial(addr string) (net.Conn, error) { if err != nil { 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