Esempio n. 1
0
// =========================================================================
// 函数功能:处理客户端和用户的消息交流
// 输入参数:
// 输出参数:
// 返回值     :待交流的客户cl
// 说明          :不进行参数检测,我们相信调用者自己会解决好的
//         : 处理客户端的状态机,从建立连接到正常的消息交流
// =========================================================================
void rfbProcessClientMessage( rfbClientPtr cl)
{
    switch (cl->state) {

    case RFB_PROTOCOL_VERSION:
        debug_printf("STATE:RFB_PROTO_VERSION---%s",cl->host);
        rfbProcessClientProtocolVersion(cl);
        return;

    case RFB_SECURITY_TYPE:
        debug_printf("STATE:RFB_SECURITY_VERSION---%s",cl->host);
        rfbProcessClientSecurityType(cl);
        return;

    case RFB_AUTHENTICATION:
        debug_printf("STATE:RFB_AUTHENTICATION---%s",cl->host);
        rfbAuthProcessClientMessage(cl);
        return;

    case RFB_INITIALISATION:
        debug_printf("STATE:RFB_INITIALISATION---%s",cl->host);
        rfbProcessClientInitMessage(cl);
        return;

    default:
        rfbProcessClientNormalMessage(cl);
        return;
    }
}
Esempio n. 2
0
static void
rfbVncAuthSendChallenge(rfbClientPtr cl)
{
	
    rfbLog("tightvnc-filetransfer/rfbVncAuthSendChallenge\n");
    /* 4 byte header is alreay sent. Which is rfbSecTypeVncAuth (same as rfbVncAuth). Just send the challenge. */
    rfbRandomBytes(cl->authChallenge);
    if (rfbWriteExact(cl, (char *)cl->authChallenge, CHALLENGESIZE) < 0) {
        rfbLogPerror("rfbAuthNewClient: write");
        rfbCloseClient(cl);
        return;
    }
    
    /* Dispatch client input to rfbVncAuthProcessResponse. */
   /* This methos is defined in auth.c file */
    rfbAuthProcessClientMessage(cl);

}