I'm monitoring 5060 port. If i receive a udp with sip protocol i need to 
send a response. following is my code

/* config */
var port = 5060;
var host = '192.168.12.155';

var dgram = require('dgram');
var socket = dgram.createSocket('udp4');
var fs = require('fs');

socket.on('listening', function () {
    var address = socket.address();
    console.log('SIP proxy socket listening on ' + address.address + ':' + 
address.port + '\n');
});

socket.on('message', function (message, remote) {
    console.log('looping...');

/* convert message object to string */
message = message.toString();
 /* log received message */
fs.appendFile("log.txt", "----- Received message -----\r\n");
fs.appendFile("log.txt", message);
fs.appendFile("log.txt", "\r\n");
 /* split message */
message = message.split('\r\n'); 
 /* define variables */
var is_invite = false;
var branch = '';
var tag = '';
var call_id = '';
var cseq = '';
var response = '';
var response_message = '';
 /* add record route */
/* message[0] = message[0] + '\r\nRecord-route: 
<sip:192.168.12.155:3333;lr>';*/
 /* check INVITE */
pattern = new RegExp(/INVITE/);
for(var i = 0; i < message.length; i++) {
sip = message[i].match(pattern);
if(sip != null) {
is_invite = true;
}
}
 if(is_invite){
/* get branch */
pattern = new RegExp(/branch=(.*)/); 
for(var i = 0; i < message.length; i++) {
sip = message[i].match(pattern);
if(sip != null) {
branch = sip[1];
}
}
 /* get tag */
pattern = new RegExp(/tag=(.*)/);
for(var i = 0; i < message.length; i++) {
sip = message[i].match(pattern);
if(sip != null) {
tag = sip[1];
}
}
 /* get call-id */
pattern = new RegExp(/Call-ID:(.*)/);
for(var i = 0; i < message.length; i++) {
sip = message[i].match(pattern);
if(sip != null) {
call_id = sip[1];
}
}
 /* get cseq */
pattern = new RegExp(/CSeq:(.*)/);
for(var i = 0; i < message.length; i++) {
sip = message[i].match(pattern);
if(sip != null) {
cseq = sip[1];
}
}
 /* destination */
response = "SIP/2.0 302 Redirect Request \r\n";
response += "Via:SIP/2.0/UDP 192.168.2.40:5060;branch=" + branch + 
";rport=5060\r\n";
response += "From: <sip:[email protected]:5060>;tag=" + tag + 
";isup-oli=00\r\n";
response += "To: 
<sip:[email protected]:5060;user=phone>;tag=883069368-1363286882583\r\n";
response += "Call-ID:" + call_id + ";\r\n";
response += "CSeq:" + cseq + "\r\n";
response += "Contact:<sip:[email protected]:5060>;q=0.5;\r\n";
response += "Content-Length: 0\r\n";
 /* log send message */
fs.appendFile("log.txt", "----- Send message -----\r\n");
fs.appendFile("log.txt", response);
fs.appendFile("log.txt", "\r\n");
 console.log('Got a invite signal'); 
 response_message = new Buffer(response); 
socket.send(response_message, 0, response_message.length, port, host);
 console.log('Message sent');
 }
});

socket.bind(port, host);


but event message is not properly interpreted. after the first invite 
signal occurs.. the message event turn to an infinte loop. I'm sending only 
a single INVITE signal.

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to