Hello,
I'm using the SK-S7G2 and I wrote a server program with TLS and I am able to send packets to a client program successfully. However, at some point my program stops as if it hits a breakpoint after continuously sending packets. I get this bus error at memcpy() (pls see attached)
These are the lines of code that I loop...
This just loops continuously. I wait for a message from the client and I send something back. It works for a number of iterations and then error occurs. My gut feel is that it has something to do with packet pool overflowing. I tried a few things like adding NX_release_packet(Send_Packet) and nx_transmit_release_packet(Send_Packet) after the last line in the loop but I still got the problem. Any idea on how to solve this?
Thanks
AJ
loop()
{
wait for packet from client
after receiving from client, respond..
status = nx_secure_tls_packet_allocate(&TLS_Session, &g_packet_pool0, &Send_Packet, NX_WAIT_FOREVER);
status = nx_packet_data_append(Send_Packet, (char *)(file_obj + z), (unsigned long)size, &g_packet_pool0, NX_WAIT_FOREVER);
status = nx_secure_tls_session_send(&TLS_Session, Send_Packet, NX_WAIT_FOREVER);
z = z + file_obj_chunk_size; //chunk size is 512 bytes
status = nx_secure_tls_packet_allocate(&TLS_Session, &g_packet_pool0, &Send_Packet, NX_WAIT_FOREVER);
status = nx_packet_data_append(Send_Packet, (char *)Http_End_Chunk, sizeof(Http_End_Chunk)-1, &g_packet_pool0, NX_WAIT_FOREVER);
status = nx_secure_tls_session_send(&TLS_Session, Send_Packet, NX_WAIT_FOREVER);
status = nx_secure_tls_session_end(&TLS_Session, 50);
if(status != NX_SUCCESS)
{
write_console_msg("\n\rTLS end error");
ulong_to_hex_ascii(status, val_array);
write_console_msg("\n\rstatus = ");
write_console_msg(val_array);
}//end if(status != NX_SUCCESS)
status = nx_secure_tls_session_delete(&TLS_Session);
if(status != NX_SUCCESS)
{
write_console_msg("\n\rTLS end error");
ulong_to_hex_ascii(status, val_array);
write_console_msg("\n\rstatus = ");
write_console_msg(val_array);
}//end if(status != NX_SUCCESS)
write_console_msg("\n\n\rSocket clean up...");
status = nx_tcp_socket_disconnect(&TCP_Socket[k], 50);
if(status != NX_SUCCESS)
{
write_console_msg("\n\rSocket disconnect error");
ulong_to_hex_ascii(status, val_array);
write_console_msg("\n\rstatus = ");
write_console_msg(val_array);
}//end if(status != NX_SUCCESS)
0, 0, 0, 0, 0, 0, 0, &state, 0, 0, 0);
write_console_msg("\n\rSocket ");
ulong_to_ascii(k, val_array);
write_console_msg(val_array);
write_console_msg(" state = ");
ulong_to_hex_ascii(state, val_array);
write_console_msg(val_array);
{
write_console_msg("\n\rUnaccepting socket... ");
status = nx_tcp_server_socket_unaccept(&TCP_Socket[k]);
if(status != NX_SUCCESS)
{
write_console_msg("\n\rSocket unaccept error");
ulong_to_hex_ascii(status, val_array);
write_console_msg("\n\rstatus = ");
write_console_msg(val_array);
}//end if(status != NX_SUCCESS)
0, 0, 0, 0, 0, 0, 0, &state, 0, 0, 0);
write_console_msg("\n\rSocket ");
ulong_to_ascii(k, val_array);
write_console_msg(val_array);
write_console_msg(" state = ");
ulong_to_hex_ascii(state, val_array);
write_console_msg(val_array);
if(status != NX_SUCCESS)
{
write_console_msg("\n\rRe-listen error");
ulong_to_hex_ascii(status, val_array);
write_console_msg("\n\rstatus = ");
write_console_msg(val_array);
}//end if(status != NX_SUCCESS)
}//end if (NX_TCP_CLOSED != state)
}//end loop