亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cmpp.c

?? cmpp 發(fā)送接收短信息程序!是在linux下c 實(shí)現(xiàn)的。
?? C
?? 第 1 頁 / 共 3 頁
字號:
    putnLastBytes (&frame, (uint8 *)&netord, 4);

    netord = frameLength(frame);
    netord = htonl(netord);
    setnBytes(frame, 0, (uint8 *)&netord, 4);

#ifdef _DEBUG
info("create_cmpp_connect: connect pdu %d bytes:\n", frameLength(frame));
printFrame(INFO, frame, 0);
#endif

    deleteFrame(&cmcon->conpdu);

    cmcon->conpdu = frame;
    cmcon->concreated = 1;
    return 0;
}


int send_cmpp_connect (VTASK * vtask)
{
    CmppCon   * cmcon = NULL;
    int  times = 0;

    if (!vtask) return -1;

    cmcon = (CmppCon *)vtask->var;
    while ((!cmcon->concreated) && times++ < 5)
        create_cmpp_connect (vtask);

    if (!cmcon->concreated) return -1;

    if (sendTcpCon (cmcon->fd, cmcon->conpdu) < 0) {
        /* connection crashed */
        return -1;
    }

    startTimer (vtask, t_retry, TRETRY);
    ++cmcon->retrynum;

    return 0;
}



