Skip to content

Commit

Permalink
tighten up a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
mnot committed Nov 26, 2010
1 parent f25ee2f commit b7c6738
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 40 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ http://github.com/mnot/htracr/
- congestion window (over time?)
- receive window (over time?)
- rtt over time?
- retransmits / retries
- handle tcp-retransmit / tcp-retry
- show ack relationships?

### HTTP visualisation
Expand Down
91 changes: 52 additions & 39 deletions lib/htracr-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ Raphael.fn.curve = function(s, e) {


var htracr = {
w: 600,
h: 800,
w: 550,
h: 400,
paper: Raphael(document.getElementById("paper"), self.w, self.h),
labels: Raphael(document.getElementById("labels"), label_w, self.h),
msg: jQuery("#msg"),
Expand Down Expand Up @@ -233,39 +233,6 @@ var htracr = {
);
},

// search backwards through a list of packets and find where a http message
// really started. This is imprecise, but should be OK most of the time.
rewind_packets: function(packets, msg) {
var num_packets = 0;
var bytes = [
msg.method || "",
msg.url || "",
msg.status_code || "", // don't have access to phrase :(
" HTTP/1.x", // works out the same for request or response
"\r\n"
]
for (h in msg.headers) {
bytes.push(h + ": " + msg.headers[h] + "\r\n");
}
bytes.push("\r\n");
var num_bytes = bytes.join("").length;
var bytes_seen = 0;
for (var i = packets.length - 1; i >= 0; i--) {
var packet = packets[i];
bytes_seen += packet.data_sz;
if (packet.data_sz > 0) {
num_packets += 1;
}
if (bytes_seen >= num_bytes) {
return {
start: packet.time,
count: num_packets,
index: i,
}
}
}
},

draw_packet: function(item, y) {
var self = this;
var my_x = self.time_x(item.time);
Expand Down Expand Up @@ -589,7 +556,7 @@ var htracr = {

process_conn: function (server, conn, y) {
var self = this;
var conn_start = margin[3];
var conn_start = null;
var conn_end = null;
var packets = [];
var http_reqs = [];
Expand Down Expand Up @@ -624,7 +591,7 @@ var htracr = {
// connection: close delimits the message.
last_res.end = item.time;
last_res.end_packet = packets.length;
}
}
}
break;
case "http-req-start":
Expand All @@ -644,6 +611,8 @@ var htracr = {
if (last_req) {
last_req.end = item.time;
last_req.end_packet = packets.length;
} else {
console.log("Can't find last request.");
}
break;
case "http-res-data":
Expand All @@ -664,7 +633,7 @@ var htracr = {
last_res.end = item.time;
last_res.end_packet = packets.length;
} else {
console.log("Can't find response end!")
console.log("Can't find last response.")
}
break;
default:
Expand Down Expand Up @@ -703,6 +672,9 @@ var htracr = {
case "packet-in":
rtt = p.time - first_syn;
break;
default:
console.log("Unknown item in packet list: " + p.what);
break;
};
}
});
Expand All @@ -718,7 +690,48 @@ var htracr = {
y: y,
});
},


// search backwards through a list of packets and find where a http message
// really started. This is imprecise, but should be OK most of the time.
// see: https://github.com/mranney/node_pcap/issues#issue/9
rewind_packets: function(packets, msg) {
var num_packets = 0;
var bytes = [
msg.method || "",
msg.url || "",
msg.status_code || "", // don't have access to phrase :(
" HTTP/1.x", // works out the same for request or response
"\r\n"
]
for (h in msg.headers) {
bytes.push(h + ": " + msg.headers[h] + "\r\n");
}
bytes.push("\r\n");
var num_bytes = bytes.join("").length;
var bytes_seen = 0;
for (var i = packets.length - 1; i >= 0; i--) {
var packet = packets[i];
bytes_seen += packet.data_sz;
if (packet.data_sz > 0) {
num_packets += 1;
}
if (bytes_seen >= num_bytes) {
return {
start: packet.time,
count: num_packets,
index: i,
}
}
}
// Shouldn't get here...
console.log("Couldn't find the start of message: " + msg);
return {
start: msg.time,
count: 1,
index: packets.length,
}
},

resize: function () {
var self = this;
console.log("resizing to " + self.w + " x " + self.h);
Expand Down

0 comments on commit b7c6738

Please sign in to comment.