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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? smsc_smpp.c

?? 主要包括sms網關和wap網關實現說明和源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* ====================================================================  * The Kannel Software License, Version 1.0  *  * Copyright (c) 2001-2005 Kannel Group   * Copyright (c) 1998-2001 WapIT Ltd.    * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  * 1. Redistributions of source code must retain the above copyright  *    notice, this list of conditions and the following disclaimer.  *  * 2. Redistributions in binary form must reproduce the above copyright  *    notice, this list of conditions and the following disclaimer in  *    the documentation and/or other materials provided with the  *    distribution.  *  * 3. The end-user documentation included with the redistribution,  *    if any, must include the following acknowledgment:  *       "This product includes software developed by the  *        Kannel Group (http://www.kannel.org/)."  *    Alternately, this acknowledgment may appear in the software itself,  *    if and wherever such third-party acknowledgments normally appear.  *  * 4. The names "Kannel" and "Kannel Group" must not be used to  *    endorse or promote products derived from this software without  *    prior written permission. For written permission, please   *    contact org@kannel.org.  *  * 5. Products derived from this software may not be called "Kannel",  *    nor may "Kannel" appear in their name, without prior written  *    permission of the Kannel Group.  *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED.  IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,   * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT   * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  * ====================================================================  *  * This software consists of voluntary contributions made by many  * individuals on behalf of the Kannel Group.  For more information on   * the Kannel Group, please see <http://www.kannel.org/>.  *  * Portions of this software are based upon software originally written at   * WapIT Ltd., Helsinki, Finland for the Kannel project.   */ /* * smsc_smpp.c - SMPP v3.3 and v3.4 implementation * * Lars Wirzenius * Stipe Tolj <stolj@wapme.de> * Alexander Malysh  <amalysh at kannel.org> *//* XXX check SMSCConn conformance *//* XXX UDH reception *//* XXX check UDH sending fields esm_class and data_coding from GSM specs *//* XXX charset conversions on incoming messages (didn't work earlier,       either) *//* XXX numbering plans and type of number: check spec */#include "gwlib/gwlib.h"#include "msg.h"#include "smsc_p.h"#include "smpp_pdu.h"#include "smscconn_p.h"#include "bb_smscconn_cb.h"#include "sms.h"#include "dlr.h"#define SMPP_DEFAULT_CHARSET	"windows-1252"/* * Select these based on whether you want to dump SMPP PDUs as they are * sent and received or not. Not dumping should be the default in at least * stable releases. */#define DEBUG 1#ifndef DEBUG#define dump_pdu(msg, id, pdu) do{}while(0)#else/** This version does dump. */#define dump_pdu(msg, id, pdu)                  \    do {                                        \        debug("bb.sms.smpp", 0, "SMPP[%s]: %s", \            octstr_get_cstr(id), msg);          \        smpp_pdu_dump(pdu);                     \    } while(0)#endif/* * Some defaults. */#define SMPP_ENQUIRE_LINK_INTERVAL  30.0#define SMPP_MAX_PENDING_SUBMITS    10#define SMPP_DEFAULT_VERSION        0x34#define SMPP_DEFAULT_PRIORITY       0#define SMPP_THROTTLING_SLEEP_TIME  15#define SMPP_DEFAULT_CONNECTION_TIMEOUT  10 * SMPP_ENQUIRE_LINK_INTERVAL#define SMPP_DEFAULT_WAITACK        60#define SMPP_DEFAULT_SHUTDOWN_TIMEOUT 30/*  * Some defines */#define SMPP_WAITACK_RECONNECT      0x00#define SMPP_WAITACK_REQUEUE        0x01#define SMPP_WAITACK_NEVER_EXPIRE   0x02/*********************************************************************** * Implementation of the actual SMPP protocol: reading and writing * PDUs in the correct order. */typedef struct {    long transmitter;    long receiver;    List *msgs_to_send;    Dict *sent_msgs;     List *received_msgs;     Counter *message_id_counter;     Octstr *host;     Octstr *system_type;     Octstr *username;     Octstr *password;     Octstr *address_range;     Octstr *my_number;     Octstr *service_type;    int source_addr_ton;     int source_addr_npi;     int dest_addr_ton;     int dest_addr_npi;    long bind_addr_ton;    long bind_addr_npi;    int transmit_port;     int receive_port;     int quitting;     long enquire_link_interval;    long max_pending_submits;    int version;    int priority;       /* set default priority for messages */        int validityperiod;        time_t throttling_err_time;    int smpp_msg_id_type;  /* msg id in C string, hex or decimal */    int autodetect_addr;    Octstr *alt_charset;    Octstr *alt_addr_charset;    long connection_timeout;    long wait_ack;    int wait_ack_action;    SMSCConn *conn; } SMPP;  struct smpp_msg {    time_t sent_time;    Msg *msg;};/* * create smpp_msg struct  */static struct smpp_msg* smpp_msg_create(Msg *msg){    struct smpp_msg *result = gw_malloc(sizeof(struct smpp_msg));        gw_assert(result != NULL);    result->sent_time = time(NULL);    result->msg = msg;                    return result;}/* * destroy smpp_msg struct. If destroy_msg flag is set, then message will be freed as well */static void smpp_msg_destroy(struct smpp_msg *msg, int destroy_msg){    /* sanity check */    if (msg == NULL)        return;                    if (destroy_msg && msg->msg != NULL)        msg_destroy(msg->msg);                                gw_free(msg);} static SMPP *smpp_create(SMSCConn *conn, Octstr *host, int transmit_port,      	    	    	 int receive_port, Octstr *system_type,                           Octstr *username, Octstr *password,     	    	    	 Octstr *address_range,                         int source_addr_ton, int source_addr_npi,                           int dest_addr_ton, int dest_addr_npi,                          int enquire_link_interval, int max_pending_submits,                          int version, int priority, int validity,                         Octstr *my_number, int smpp_msg_id_type,                          int autodetect_addr, Octstr *alt_charset, Octstr *alt_addr_charset,                         Octstr *service_type, long connection_timeout,                         long wait_ack, int wait_ack_action) {     SMPP *smpp;          smpp = gw_malloc(sizeof(*smpp));     smpp->transmitter = -1;     smpp->receiver = -1;     smpp->msgs_to_send = gwlist_create();     smpp->sent_msgs = dict_create(max_pending_submits, NULL);     gwlist_add_producer(smpp->msgs_to_send);     smpp->received_msgs = gwlist_create();     smpp->message_id_counter = counter_create();     counter_increase(smpp->message_id_counter);    smpp->host = octstr_duplicate(host);     smpp->system_type = octstr_duplicate(system_type);     smpp->username = octstr_duplicate(username);     smpp->password = octstr_duplicate(password);     smpp->address_range = octstr_duplicate(address_range);     smpp->source_addr_ton = source_addr_ton;     smpp->source_addr_npi = source_addr_npi;     smpp->dest_addr_ton = dest_addr_ton;     smpp->dest_addr_npi = dest_addr_npi;     smpp->my_number = octstr_duplicate(my_number);     smpp->service_type = octstr_duplicate(service_type);    smpp->transmit_port = transmit_port;     smpp->receive_port = receive_port;     smpp->enquire_link_interval = enquire_link_interval;    smpp->max_pending_submits = max_pending_submits;     smpp->quitting = 0;     smpp->version = version;    smpp->priority = priority;    smpp->validityperiod = validity;    smpp->conn = conn;     smpp->throttling_err_time = 0;    smpp->smpp_msg_id_type = smpp_msg_id_type;        smpp->autodetect_addr = autodetect_addr;    smpp->alt_charset = octstr_duplicate(alt_charset);    smpp->alt_addr_charset = octstr_duplicate(alt_addr_charset);    smpp->connection_timeout = connection_timeout;    smpp->wait_ack = wait_ack;    smpp->wait_ack_action = wait_ack_action;    smpp->bind_addr_ton = 0;    smpp->bind_addr_npi = 0;     return smpp; }   static void smpp_destroy(SMPP *smpp) {     if (smpp != NULL) {         gwlist_destroy(smpp->msgs_to_send, msg_destroy_item);         dict_destroy(smpp->sent_msgs);         gwlist_destroy(smpp->received_msgs, msg_destroy_item);         counter_destroy(smpp->message_id_counter);         octstr_destroy(smpp->host);         octstr_destroy(smpp->username);         octstr_destroy(smpp->password);         octstr_destroy(smpp->system_type);         octstr_destroy(smpp->service_type);         octstr_destroy(smpp->address_range);         octstr_destroy(smpp->my_number);        octstr_destroy(smpp->alt_charset);        octstr_destroy(smpp->alt_addr_charset);        gw_free(smpp);     } }   /*  * Try to read an SMPP PDU from a Connection. Return -1 for error (caller  * should close the connection), 0 for no PDU to ready yet, or 1 for PDU  * read and unpacked. Return a pointer to the PDU in `*pdu'. Use `*len'  * to store the length of the PDU to read (it may be possible to read the  * length, but not the rest of the PDU - we need to remember the lenght  * for the next call). `*len' should be zero at the first call.  */static int read_pdu(SMPP *smpp, Connection *conn, long *len, SMPP_PDU **pdu) {     Octstr *os;      if (*len == 0) {         *len = smpp_pdu_read_len(conn);         if (*len == -1) {             error(0, "SMPP[%s]: Server sent garbage, ignored.",                  octstr_get_cstr(smpp->conn->id));             return -1;         } else if (*len == 0) {             if (conn_eof(conn) || conn_error(conn))                 return -1;             return 0;         }     }          os = smpp_pdu_read_data(conn, *len);     if (os == NULL) {         if (conn_eof(conn) || conn_error(conn))             return -1;         return 0;     }     *len = 0;          *pdu = smpp_pdu_unpack(os);     if (*pdu == NULL) {         error(0, "SMPP[%s]: PDU unpacking failed.",              octstr_get_cstr(smpp->conn->id));         debug("bb.sms.smpp", 0, "SMPP[%s]: Failed PDU follows.",              octstr_get_cstr(smpp->conn->id));         octstr_dump(os, 0);         octstr_destroy(os);        return -1;    }    octstr_destroy(os);    return 1;}static long convert_addr_from_pdu(Octstr *id, Octstr *addr, long ton, long npi, Octstr *alt_addr_charset){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国模一区二区三区| 欧美一级在线视频| 国产精品午夜久久| 国产精品一区二区三区四区| 久久综合九色综合久久久精品综合| 久久国产尿小便嘘嘘尿| 日韩精品专区在线| 国产成人av电影在线观看| 99久久久久免费精品国产| 亚洲风情在线资源站| 一本大道久久a久久精二百| **性色生活片久久毛片| 在线观看视频91| 日韩av不卡在线观看| 精品噜噜噜噜久久久久久久久试看| 国产一区二区免费看| 亚洲欧洲另类国产综合| 欧美中文字幕久久| 久久国产精品一区二区| 亚洲国产精品成人综合| 99精品一区二区| 日日摸夜夜添夜夜添国产精品 | 国模少妇一区二区三区| 日本一区二区三级电影在线观看| 91婷婷韩国欧美一区二区| 亚洲成人久久影院| 国产午夜精品理论片a级大结局| 91视频国产资源| 免费观看91视频大全| 99久久婷婷国产综合精品| 日韩成人精品在线观看| 精品少妇一区二区三区免费观看 | 国产亚洲精品中文字幕| 成人h动漫精品| 视频一区在线播放| 中文字幕欧美日韩一区| 欧美精选午夜久久久乱码6080| 国产精品1区2区| 亚洲电影一区二区三区| 国产精品五月天| 欧美一区二区私人影院日本| 99re这里只有精品视频首页| 另类小说图片综合网| 亚洲裸体xxx| 国产午夜精品久久| 欧美一级一级性生活免费录像| 99riav一区二区三区| 国产在线麻豆精品观看| 亚洲成人福利片| 自拍偷拍欧美激情| 蜜臀91精品一区二区三区| 精品国产亚洲在线| 精品视频1区2区3区| 丁香婷婷深情五月亚洲| 蜜臀国产一区二区三区在线播放| 亚洲欧美色综合| 久久精品一级爱片| 日韩视频123| 欧美日韩视频在线第一区| 99热精品一区二区| 国产a视频精品免费观看| 免费精品视频在线| 五月婷婷激情综合| 中文字幕一区不卡| 国产精品青草综合久久久久99| 26uuu精品一区二区在线观看| 欧美午夜在线一二页| 色婷婷综合在线| 91年精品国产| 99久久精品免费| av不卡免费电影| 成人午夜在线播放| 成人免费视频视频| 风间由美一区二区三区在线观看| 久草精品在线观看| 狠狠久久亚洲欧美| 欧美片网站yy| 国产麻豆精品在线观看| 麻豆精品视频在线观看免费 | 色屁屁一区二区| 97久久超碰国产精品| 99在线精品视频| 91丨porny丨国产| 色综合 综合色| 在线精品视频免费播放| 欧美日韩一卡二卡三卡| 91麻豆精品国产自产在线 | 国产成人夜色高潮福利影视| 国产永久精品大片wwwapp| 国产精品中文字幕日韩精品| 国产精品自拍av| 成人a区在线观看| 在线精品视频一区二区三四| 欧美精品亚洲二区| 欧美大胆一级视频| 久久一区二区三区四区| 欧美日韩一区二区三区不卡| 日本高清不卡一区| 欧美亚洲一区二区在线| 91精品欧美福利在线观看| 日韩情涩欧美日韩视频| 国产色婷婷亚洲99精品小说| 国产精品久久久久久久浪潮网站 | 国产亚洲一区字幕| 国产精品狼人久久影院观看方式| 亚洲日本乱码在线观看| 日韩国产一区二| 国产精品一区二区在线观看不卡 | 亚洲欧美中日韩| 亚洲精品ww久久久久久p站| 亚洲国产三级在线| 精品系列免费在线观看| 国产伦精品一区二区三区免费 | 欧美顶级少妇做爰| 欧美大尺度电影在线| 中文字幕乱码亚洲精品一区| 一区二区三区四区五区视频在线观看| 天堂av在线一区| 国产91清纯白嫩初高中在线观看 | 日韩激情视频网站| 另类人妖一区二区av| 成人污污视频在线观看| 欧美天天综合网| 国产女主播一区| 日韩专区一卡二卡| 春色校园综合激情亚洲| 欧美日韩一区二区三区高清| 中文成人综合网| 免费在线观看不卡| 色先锋资源久久综合| 精品国免费一区二区三区| 亚洲另类春色校园小说| 国产一区二区h| 欧美日韩精品久久久| 国产精品久久久久aaaa| 精品一区中文字幕| 欧美日韩亚洲国产综合| 久久99精品国产.久久久久 | 欧美日韩国产不卡| 国产亚洲女人久久久久毛片| 亚洲一线二线三线视频| 国产99一区视频免费| 制服丝袜日韩国产| 亚洲色图在线看| 国产成人免费av在线| 日韩亚洲欧美综合| 一区二区三区不卡视频在线观看| 国产成人免费视频网站高清观看视频| 欧美精品久久99| 亚洲永久精品大片| 韩国视频一区二区| 欧美性受极品xxxx喷水| 中文字幕一区av| 成人激情开心网| 久久先锋影音av鲁色资源网| 日本成人在线一区| 欧美日韩精品一区二区| 一区二区三区欧美| 91老师片黄在线观看| 国产精品毛片高清在线完整版| 国产一区二区三区在线看麻豆| 日韩一二三区不卡| 另类的小说在线视频另类成人小视频在线| 欧美人妖巨大在线| 亚洲国产精品一区二区www在线| 色婷婷综合久久久久中文一区二区 | 欧美嫩在线观看| 夜夜精品视频一区二区| 色999日韩国产欧美一区二区| 亚洲日穴在线视频| 91在线无精精品入口| 中文字幕佐山爱一区二区免费| 99久久精品久久久久久清纯| 136国产福利精品导航| 91美女在线看| 亚洲你懂的在线视频| 欧美亚洲一区二区在线| 精品理论电影在线观看 | 欧美午夜视频网站| 亚洲国产精品久久久久婷婷884| 欧美午夜精品免费| 婷婷丁香久久五月婷婷| 91精品国产一区二区三区香蕉| 美洲天堂一区二卡三卡四卡视频| 日韩免费电影网站| 国产一区不卡视频| 综合电影一区二区三区| 欧洲一区二区av| 免费的成人av| 久久久99精品久久| a级精品国产片在线观看| 亚洲综合在线五月| 欧美一区二区日韩| 国产成人午夜高潮毛片| 日韩毛片一二三区| 欧美精品精品一区| 国产99久久久久久免费看农村| 亚洲日本va在线观看| 欧美高清dvd| 粉嫩在线一区二区三区视频|