Ticket #7839: 7839-tcp_keepalive.patch

File 7839-tcp_keepalive.patch, 3.2 KB (added by Jeff Lu <jll544@…>, 14 years ago)
  • libs/libmythdb/msocketdevice_win.cpp

     
    306306        case SendBuffer:
    307307            n = SO_SNDBUF;
    308308            break;
     309        case Keepalive:
     310            n = SO_KEEPALIVE;
     311            break;
    309312    }
    310313    if ( n != -1 ) {
    311314        SOCKLEN_T len = sizeof(v);
     
    361364        case SendBuffer:
    362365            n = SO_SNDBUF;
    363366            break;
     367        case Keepalive:
     368            n = SO_KEEPALIVE;
     369            break;
    364370        default:
    365371            return;
    366372    }
  • libs/libmythdb/msocketdevice.cpp

     
    446446
    447447
    448448/*!
     449    Returns true if this socket has the keepalive option set.
     450
     451    \sa setKeepalive()
     452*/
     453bool MSocketDevice::keepalive() const
     454{
     455        return option( Keepalive );
     456}
     457
     458/*!
     459    Sets the keepalive option for this socket.
     460
     461    \sa keepalive()
     462*/
     463void MSocketDevice::setKeepalive( bool enable )
     464{
     465    setOption( Keepalive, enable );
     466}
     467
     468
     469/*!
    449470    Returns the size of the operating system receive buffer.
    450471
    451472    \sa setReceiveBufferSize()
  • libs/libmythdb/msocketdevice_unix.cpp

     
    303303    case SendBuffer:
    304304        n = SO_SNDBUF;
    305305        break;
     306    case Keepalive:
     307        n = SO_KEEPALIVE;
     308        break;
    306309    }
    307310    if ( n != -1 ) {
    308311        QT_SOCKOPTLEN_T len;
     
    352355    case SendBuffer:
    353356        n = SO_SNDBUF;
    354357        break;
     358    case Keepalive:
     359        n = SO_KEEPALIVE;
     360        break;
    355361    default:
    356362        return;
    357363    }
  • libs/libmythdb/mythsocket.cpp

     
    4141    if (socket > -1)
    4242    {
    4343        setSocket(socket);
     44        setKeepalive(true);
    4445#ifdef USING_MINGW
    4546        // Windows sockets' default buffersize is too small for streaming
    4647        // Could this apply to other platforms, too?
     
    696697
    697698    setReceiveBufferSize(kSocketBufferSize);
    698699    setAddressReusable(true);
     700    setKeepalive(true);
    699701    if (state() == Connecting)
    700702    {
    701703        setState(Connected);
  • libs/libmythdb/msocketdevice.h

     
    9494    int          sendBufferSize() const;
    9595    virtual void setSendBufferSize( uint );
    9696
     97    bool         keepalive() const;
     98    virtual void setKeepalive( bool );
     99
    97100    virtual bool connect( const QHostAddress &, quint16 );
    98101
    99102    virtual bool bind( const QHostAddress &, quint16 );
     
    146149    MSocketDevice::Error e;
    147150    MSocketDevicePrivate * d;
    148151
    149     enum Option { Broadcast, ReceiveBuffer, ReuseAddress, SendBuffer };
     152    enum Option { Broadcast, ReceiveBuffer, ReuseAddress, SendBuffer, Keepalive };
    150153
    151154    int          option( Option ) const;
    152155    virtual void setOption( Option, int );