148 warning(0,
"WSP UNIT: Empty datagram.");
159 if (pdu->
type != Get && pdu->
type != Post) {
160 warning(0,
"WSP UNIT: Unsupported PDU type %d", pdu->
type);
166 datagram->
u.T_DUnitdata_Ind.addr_tuple);
167 event->u.S_Unit_MethodInvoke_Ind.transaction_id = tid_byte;
171 debug(
"wap.wsp", 0,
"Connectionless Get request received.");
173 event->
u.S_Unit_MethodInvoke_Ind.request_uri =
175 event->u.S_Unit_MethodInvoke_Ind.request_headers =
177 event->u.S_Unit_MethodInvoke_Ind.request_body = NULL;
181 debug(
"wap.wsp", 0,
"Connectionless Post request received.");
183 event->
u.S_Unit_MethodInvoke_Ind.request_uri =
185 event->u.S_Unit_MethodInvoke_Ind.request_headers =
187 event->u.S_Unit_MethodInvoke_Ind.request_body =
192 warning(0,
"WSP UNIT: Unsupported PDU type %d", pdu->
type);
199 event->u.S_Unit_MethodInvoke_Ind.method =
method_name;
223 debug(
"wap.wsp.unit", 0,
"WSP (UNIT): event arrived");
226 case T_DUnitdata_Ind:
228 if (newevent != NULL)
232 case S_Unit_MethodResult_Req:
234 if (newevent != NULL)
238 case S_Unit_Push_Req:
240 if (newevent != NULL)
242 debug(
"wsp.unit", 0,
"WSP (UNIT): delivering to wdp");
246 warning(0,
"WSP UNIT: Unknown event type %d", e->
type);
264 struct S_Unit_MethodResult_Req *p;
270 p = &
event->u.S_Unit_MethodResult_Req;
283 tid = p->transaction_id;
287 datagram->
u.T_DUnitdata_Req.addr_tuple =
289 datagram->
u.T_DUnitdata_Req.user_data = ospdu;
303 unsigned char push_id;
306 debug(
"wap.wsp.unit", 0,
"WSP_UNIT: Connectionless push accepted");
309 "Encoding-Version",
"1.3");
313 event->
u.S_Unit_Push_Req.push_headers, 1,
WSP_1_3);
315 event->
u.S_Unit_Push_Req.push_body);
322 push_id =
event->u.S_Unit_Push_Req.push_id;
327 datagram->
u.T_DUnitdata_Req.addr_tuple =
329 datagram->
u.T_DUnitdata_Req.address_type =
330 event->
u.S_Unit_Push_Req.address_type;
331 if (event->
u.S_Unit_Push_Req.smsc_id != NULL)
332 datagram->
u.T_DUnitdata_Req.smsc_id =
335 datagram->
u.T_DUnitdata_Req.smsc_id = NULL;
336 if (event->
u.S_Unit_Push_Req.dlr_url != NULL)
337 datagram->
u.T_DUnitdata_Req.dlr_url =
340 datagram->
u.T_DUnitdata_Req.dlr_url = NULL;
341 datagram->
u.T_DUnitdata_Req.dlr_mask =
event->
u.S_Unit_Push_Req.dlr_mask;
342 if (event->
u.S_Unit_Push_Req.smsbox_id != NULL)
343 datagram->
u.T_DUnitdata_Req.smsbox_id =
346 datagram->
u.T_DUnitdata_Req.smsbox_id = NULL;
347 datagram->
u.T_DUnitdata_Req.service_name =
350 datagram->
u.T_DUnitdata_Req.user_data = ospdu;
long wsp_convert_http_status_to_wsp_status(long http_status)
void error(int err, const char *fmt,...)
void http_header_add(List *headers, char *name, char *contents)
static Octstr * method_name
gw_assert(wtls_machine->packet_to_send !=NULL)
void gwlist_produce(List *list, void *item)
Octstr * wsp_pdu_pack(WSP_PDU *pdu)
void octstr_insert_data(Octstr *ostr, long pos, const char *data, long len)
static void main_thread(void *)
void gwthread_join_every(gwthread_func_t *func)
WAPAddrTuple * wap_addr_tuple_duplicate(WAPAddrTuple *tuple)
WSP_PDU * wsp_pdu_create(int type)
void wap_event_assert(WAPEvent *event)
void octstr_delete(Octstr *ostr1, long pos, long len)
void gwlist_remove_producer(List *list)
void wap_event_destroy_item(void *event)
#define octstr_duplicate(ostr)
static WAPEvent * unpack_datagram(WAPEvent *datagram)
static wap_dispatch_func_t * dispatch_to_appl
#define wap_event_create(type)
void warning(int err, const char *fmt,...)
Octstr * octstr_format(const char *fmt,...)
void octstr_destroy(Octstr *ostr)
#define gwthread_create(func, arg)
void wsp_pdu_destroy(WSP_PDU *pdu)
static wap_dispatch_func_t * dispatch_to_wdp
long octstr_len(const Octstr *ostr)
void wsp_strings_shutdown(void)
void wsp_unit_init(wap_dispatch_func_t *datagram_dispatch, wap_dispatch_func_t *application_dispatch)
void * gwlist_consume(List *list)
void wsp_strings_init(void)
void debug(const char *place, int err, const char *fmt,...)
static WAPEvent * pack_into_push_datagram(WAPEvent *event)
void wsp_pdu_dump(WSP_PDU *pdu, int level)
static enum @92 run_status
static WAPEvent * pack_into_result_datagram(WAPEvent *event)
void gwlist_add_producer(List *list)
int octstr_get_char(const Octstr *ostr, long pos)
void wsp_unit_dispatch_event(WAPEvent *event)
WSP_PDU * wsp_pdu_unpack(Octstr *data)
void wsp_unit_shutdown(void)
void wap_event_destroy(WAPEvent *event)
void wap_dispatch_func_t(WAPEvent *event)
void gwlist_destroy(List *list, gwlist_item_destructor_t *destructor)