void cmpp_data_recv (VTASK * vtask, int fd, unsigned event)
{
    VTASK     * entity = NULL;
    CmppCon   * cmcon = NULL;
    CmppEntity * cment = NULL;
    FRAME_PTR   data = NULL;
    uint32      byteLen = 0;
    CmppPdu   * pdu = NULL;
    uint8       authismg [16];


    if (!vtask || fd == -1 || event != DF_READ)
        return;

    cmcon = (CmppCon *)vtask->var;

    if (cmcon->fd != fd) {
        error("cmpp_data_recv: fd mismatch.\n");
        return;
    }

    entity = (VTASK *)getEntity(vtask);
    cment = (CmppEntity *)entity->var;

    emptyFrame(cmcon->rcvbuf);

    if (recvTcpCon (fd, 4, &cmcon->rcvbuf) <= 0) {
        error("cmpp_data_recv: CMPP connection %s to ISMG %s:%d "
              "crashed while reading length.\n",
              vtask->name, cment->remote_host, cment->remote_port);
        vtask->state = cmpp_null;
        checkIdleConnection(vtask);

        startTimer(entity, t_build, TBUILD);
        return;
    }

    peeknBytes(cmcon->rcvbuf, 0, (uint8 *)&byteLen, 4);
    byteLen = ntohl(byteLen);

#ifdef _DEBUG
info("****data_recv: receive content %d bytes.\n", byteLen);
#endif

    byteLen -= 4;

    emptyFrame(cmcon->rcvbuf);

    if (recvTcpCon (fd, byteLen, &cmcon->rcvbuf) <= 0) {
        error("cmpp_data_recv: CMPP connection %s to ISMG %s:%d "
              "crashed while reading content.\n",
              vtask->name, cment->remote_host, cment->remote_port);
        vtask->state = cmpp_null;
        checkIdleConnection(vtask);

        startTimer(entity, t_build, TBUILD);
        return;
    }

#ifdef _DEBUG
info("***data_recv: recv %d bytes content:\n", frameLength(cmcon->rcvbuf));
printFrame(INFO, cmcon->rcvbuf, 0);
#endif

    /* prevent the getnLastBytes from deleting the frame whiel decoding */
    if (byteLen == frameLength(cmcon->rcvbuf))
        putLastByte(&cmcon->rcvbuf, '\0');

    pdu = cmpdu_decode (&cmcon->rcvbuf);
    if (!pdu) {
        error ("cmpp_data_recv: received data format error.\n");
        return;
    }

    switch (pdu->command_id) {
    case CMPP_CONNECT_RESP:
#ifdef _DEBUG
info("cmpp sp: got CMPP_CONNECT_RESP.\n");
#endif
        if (vtask->state != cmpp_handshaking) {
            warning("Warning: received CMPP_CONNECT_RESP not in "
                    "cmpp_handshaking state %d.\n", vtask->state);
            break;
        }

        switch (pdu->ConnectResp.status) {
        case 0:
            /* first authenticate ISMG via MD5 value contrast */
            putLastByte (&data, pdu->ConnectResp.status);
            putnLastBytes (&data, cmcon->authsrc, 16);
            putnLastBytes (&data, cmcon->sharedsecret, 
                                   strlen(cmcon->sharedsecret));
            Md5Val (bytePointer(data), frameLength(data), authismg);

#ifdef _DEBUG
info("***recv_data, to be MD5 is %d bytes.\n", frameLength(data));
printFrame(INFO, data, 0);
info("***recv_data, ISMG authen MD5 value:\n");
printOctet(INFO, authismg, 0, 16, 0);
#endif

            deleteFrame(&data);

            if (0) {//memcmp (authismg, pdu->ConnectResp.auth_ismg, 16) != 0) {
                tolog ("Authentication to ISMG [%s:%d] failed while "
                       "handling CONNECT_RESP. "
                       "\n\tSPID:[%s] SharedSecret:[%s] "
                       "ProtocolVersion:[%d.%d] TimeStamp:[%010d]\n",
                       cment->remote_host, cment->remote_port,
                       cmcon->sp_id, cmcon->sharedsecret,
                       (cmcon->version >> 4) & 0x0f, (cmcon->version & 0x0f),
                       cmcon->timestamp);
                
                vtask->state = cmpp_handshaking;
            } else {
                tolog ("CMPP Connect to ISMG [%s:%d] succeeds. "
                       "\n\tSPID:[%s] SharedSecret:[%s] "
                       "ProtocolVersion:[%d.%d] TimeStamp:[%010d]\n",
                       cment->remote_host, cment->remote_port,
                       cmcon->sp_id, cmcon->sharedsecret,
                       (cmcon->version >> 4) & 0x0f, (cmcon->version & 0x0f),
                       cmcon->timestamp);
                
                cmcon->retrynum = 0;
                vtask->state = cmpp_ready;

                /*cment->total_avail += cmcon->sliding_len;
                SetEvent(cment->hAvailEvent, 1);*/

                if (cmcon->is_mo) {
                    sk_push(cment->mo_list, vtask);
                } else {
                    cment->total_avail += cmcon->sliding_len;
                    SetEvent(cment->hAvailEvent, 1);
                    sk_push(cment->init_list, vtask);
                }

                if (sk_num(cment->init_list) < cment->mt_num ||
                    sk_num(cment->mo_list) < cment->mo_num) {
#ifdef _DEBUG
info("cmpp_data_recv: %d MT %d MO connections < %d total num,"
         " now start timer t_build.\n",
          sk_num(cment->init_list), sk_num(cment->mo_list), cment->cmpp_con_num);
#endif
                    startTimer(entity, t_build, TBUILD);
                }

                /*for (i=0; i<cmcon->sliding_len; i++)
                    sem_post (&cment->sem_submit);*/

                /* start connection test message timer */
                if (!cmcon->is_mo)
                    startTimer (vtask, t_acttest, TACTTEST);

                /* start the distribute procedure hook */
                startHook(cment->hDistribute);

                /* stop the retry timer that retransmit CONNECT message */
                stopTimer(vtask, t_retry);
            }
            break;
        case 1:
            tolog ("Connect_Resp indicates: connect message "
                   "structure error.\n");
            break;
        case 2:
            tolog ("Connect_Resp indicates: invalid source address [%s:%d]"
                   " of connect message.\n", inet_ntoa(cmcon->local_ip),
                   cmcon->local_port);
            break;
        case 3:
            tolog ("Connect_Resp indicates: authentication to SP "
                   "[ID:%s  SharedSecret:%s] is illegal.\n",
                   cmcon->sp_id, cmcon->sharedsecret);
            break;
        case 4:
            tolog ("Connect_Resp indicates: CMPP implementation "
                   "version [%d.%d] is too high.\n",
                   (cmcon->version >> 4) & 0x0f, (cmcon->version & 0x0f));
            break;
        default:
            tolog ("Connect_Resp indicates: unknown error.\n");
            break;
        }
  
        if (vtask->state != cmpp_ready) {
            if (cmcon->retrynum <= MAXRETRY && send_cmpp_connect(vtask) >= 0) {
                    vtask->state = cmpp_handshaking;
#ifdef _DEBUG
info("\ngot submit response not authenticated, send cmpp_connect %d times.\n", cmcon->retrynum);
#endif
            } else {
                if (cmcon->retrynum > MAXRETRY)
                    error("Got Submit Response: after %d times retrying to "
                          "sending CONNECT, system decides to terminate "
                          "this CMPP connection.\n", MAXRETRY);
                else
                    error("Got Submit Response: TCP connection crashed "
                          "while sending CMPP Connect.\n");

                vtask->state = cmpp_null;
                checkIdleConnection(vtask);

                startTimer(entity, t_build, TBUILD);
#ifdef _DEBUG
info("\ngot submit response not authenticated, send cmpp_connect error or "
           "retry exceed numer %d times.\n", cmcon->retrynum);
#endif
                break;
            }
        }
        break;

    case CMPP_TERMINATE:
        issue_terminate_resp (vtask, pdu);

        vtask->state = cmpp_null;
        checkIdleConnection(vtask);
        startTimer(entity, t_build, TBUILD);

        tolog("ISMG %s:%d terminate the CMPP connection %s.\n",
              cment->remote_host, cment->remote_port, vtask->name);
        break;

    case CMPP_TERMINATE_RESP:
        break;

    case CMPP_SUBMIT_RESP:
        if (handle_submit_resp (vtask, pdu) < 0) {
            error("cmpp_data_recv: submit response with sequence id %ld "
                  "has no corresponding submit.\n", pdu->sequence_id);
        } else {
            /* pdu has been stored, prevent it from being deleted. */
            pdu = NULL;
        }
        break;

    case CMPP_DELIVER:
        if (handle_deliver (vtask, pdu) < 0) {
            error("cmpp_data_recv: MO deliver message with sequence id %ld "
                  "has not been handled correctly.\n", pdu->sequence_id);

        } else {
            /* pdu has been stored, prevent it from being deleted. */
            pdu = NULL;
        }
        break;

    case CMPP_QUERY_RESP:
        break;

    case CMPP_CANCEL_RESP:
        break;

    case CMPP_ACTIVE_TEST:
        if (issue_active_test_resp (vtask, pdu) < -1) {
            error("cmpp_data_recv: CMPP active test message with sequence "
                  "id %ld "
                  "has not been handled correctly.\n", pdu->sequence_id);

        }
        break;

    case CMPP_ACTIVE_TEST_RESP:
        if (handle_active_test_resp(vtask, pdu) < 0) {
            error("cmpp_data_recv: CMPP ActiveTestResponse message with "
                  "sequence id %ld "
                  "has not been handled correctly.\n", pdu->sequence_id);

        } 
        break;
    }


    cmpdu_free (pdu);

    checkIdleConnection (vtask);
    return;
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一级片在线观看| 99久久精品费精品国产一区二区| 久久久综合九色合综国产精品| 波多野结衣欧美| 日本成人在线一区| 中文字幕亚洲一区二区av在线 | 国产精品大尺度| 日韩一区二区三区免费观看| 99视频一区二区三区| 精品一区二区三区免费播放| 一区二区激情小说| 中文字幕国产精品一区二区| 日韩视频在线永久播放| 色久综合一二码| 成人禁用看黄a在线| 免费观看30秒视频久久| 亚洲夂夂婷婷色拍ww47| 国产精品久久久久一区| 26uuu精品一区二区| 欧美猛男男办公室激情| 欧美性做爰猛烈叫床潮| 91免费小视频| 99天天综合性| 成人福利电影精品一区二区在线观看| 精品一区二区三区久久久| 性感美女极品91精品| 亚洲一区二区三区四区中文字幕| 国产精品理论片在线观看| 国产亚洲综合在线| 久久先锋影音av| 26uuu精品一区二区在线观看| 日韩亚洲欧美在线| 欧美一级午夜免费电影| 7878成人国产在线观看| 欧美精品777| 欧美精品丝袜久久久中文字幕| 欧美日韩一区二区三区不卡| 欧美天堂一区二区三区| 欧美日韩中文字幕一区| 欧美视频精品在线观看| 欧美午夜电影一区| 欧美高清一级片在线| 欧美二区乱c少妇| 91精品国产综合久久香蕉麻豆| 欧美日韩成人一区| 欧美一区二区女人| 精品粉嫩超白一线天av| 26uuu另类欧美亚洲曰本| 国产丝袜欧美中文另类| 国产精品免费视频观看| 亚洲免费观看高清完整| 亚洲一区二区四区蜜桃| 日产国产欧美视频一区精品 | 亚洲已满18点击进入久久| 亚洲一区在线观看网站| 午夜视频在线观看一区二区三区| 午夜精品一区二区三区电影天堂| 日韩和欧美一区二区| 久久国产尿小便嘘嘘尿| 国产精品一线二线三线精华| 成人免费不卡视频| 色先锋资源久久综合| 欧美男男青年gay1069videost| 欧美一个色资源| 国产清纯白嫩初高生在线观看91 | 亚洲一区电影777| 日韩精品色哟哟| 国产尤物一区二区在线| 97精品久久久午夜一区二区三区| 欧美又粗又大又爽| 日韩欧美不卡在线观看视频| 国产亚洲美州欧州综合国| 亚洲人成网站影音先锋播放| 亚洲chinese男男1069| 国产专区综合网| 日本乱码高清不卡字幕| 日韩精品一区二区三区四区| 国产精品久久久久影院老司| 亚洲成av人片在线| 国产一区二区三区香蕉 | av不卡免费电影| 欧美日韩卡一卡二| 久久久久久久久久久久久女国产乱| 国产精品麻豆久久久| 视频在线在亚洲| 国产一二精品视频| 在线观看国产日韩| 久久精品一区二区三区不卡牛牛 | 日韩精品欧美成人高清一区二区| 国产麻豆精品久久一二三| 色偷偷久久人人79超碰人人澡| 7777精品伊人久久久大香线蕉最新版 | 亚洲免费av网站| 麻豆精品在线观看| 91丨国产丨九色丨pron| 久久综合色天天久久综合图片| 亚洲精品国产第一综合99久久| 久久超级碰视频| 在线观看视频一区| 国产精品三级电影| 国产一区二区三区在线观看精品 | 日韩精品一区二区三区视频播放| 亚洲三级在线看| 国产福利一区在线| 欧美一级一区二区| 亚洲国产视频一区二区| eeuss影院一区二区三区| 精品国产91洋老外米糕| 亚洲第一久久影院| 91女神在线视频| 国产日韩欧美精品电影三级在线 | 天天综合色天天| 91久久精品一区二区三| 欧美激情在线一区二区| 黄一区二区三区| 欧美精品第1页| 亚洲一区二区欧美| 91美女在线看| 国产精品电影一区二区| 国产sm精品调教视频网站| 精品国内片67194| 蜜臀a∨国产成人精品| 欧美日本免费一区二区三区| 亚洲一区二区欧美激情| 在线看日本不卡| 亚洲女与黑人做爰| 91丨porny丨国产| 亚洲欧洲一区二区在线播放| 国产成人av在线影院| 亚洲国产精品成人综合色在线婷婷 | 一区二区高清在线| 91麻豆成人久久精品二区三区| 国产精品美女一区二区在线观看| 国产盗摄女厕一区二区三区 | 亚洲狠狠爱一区二区三区| 91蜜桃在线观看| 一区二区三区产品免费精品久久75| 99re视频精品| 亚洲综合一区二区| 欧美亚一区二区| 视频一区视频二区在线观看| 欧美妇女性影城| 奇米综合一区二区三区精品视频 | 久久九九99视频| 国产91精品一区二区麻豆网站 | 亚洲欧美精品午睡沙发| 91丝袜国产在线播放| 一区二区三区欧美视频| 欧美日韩精品三区| 美国毛片一区二区三区| 精品久久久久久久一区二区蜜臀| 国产美女精品在线| 国产精品麻豆视频| 在线观看免费视频综合| 日韩中文字幕av电影| 精品国产免费人成电影在线观看四季| 六月丁香综合在线视频| 精品国产污网站| 99麻豆久久久国产精品免费| 夜夜爽夜夜爽精品视频| 91精品黄色片免费大全| 国产精品一线二线三线精华| 最新欧美精品一区二区三区| 欧美性视频一区二区三区| 蜜桃视频一区二区三区| 久久精品一区二区三区四区| 色综合久久久久综合体桃花网| 亚洲成av人片一区二区梦乃| 精品精品欲导航| 北岛玲一区二区三区四区| 亚洲午夜精品在线| 欧美精品一区二区久久久| 91小视频在线观看| 免费精品视频最新在线| 国产精品水嫩水嫩| 欧美日韩免费观看一区二区三区| 精品一区二区在线免费观看| 一色屋精品亚洲香蕉网站| 3d成人h动漫网站入口| 成人免费视频caoporn| 亚洲不卡在线观看| 久久精品欧美一区二区三区不卡 | 日韩国产一二三区| 国产精品免费人成网站| 欧美一区2区视频在线观看| 成人动漫精品一区二区| 日本欧美肥老太交大片| 国产精品美女一区二区三区| 欧美日韩高清一区二区| 成人免费va视频| 久久99久久久久久久久久久| 亚洲精品成人在线| 久久久国际精品| 在线不卡欧美精品一区二区三区| 成人激情小说网站| 久久er精品视频| 午夜伦理一区二区| 亚洲欧洲韩国日本视频| www久久精品| 欧美一区二区三区播放老司机|