Jump to content

Channel Freeze


Go to solution Solved by DrTurk,

Recommended Posts

Hello, I have a problem with the channels, sometimes the channel freezes and I get this error in sysser

I am interested in paying whoever can correct it


SYSERR: Mar 29 15:03:12 :: Process: UNKNOWN HEADER: 134, LAST HEADER: 50(255), REMAIN BYTES: 14, fd: 24
SYSERR: Mar 29 15:03:12 :: buffer_read_proceed: buffer_proceed: length argument bigger than buffer (length: 1, buffer: 0)
SYSERR: Mar 29 15:03:12 :: Process: UNKNOWN HEADER: 95, LAST HEADER: 10(255), REMAIN BYTES: 8, fd: 32
SYSERR: Mar 29 15:03:13 :: Process: UNKNOWN HEADER: 149, LAST HEADER: 7(255), REMAIN BYTES: 16, fd: 33
SYSERR: Mar 29 15:03:15 :: Process: UNKNOWN HEADER: 245, LAST HEADER: 0(19), REMAIN BYTES: 16, fd: 35
SYSERR: Mar 29 15:03:15 :: buffer_read_proceed: buffer_proceed: length argument bigger than buffer (length: 1, buffer: 0)
SYSERR: Mar 29 15:03:15 :: buffer_read_proceed: buffer_proceed: length argument bigger than buffer (length: 1, buffer: 0)
SYSERR: Mar 29 15:03:16 :: Process: UNKNOWN HEADER: 244, LAST HEADER: 255(0), REMAIN BYTES: 8, fd: 41
SYSERR: Mar 29 15:03:16 :: Process: UNKNOWN HEADER: 79, LAST HEADER: 7(0), REMAIN BYTES: 8, fd: 31
SYSERR: Mar 29 15:03:19 :: buffer_read_proceed: buffer_proceed: length argument bigger than buffer (length: 1, buffer: 0)
SYSERR: Mar 29 15:03:19 :: Process: UNKNOWN HEADER: 216, LAST HEADER: 255(10), REMAIN BYTES: 16, fd: 37
SYSERR: Mar 29 15:03:27 :: pid_init: 
Start of pid: 38338

Edited by Orange
Link to comment
Share on other sites

2 minutes ago, DrTurk said:

Post your int DESC::ProcessInput() function from desc.cpp

int DESC::ProcessInput()
{
    ssize_t bytes_read;

    if (!m_lpInputBuffer)
    {
        sys_err("DESC::ProcessInput : nil input buffer");
        return -1;
    }

    buffer_adjust_size(m_lpInputBuffer, m_iMinInputBufferLen);
    bytes_read = socket_read(m_sock, (char *) buffer_write_peek(m_lpInputBuffer), buffer_has_space(m_lpInputBuffer));

    if (bytes_read < 0)
        return -1;
    else if (bytes_read == 0)
        return 0;

    buffer_write_proceed(m_lpInputBuffer, bytes_read);

    if (!m_pInputProcessor)
        sys_err("no input processor");
#ifdef _IMPROVED_PACKET_ENCRYPTION_
    else
    {
        if (cipher_.activated()) {
            cipher_.Decrypt(const_cast<void*>(buffer_read_peek(m_lpInputBuffer)), buffer_size(m_lpInputBuffer));
        }

        int iBytesProceed = 0;

        // false가 리턴 되면 다른 phase로 바뀐 것이므로 다시 프로세스로 돌입한다!
        while (!m_pInputProcessor->Process(this, buffer_read_peek(m_lpInputBuffer), buffer_size(m_lpInputBuffer), iBytesProceed))
        {
            buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
            iBytesProceed = 0;
        }

        buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
    }
#else
    else if (!m_bEncrypted)
    {
        int iBytesProceed = 0;

        // false가 리턴 되면 다른 phase로 바뀐 것이므로 다시 프로세스로 돌입한다!
        while (!m_pInputProcessor->Process(this, buffer_read_peek(m_lpInputBuffer), buffer_size(m_lpInputBuffer), iBytesProceed))
        {
            buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
            iBytesProceed = 0;
        }

        buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
    }
    else
    {
        int iSizeBuffer = buffer_size(m_lpInputBuffer);

        // 8바이트 단위로만 처리한다. 8바이트 단위에 부족하면 잘못된 암호화 버퍼를 복호화
        // 할 가능성이 있으므로 짤라서 처리하기로 한다.
        if (iSizeBuffer & 7) // & 7은 % 8과 같다. 2의 승수에서만 가능
            iSizeBuffer -= iSizeBuffer & 7;

        if (iSizeBuffer > 0)
        {
            TEMP_BUFFER    tempbuf;
            LPBUFFER lpBufferDecrypt = tempbuf.getptr();
            buffer_adjust_size(lpBufferDecrypt, iSizeBuffer);

            int iSizeAfter = TEA_Decrypt((DWORD *) buffer_write_peek(lpBufferDecrypt),
                    (DWORD *) buffer_read_peek(m_lpInputBuffer),
                    GetDecryptionKey(),
                    iSizeBuffer);

            buffer_write_proceed(lpBufferDecrypt, iSizeAfter);

            int iBytesProceed = 0;

            // false가 리턴 되면 다른 phase로 바뀐 것이므로 다시 프로세스로 돌입한다!
            while (!m_pInputProcessor->Process(this, buffer_read_peek(lpBufferDecrypt), buffer_size(lpBufferDecrypt), iBytesProceed))
            {
                if (iBytesProceed > iSizeBuffer)
                {
                    buffer_read_proceed(m_lpInputBuffer, iSizeBuffer);
                    iSizeBuffer = 0;
                    iBytesProceed = 0;
                    break;
                }

                buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
                iSizeBuffer -= iBytesProceed;

                buffer_read_proceed(lpBufferDecrypt, iBytesProceed);
                iBytesProceed = 0;
            }

            buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
        }
    }
#endif // _IMPROVED_PACKET_ENCRYPTION_

    return (bytes_read);
}

Link to comment
Share on other sites

Just now, DrTurk said:

if(iSizeBuffer > 0) { // TEMP_BUFFER tempbuf; // LPBUFFER lpBufferDecrypt = tempbuf.getptr(); // buffer_adjust_size(lpBufferDecrypt, iSizeBuffer); LPBUFFER lpBufferDecrypt = buffer_new(iSizeBuffer);


if(iSizeBuffer > 0)
		{
			// TEMP_BUFFER	tempbuf;
			// LPBUFFER lpBufferDecrypt = tempbuf.getptr();
			// buffer_adjust_size(lpBufferDecrypt, iSizeBuffer);
			LPBUFFER lpBufferDecrypt = buffer_new(iSizeBuffer);

Do it like that

Thanks i will try

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.