📄 jnw_http.c
字号:
{
j2me_http_wps_native_data.status = p->status;
j2me_http_wps_native_data.more_data = p->more;
if (ilm_ptr->peer_buff_ptr)
{
if (wps_pun_var_part
(WPS_PUN_UNPACK, ilm_ptr->msg_id, &http_rsp_var,
get_pdu_ptr(ilm_ptr->peer_buff_ptr, &pdu_length)) > 0)
{
j2me_http_wps_native_data.reply_header_len = http_rsp_var.reply_header_len;
if (j2me_http_wps_native_data.reply_header_len > 0)
{
j2me_http_wps_native_data.reply_header =
(kal_uint8*) jvm_malloc(j2me_http_wps_native_data.reply_header_len);
if (j2me_http_wps_native_data.reply_header == NULL)
{
J2ME_http_update_result(WPS_ERROR_NO_RESOURCE);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
break;
}
memcpy(
j2me_http_wps_native_data.reply_header,
http_rsp_var.reply_header,
j2me_http_wps_native_data.reply_header_len);
}
j2me_http_wps_native_data.reply_segment_len = http_rsp_var.reply_segment_len;
if (j2me_http_wps_native_data.reply_segment_len > 0)
{
j2me_http_wps_native_data.reply_segment =
(kal_uint8*) jvm_malloc(j2me_http_wps_native_data.reply_segment_len);
if (j2me_http_wps_native_data.reply_segment == NULL)
{
J2ME_http_update_result(WPS_ERROR_NO_RESOURCE);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
break;
}
memcpy(
j2me_http_wps_native_data.reply_segment,
http_rsp_var.reply_segment,
j2me_http_wps_native_data.reply_segment_len);
}
}
}
#ifdef __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__
j2me_http_reset_write_req_data();
#endif /* __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__ */
}
#ifdef __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__
else if (WPS_ERROR_REQ_ABORT == p->result &&
KAL_TRUE == j2me_http_is_gprs_fail(p->status) &&
KAL_TRUE == j2me_http_is_csd_net_id_existed() &&
NULL != j2me_http_write_req_data.url)
{
j2me_http_wps_native_data.status = p->status;
}
#endif /* __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__ */
else
{
#ifdef __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__
j2me_http_reset_write_req_data();
#endif /* __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__ */
}
J2ME_http_update_result(p->result);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_READ_CONTENT_RSP:
{
wps_read_content_rsp_struct *p = (wps_read_content_rsp_struct*) ilm_ptr->local_para_ptr;
wps_read_content_rsp_var_struct http_read_content_rsp_var;
kal_uint16 pdu_length = 0;
kal_trace(TRACE_GROUP_3, FUNC_HTTP_WPS_RESPONSE_HANDLER_4);
j2me_http_wps_native_data.msg_type = MSG_WPS_READ_CONTENT_RSP;
j2me_http_wps_native_data.req_id = p->request_id;
j2me_http_wps_native_data.more_data = p->more;
if (p->result == WPS_OK && ilm_ptr->peer_buff_ptr)
{
if (wps_pun_var_part
(WPS_PUN_UNPACK, ilm_ptr->msg_id, &http_read_content_rsp_var,
get_pdu_ptr(ilm_ptr->peer_buff_ptr, &pdu_length)) > 0)
{
j2me_http_wps_native_data.reply_segment_len = http_read_content_rsp_var.reply_segment_len;
if (j2me_http_wps_native_data.reply_segment_len > 0)
{
j2me_http_wps_native_data.reply_segment =
(kal_uint8*) jvm_malloc(j2me_http_wps_native_data.reply_segment_len);
if (j2me_http_wps_native_data.reply_segment == NULL)
{
J2ME_http_update_result(WPS_ERROR_NO_RESOURCE);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
break;
}
memcpy(
j2me_http_wps_native_data.reply_segment,
http_read_content_rsp_var.reply_segment,
j2me_http_wps_native_data.reply_segment_len);
}
}
}
J2ME_http_update_result(p->result);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_POST_CONTENT_IND:
{
wps_post_content_ind_struct *p = (wps_post_content_ind_struct*) ilm_ptr->local_para_ptr;
kal_trace(TRACE_GROUP_3, FUNC_HTTP_WPS_RESPONSE_HANDLER_5);
j2me_http_wps_native_data.msg_type = MSG_WPS_POST_CONTENT_IND;
j2me_http_wps_native_data.req_id = p->request_id;
J2ME_http_update_result(p->result);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_SEC_GET_SESSION_INFO_RSP:
{
wps_sec_get_session_info_rsp_struct *p = (wps_sec_get_session_info_rsp_struct*) ilm_ptr->local_para_ptr;
kal_trace(TRACE_GROUP_3, FUNC_HTTP_WPS_RESPONSE_HANDLER_6);
j2me_http_wps_native_data.msg_type = MSG_WPS_SEC_GET_SESSION_INFO_RSP;
if (p->result == WPS_OK)
{
j2me_http_wps_native_sec_data.key_exchange_alg = p->key_exchange_alg;
j2me_http_wps_native_sec_data.bulk_encryption_alg = p->blk_encrypt_alg;
j2me_http_wps_native_sec_data.hash_alg = p->hash_alg;
j2me_http_wps_native_sec_data.sec_conn_type = p->sec_conn_type;
j2me_http_wps_native_sec_data.data_ready = KAL_TRUE;
}
J2ME_http_update_result(p->result);
call_back_id = p->channel_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_SEC_GET_CURRENT_CERT_RSP:
{
wps_sec_get_current_cert_rsp_struct *p = (wps_sec_get_current_cert_rsp_struct*) ilm_ptr->local_para_ptr;
kal_trace(TRACE_GROUP_3, FUNC_HTTP_WPS_RESPONSE_HANDLER_7);
j2me_http_wps_native_data.msg_type = MSG_WPS_SEC_GET_CURRENT_CERT_RSP;
if (p->result == WPS_OK)
{
if (j2me_http_wps_native_sec_data.cert_data == NULL)
{
j2me_http_wps_native_sec_data.cert_data =
(j2me_http_wps_sec_cert_struct*) jvm_malloc(sizeof(j2me_http_wps_sec_cert_struct));
}
if (j2me_http_wps_native_sec_data.cert_data == NULL)
{
J2ME_http_update_result(WPS_ERROR_NO_RESOURCE);
call_back_id = p->channel_id;
call_back_needed = KAL_TRUE;
break;
}
j2me_http_wps_native_sec_data.cert_data->issuer_len = p->issuer_len;
j2me_http_wps_native_sec_data.cert_data->serial_num_len = p->serial_num_len;
j2me_http_wps_native_sec_data.cert_data->sig_alg_name_len = p->sig_alg_name_len;
j2me_http_wps_native_sec_data.cert_data->subject_len = p->subject_len;
j2me_http_wps_native_sec_data.cert_data->issuer = (kal_uint8*) jvm_malloc(p->issuer_len);
j2me_http_wps_native_sec_data.cert_data->serial_num = (kal_uint8*) jvm_malloc(p->serial_num_len);
j2me_http_wps_native_sec_data.cert_data->sig_alg_name = (kal_uint8*) jvm_malloc(p->sig_alg_name_len);
j2me_http_wps_native_sec_data.cert_data->subject = (kal_uint8*) jvm_malloc(p->subject_len);
if (j2me_http_wps_native_sec_data.cert_data->issuer == NULL ||
j2me_http_wps_native_sec_data.cert_data->serial_num == NULL ||
j2me_http_wps_native_sec_data.cert_data->sig_alg_name == NULL ||
j2me_http_wps_native_sec_data.cert_data->subject == NULL)
{
J2ME_http_update_result(WPS_ERROR_NO_RESOURCE);
call_back_id = p->channel_id;
call_back_needed = KAL_TRUE;
break;
}
memcpy(j2me_http_wps_native_sec_data.cert_data->issuer, p->issuer, p->issuer_len);
memcpy(j2me_http_wps_native_sec_data.cert_data->serial_num, p->serial_num, p->serial_num_len);
memcpy(j2me_http_wps_native_sec_data.cert_data->sig_alg_name, p->sig_alg_name, p->sig_alg_name_len);
memcpy(j2me_http_wps_native_sec_data.cert_data->subject, p->subject, p->subject_len);
j2me_http_wps_native_sec_data.cert_data->not_after = p->not_after;
j2me_http_wps_native_sec_data.cert_data->not_before = p->not_before;
j2me_http_wps_native_sec_data.cert_data->type = p->type;
j2me_http_wps_native_sec_data.cert_data->version = p->version;
}
J2ME_http_update_result(p->result);
call_back_id = p->channel_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_CANCEL_RSP:
{
wps_cancel_rsp_struct *p = (wps_cancel_rsp_struct*) ilm_ptr->local_para_ptr;
j2me_http_wps_native_data.msg_type = MSG_WPS_CANCEL_RSP;
j2me_http_wps_native_data.req_id = p->request_id;
/* The cancel primitive is used to close conenction */
if (j2me_http_is_closing_connection)
{
j2me_http_is_closing_connection = KAL_FALSE;
/* Close a not pending connection */
if (p->result == WPS_ERROR_INVALID_REQUEST_ID)
{
p->result = WPS_OK;
}
}
J2ME_http_update_result(p->result);
call_back_id = p->request_id;
call_back_needed = KAL_TRUE;
}
break;
case MSG_ID_WPS_CLEAR_RSP:
{
wps_clear_rsp_struct *p = (wps_clear_rsp_struct*) ilm_ptr->local_para_ptr;
J2ME_http_update_result(p->result);
}
break;
case MSG_ID_WPS_HTTP_AUTH_IND:
{
if(auto_return_for_auth)
{
wps_http_auth_ind_struct *p = (wps_http_auth_ind_struct*) ilm_ptr->local_para_ptr;
wps_http_auth_res_struct *auth_res;
auth_res = (wps_http_auth_res_struct*) construct_local_para(sizeof(wps_http_auth_res_struct), TD_CTRL);
auth_res->channel_id = p->channel_id;
auth_res->request_id = p->request_id;
auth_res->username[0] = 0;
auth_res->password[0] = 0;
J2ME_http_send_ilm(auth_res, NULL, MSG_ID_WPS_HTTP_AUTH_RES, MOD_WPS);
}
}
break;
#ifdef __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__
case MSG_ID_WPS_RECONFIG_CHANNEL_RSP:
{
wps_reconfig_channel_rsp_struct *p = (wps_reconfig_channel_rsp_struct*) ilm_ptr->local_para_ptr;
if (WPS_OK == p->result &&
NULL != j2me_http_write_req_data.url)
{
J2ME_async_http_msgid = 0;
jnw_http_write_req(
j2me_http_write_req_data.conn_id,
j2me_http_write_req_data.http_method,
j2me_http_write_req_data.url_length,
(char*)j2me_http_write_req_data.url,
j2me_http_write_req_data.header_length,
(char*)j2me_http_write_req_data.header,
j2me_http_write_req_data.total_post_content_length,
j2me_http_write_req_data.post_segment_length,
(char*)j2me_http_write_req_data.post_segment,
j2me_http_write_req_data.more_post);
}
else
{
J2ME_async_http_msgid = MSG_ID_WPS_HTTP_RSP;
}
j2me_http_reset_write_req_data();
}
break;
#endif /* __JAVA_SUPPORT_HTTP_BEARER_FALLBACK__ */
default:
break;
}
/* notify J2ME thread to process coming async event */
kal_set_eg_events(J2ME_async_http_eventgroup, 1, KAL_OR);
if(call_back_needed)
{
jnw_callback_handler(call_back_id);
}
return;
}
/*****************************************************************************
* FUNCTION
* jnw_http_get_current_response_connection_id
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
int jnw_http_get_current_response_connection_id()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int reqId = (int)j2me_http_wps_native_data.req_id;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return reqId;
}
/*****************************************************************************
* FUNCTION
* jnw_http_get_current_primitive
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
int jnw_http_get_current_primitive()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int msgType = (int)j2me_http_wps_native_data.msg_type;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return msgType;
}
/*****************************************************************************
* FUNCTION
* jnw_http_get_connection_id
* DESCRIPTION
*
* PARAMETERS
* channel_type [IN]
* RETURNS
*
*****************************************************************************/
int jnw_http_get_connection_id(int channel_type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int CurrReqId = 0;
int channelType = channel_type;
/*----------------------------------------------------------------*/
/* Code Body */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -