114 #include <sys/types.h>   115 #include <sys/socket.h>   133 #define DEFAULT_CHARSET         "UTF-8"   134 #define DEFAULT_UCS2_CHARSET    "UTF-16BE"   167     List *headers, *cgivars;
   174         ip = 
url = body = NULL;
   175         headers = cgivars = NULL;
   180                                      &headers, &body, &cgivars);
   184         if (cgivars != NULL) {
   189         debug(
"smsc.http", 0, 
"HTTP[%s]: Got request `%s'",
   193             info(0, 
"HTTP[%s]: Connection `%s' tried from denied "   200         debug(
"smsc.http", 0, 
"HTTP[%s]: Destroying client information",
   208     debug(
"smsc.http", 0, 
"HTTP[%s]: httpsmsc_receiver dying",
   327                                   &final_url, &headers, &body);
   340             error(0, 
"HTTP[%s]: Couldn't connect to SMS center."   341                      "(retrying in %ld seconds) %ld.",
   387     debug(
"smsc.http", 0, 
"HTTP[%s]: httpsmsc_send_cb dying",
   392         warning(0, 
"HTTP[%s]: Shutdown while <%ld> requests are pending.",
   424         if (sms->sms.coding == 
DC_7BIT) {
   429                 error(0, 
"Failed to convert msgdata from charset <%s> to <%s>, will send as is.",
   433         else if (sms->sms.coding == 
DC_UCS2) {
   438                 error(0, 
"Failed to convert msgdata from charset <%s> to <%s>, will send as is.",
   468     debug(
"httpsmsc_shutdown", 0, 
"HTTP[%s]: Shutting down",
   497         error(0, 
"HTTP[%s]: 'system-type' missing in smsc 'http' record.",
   512         warning(0, 
"HTTP[%s]: 'port' not set in smsc 'http' group.",
   536         error(0, 
"HTTP[%s]: Sender and receiver disabled. Dummy SMSC not allowed.",
   541         error(0, 
"HTTP[%s]: Sending not allowed. No 'send-url' specified.",
   550         error(0, 
"HTTP[%s]: system-type '%s' unknown smsc 'http' record.",
   610     error(0, 
"HTTP[%s]: Failed to create HTTP SMSC connection",
 
void error(int err, const char *fmt,...)
 
void info(int err, const char *fmt,...)
 
Msg * msg_duplicate(Msg *msg)
 
void bb_smscconn_connected(SMSCConn *conn)
 
static void httpsmsc_receiver(void *arg)
 
static void conndata_destroy(ConnData *conndata)
 
int gw_dlopen_get_symbol(const char *lib_path, const char *name, void **result)
 
int(* send_sms)(SMSCConn *conn, Msg *msg)
 
void http_caller_signal_shutdown(HTTPCaller *caller)
 
void counter_destroy(Counter *counter)
 
void http_close_client(HTTPClient *client)
 
void bb_smscconn_killed(void)
 
void semaphore_destroy(Semaphore *semaphore)
 
void gwlist_produce(List *list, void *item)
 
void gwthread_join(long thread)
 
long gwlist_len(List *list)
 
static void client(int port)
 
void octstr_append_char(Octstr *ostr, int ch)
 
#define cfg_get(grp, varname)
 
void(* parse_reply)(SMSCConn *conn, Msg *msg, int status, List *headers, Octstr *body)
 
unsigned long counter_decrease(Counter *counter)
 
#define octstr_get_cstr(ostr)
 
int smsc_http_create(SMSCConn *conn, CfgGroup *cfg)
 
void(* destroy)(SMSCConn *conn)
 
unsigned long counter_increase(Counter *counter)
 
int connect_denied(Octstr *allow_ip, Octstr *ip)
 
void log_thread_to(int idx)
 
void semaphore_down(Semaphore *semaphore)
 
smscconn_killed_t why_killed
 
void http_destroy_headers(List *headers)
 
void http_destroy_cgiargs(List *args)
 
Octstr * octstr_imm(const char *cstr)
 
Counter * counter_create(void)
 
void * gwlist_extract_first(List *list)
 
HTTPClient * http_accept_request(int port, Octstr **client_ip, Octstr **url, List **headers, Octstr **body, List **cgivars)
 
void http_close_port(int port)
 
void gwlist_remove_producer(List *list)
 
static void httpsmsc_send_cb(void *arg)
 
void warning(int err, const char *fmt,...)
 
void http_cgivar_dump_into(List *cgiargs, Octstr *os)
 
Octstr * octstr_format(const char *fmt,...)
 
void octstr_destroy(Octstr *ostr)
 
#define gwthread_create(func, arg)
 
unsigned long counter_value(Counter *counter)
 
void gwthread_sleep(double seconds)
 
#define DEFAULT_UCS2_CHARSET
 
static int httpsmsc_shutdown(SMSCConn *conn, int finish_sending)
 
int http_open_port(int port, int ssl)
 
Semaphore * max_pending_sends
 
#define http_receive_result(caller, status, final_url, headers, body)
 
void semaphore_up(Semaphore *semaphore)
 
int cfg_get_bool(int *n, CfgGroup *grp, Octstr *varname)
 
int(* init)(SMSCConn *conn, CfgGroup *cfg)
 
void * gwlist_consume(List *list)
 
static long httpsmsc_queued(SMSCConn *conn)
 
int(* shutdown)(SMSCConn *conn, int finish_sending)
 
void debug(const char *place, int err, const char *fmt,...)
 
int cfg_get_integer(long *n, CfgGroup *grp, Octstr *varname)
 
void gwthread_wakeup(long thread)
 
HTTPCaller * http_caller_create(void)
 
long(* queued)(SMSCConn *conn)
 
int(* send_msg)(SMSCConn *conn, Msg *msg)
 
static int httpsmsc_send(SMSCConn *conn, Msg *msg)
 
void bb_smscconn_send_failed(SMSCConn *conn, Msg *sms, int reason, Octstr *reply)
 
void http_caller_destroy(HTTPCaller *caller)
 
void gwlist_add_producer(List *list)
 
void(* receive_sms)(SMSCConn *conn, HTTPClient *client, List *headers, Octstr *body, List *cgivars)
 
static void httpsmsc_sender(void *arg)
 
struct smsc_http_fn_callbacks * callbacks
 
Semaphore * semaphore_create(long n)
 
static XMLRPCDocument * msg
 
int charset_convert(Octstr *string, char *charset_from, char *charset_to)
 
void gwlist_destroy(List *list, gwlist_item_destructor_t *destructor)