FossilOrigin-Name: 2a80ff74e83e1f6e99aba589ec8cec08d640199362326c61959aff81e93c5e0c
This commit is contained in:
7u83@mail.ru 2014-08-18 05:30:21 +00:00
parent a7a0616854
commit e638fd4aa2
8 changed files with 75 additions and 44 deletions

View File

@ -13,6 +13,7 @@ static int pmessage(void *w, struct cwrmsg * cwrmsg)
{
uint8_t * buffer;
buffer = malloc( sizeof (struct cwrmsg) + cwrmsg->msgelems_len);
memcpy(buffer,cwrmsg,sizeof(struct cwrmsg));
memcpy(buffer+sizeof(struct cwrmsg),cwrmsg->msgelems,cwrmsg->msgelems_len);
((struct cwrmsg*)(buffer))->msgelems=buffer+sizeof(struct cwrmsg);

View File

@ -9,8 +9,6 @@
struct cwrmsg * conn_get_response(struct conn * conn)
{
printf("Starting timer 120\n");
time_t timer = cw_timer_start(160);
struct cwmsg * cwmsg = &conn->req_msg;
@ -23,36 +21,31 @@ struct cwrmsg * conn_get_response(struct conn * conn)
struct cwrmsg * cwrmsg;
time_t rpt_timer = cw_timer_start(5);
do {
cwrmsg = conn_get_message(conn);
int i;
for (i=0; i<conn->max_retransmit; i++) {
time_t r_timer = cw_timer_start(conn->retransmit_interval);
if (cwrmsg){
cw_dbg(DBG_CW_MSG,"Received message from %s, type=%d - %s"
,sock_addr2str(&conn->addr),cwrmsg->type,cw_msgtostr(cwrmsg->type));
if (cwrmsg->type == type){
printf("Jea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11\n");
return cwrmsg;
}
}
while(!cw_timer_timeout(r_timer)){
cwrmsg = conn_get_message(conn);
if (cwrmsg){
cw_dbg(DBG_CW_MSG,"Received message from %s, type=%d - %s"
,sock_addr2str(&conn->addr),cwrmsg->type,cw_msgtostr(cwrmsg->type));
if (cwrmsg->type == type){
printf("Jea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11\n");
return cwrmsg;
}
}
if (cw_timer_timeout(rpt_timer)){
rpt_timer = cw_timer_start(5);
printf("Retransmitting request\n");
conn_send_cwmsg(conn,&conn->req_msg);
if (conn->dtls_error)
return 0;
}
cw_dbg(DBG_CW_MSG_ERR,"Retransmitting message, type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
conn_send_cwmsg(conn,&conn->req_msg);
if (conn->dtls_error)
return 0;
}while(!cw_timer_timeout(timer));
printf("Timeout!!!!!\n");
}
cw_dbg(DBG_CW_MSG_ERR,"Max retransmit's reached, message type=%d,seq=%d",cwmsg->type,cwmsg->seqnum);
return 0;
}

View File

@ -26,6 +26,7 @@ int conn_q_recv_packet(struct conn * conn, uint8_t * buffer,int len)
{
if ( !conn->cur_packet)
{
/* while ((conn->cur_packet = conn_q_get_packet(conn)) == 0){*/
if ((conn->cur_packet = conn_q_get_packet(conn)) == 0){
errno = EAGAIN;
return -1;

View File

@ -7,15 +7,17 @@
#include "conn.h"
#include <stdio.h>
int conn_recv_packet(struct conn* conn,uint8_t *buf,int len)
{
// printf("Conn recv packet called\n");
printf("THHHHHHHHHHHHHHHHHHHHHHHHHe Conn recv packet called\n");
int n;
int flags=0;
while( (n = recv(conn->sock,(char*)buf,len,flags)) < 0 ){
if (errno!=EINTR)
{
/* if (errno == EWOULDBLOCK)
if (errno == EWOULDBLOCK)
{
printf("would block\n");
}
@ -24,8 +26,8 @@ int conn_recv_packet(struct conn* conn,uint8_t *buf,int len)
printf("again\n");
}
perror("recv");
*/
return n;
return n;
}
}
return n;

View File

@ -32,25 +32,42 @@ void cwmsg_addelem_ac_descriptor(struct cwmsg *msg,struct ac_info * acinfo)
int sublen;
sublen = 4;
*((uint32_t*)(acd+len))=htonl(CW_VENDOR_ID_CISCO);
len+=4;
*((uint32_t*)(acd+len))=htonl((1<<16)|sublen);
len+=4;
*(acd+len)=7; len++;
*(acd+len)=3; len++;
*(acd+len)=1; len++;
*(acd+len)=72; len++;
/* *(acd+len)=5; len++;
*(acd+len)=6; len++;
*(acd+len)=7; len++;
*(acd+len)=8; len++;
*/
/* software version subelement */
*((uint32_t*)(acd+len))=0;
/* *((uint32_t*)(acd+len))=htonl(CW_VENDOR_ID_CISCO);
len+=4;
sublen=strlen((const char*)acinfo->software_version);
*((uint32_t*)(acd+len))=htonl((5<<16)|sublen);
*((uint32_t*)(acd+len))=htonl((1<<16)|sublen);
len+=4;
memcpy(acd+len,acinfo->software_version,sublen);
len+=sublen;
*/
/* hardware version subelement */
*((uint32_t*)(acd+len))=0;
/* *((uint32_t*)(acd+len))=htonl(CW_VENDOR_ID_CISCO);
len+=4;
sublen=strlen((const char*)acinfo->hardware_version);
*((uint32_t*)(acd+len))=htonl((4<<16)|sublen);
len+=4;
memcpy(acd+len,acinfo->hardware_version,sublen);
len+=sublen;
*/
cwmsg_addelem(msg,CWMSGELEM_AC_DESCRIPTOR,acd,len);
}

View File

@ -32,10 +32,21 @@ int cwsend_image_data_request(struct conn * conn, struct image_data * data, stru
if (data){
// cwmsg_addelem(&cwmsg,CWMSGELEM_IMAGE_DATA,(uint8_t*)&data->type,sizeof(data->type));
uint8_t type=3;
uint16_t checksum=0;
cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 2,
&type, 1,
&checksum,2,
data->data, data->len
);
/* cwmsg_vaddelem(cwmsg,CWMSGELEM_IMAGE_DATA, 2,
&data->type, sizeof(data->type),
data->data, data->len
);
*/
}
return conn_send_cwmsg(conn,cwmsg);

View File

@ -89,6 +89,9 @@ int join(struct sockaddr *sa)
#ifdef WITH_DTLS
cw_dbg (DBG_DTLS,"Establishing DTLS session with %s",sock_addr2str(sa));
/*
#ifdef WITH_CW_LOG_DEBUG
{
char str[100];
@ -96,7 +99,7 @@ int join(struct sockaddr *sa)
cw_log_debug0("Establishing DTLS connection to %s",str);
}
#endif
*/
if (conf_dtls_psk){
conn->dtls_psk=conf_dtls_psk;
conn->dtls_psk_len=strlen(conn->dtls_psk);
@ -125,6 +128,9 @@ int join(struct sockaddr *sa)
}
#endif
cw_dbg (DBG_DTLS,"DTLS session established with %s, cipher=%s",sock_addr2str(sa),dtls_get_cipher(conn));
exit(0);
#ifdef WITH_CW_LOG_DEBUG
{

View File

@ -19,6 +19,7 @@
struct wtpinfo wtpinfo;
//int conf_rids[2];
@ -100,17 +101,16 @@ int wtp_main(const char *ad)
wtpconf_init();
cw_log_debug_level=6; //conf_debug_level;
// cw_log_debug_level=6; //conf_debug_level;
conf_dtls_psk="Tube";
conf_dtls_psk=0;
// conf_dtls_psk=0;
// conf_sslkeyfilename="../../ssl/wtp.key";
// conf_sslcertfilename="../../ssl/wtp.crt";
// conf_sslkeypass="7u83";
conf_sslkeyfilename="../../ssl/wtp.key";
conf_sslcertfilename="../../ssl/wtp.crt";
conf_sslkeypass="7u83";
cw_dbg_opt_type = DBG_DTLS;
#ifdef WITH_DTLS
dtls_init();