Hi! I have 2 questions regarding the receive buffer:
1. Core parameter: tcp_clone_rcvbuf
Control if the received buffer should be cloned from the TCP stream, needed by functions working inside the SIP message buffer (such as msg_apply_changes()).
Default is 0 (don't clone), set it to 1 for cloning.
Does this mean that in the default setting msg_apply_changes() does not work for messages received via TCP? If yes, we should add this information to the documentation of msg_apply_changes().
2. in udp_server.c function udp_rcv_loop(): { #ifdef DYN_BUF char* buf; #else static char buf [BUF_SIZE+1]; #endif
...
#ifdef DYN_BUF buf=pkg_malloc(BUF_SIZE+1); if (buf==0){ LOG(L_ERR, "ERROR: udp_rcv_loop: could not allocate receive" " buffer\n"); goto error; } #endif
...
/* receive_msg must free buf too!*/ receive_msg(buf, len, &ri); ... }
a) I think the /* receive_msg must free buf too!*/ comment is wrong as receive_msg does not free the buffer. It does not even know if it is a static buffer or allocated. -> remove the comment?
b) It seems that if DYN_BUF is defined, "buf" will not be freed at all.
regards Klaus