add: PROTO_UDP,
context: int xj_send_sip_msg(str *proxy, str *to, str *from, str *msg, int *cbp){	str  msg_type = { "MESSAGE", 7};	char buf[512];	str  tfrom;	str  str_hdr;	int **pcbp = NULL;//, beg, end, crt;	char buf1[1024];	if( !to || !to->s || to->len <= 0 			|| !from || !from->s || from->len <= 0 			|| !msg || !msg->s || msg->len <= 0			|| (cbp && *cbp!=0) )		return -1;	// from correction	/****	beg = crt = 0;	end = -1;	while(crt < from->len && from->s[crt]!='@')	{		if(from->s[crt]==delim)		{			beg = end + 1;			end = crt;		}		crt++;	}	***/	tfrom.len = 0;	/***	if(end > 0)	{ // put display name		buf[0] = '"';		strncpy(buf+1,from->s+beg,end-beg);		tfrom.len = end-beg+1;		buf[tfrom.len++] = '"';		buf[tfrom.len++] = ' ';	}	***/	strncpy(buf+tfrom.len, "<sip:", 5);	tfrom.len += 5;	strncpy(buf+tfrom.len, from->s, from->len);	tfrom.len += from->len;	buf[tfrom.len++] = '>';			tfrom.s = buf;		// building Contact and Content-Type	strcpy(buf1,"Content-Type: text/plain"CRLF"Contact: ");	str_hdr.len = 24 + CRLF_LEN + 9;		strncat(buf1,tfrom.s,tfrom.len);	str_hdr.len += tfrom.len;	//strncat(buf1,"sip:193.175.135.68:5060",23);	//str_hdr.len += 23;		strcat(buf1, CRLF);	str_hdr.len += CRLF_LEN;	str_hdr.s = buf1;	if(cbp)	{#ifdef XJ_EXTRA_DEBUG		DBG("XJAB:xj_send_sip_msg: uac callback parameter [%p==%d]\n", 				cbp, *cbp);#endif		if((pcbp = (int**)shm_malloc(sizeof(int*))) == NULL)			return -1;		*pcbp = cbp;		//return tmb.t_uac( &msg_type, to, &str_hdr , msg, &tfrom,		//			xj_tuac_callback, (void*)pcbp, 0);		return tmb.t_uac_dlg(&msg_type, /* Type of the message */					proxy,              /* Real destination */					to,                 /* Request-URI */					to,                 /* To */					&tfrom,             /* From */					NULL,               /* To tag */					NULL,               /* From tag */					NULL,               /* CSeq */					NULL,               /* Call-ID */					&str_hdr,           /* Optional headers including CRLF */					msg,                /* Message body */					xj_tuac_callback,   /* Callback function */					(void*)pcbp         /* Callback parameter */			);	}	else		//return tmb.t_uac( &msg_type, to, &str_hdr , msg, &tfrom, 0 , 0, 0);		return tmb.t_uac_dlg(&msg_type, /* Type of the message */					proxy,              /* Real destination */					to,                 /* Request-URI */					to,                 /* To */					&tfrom,             /* From */					NULL,               /* To tag */					NULL,               /* From tag */					NULL,               /* CSeq */					NULL,               /* Call-ID */					&str_hdr,           /* Optional headers including CRLF */					msg,                /* Message body */					0,                  /* Callback function */					0                   /* Callback parameter */			);}