add: */
context: int udp_rcv_loop(){	unsigned len;#ifdef DYN_BUF	char* buf;#else	static char buf [BUF_SIZE+1];#endif	struct sockaddr* from;	int fromlen;	from=(struct sockaddr*) malloc(sizeof(struct sockaddr));	if (from==0){		LOG(L_ERR, "ERROR: udp_rcv_loop: out of memory\n");		goto error;	}	for(;;){#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		fromlen=sizeof(struct sockaddr);		len=recvfrom(udp_sock, buf, BUF_SIZE, 0, from, &fromlen);		if (len==-1){			LOG(L_ERR, "ERROR: udp_rcv_loop:recvfrom: %s\n",						strerror(errno));			if (errno==EINTR)	continue; /* goto skip;*/			else goto error;		}		/*debugging, make print* msg work */		buf[len+1]=0;				/* receive_msg must free buf too!*/		receive_msg(buf, len, ((struct sockaddr_in*)from)->sin_addr.s_addr);			/* skip: do other stuff */			}		if (from) free(from);	return 0;	error:	if (from) free(from);	return -1;}