All pastes #811402 Raw Edit

Untitled

public text v1 · immutable
·published 2007-12-10 21:54 UTC
rendered paste body
bool ByteBuffer::PutToSocket(int socket) {
    CHECK_READ_WRITE_SIZE_CURSORS;
    bool result;
    int32_t sent=send(socket, _pBuffer+_readCursor, _writeCursor-_readCursor, 0);
    if(sent<=0) {
        if(errno==EAGAIN){
            DEBUG("Unable to send %d bytes of data. Retry count is %d",_writeCursor-_readCursor,_sendRetryCount);
            _sendRetryCount++;
            if(_sendRetryCount>MAX_SEND_RETRY_COUNT){
                FATAL("MAX_SEND_RETRY_COUNT reached: %d", MAX_SEND_RETRY_COUNT);
                return false;
            }   
            else{
                return true;
            }
        }   
        else{
            FATAL("Permanent error while trying to send %d bytes of data: %d",_writeCursor-_readCursor,errno);
            return false;
        }
    }
    else {
        _sendRetryCount=0;
        _readCursor+=sent;
        result=true;
    }
    if(result)
        Realloc(0);
    CHECK_READ_WRITE_SIZE_CURSORS;
    return result;
}