#include <epan/tap.h>
#include "epan/gcp.h"
-#include "../register.h"
#include "../timestats.h"
-#include "../simple_dialog.h"
#include "../file.h"
#include "../globals.h"
#include "../stat_menu.h"
{
gcp_cmd_msg_t *cmd_msg;
/* cycle through commands to find same command in the transaction */
- for (cmd_msg = cmd->trx->cmds; cmd_msg->cmd->msg->framenum != cmd->msg->framenum &&
- cmd_msg != NULL; cmd_msg = cmd_msg->next) {
+ for (cmd_msg = cmd->trx->cmds;
+ (cmd_msg != NULL) && (cmd_msg->cmd->msg->framenum != cmd->msg->framenum);
+ cmd_msg = cmd_msg->next) {
if (cmd_msg->cmd->type == cmd->type)
return TRUE;
}
-
+
return FALSE;
}
break;
break;
}
-
+
}
static gboolean
{
gcp_cmd_msg_t *cmd_msg;
/* cycle through commands to find a request in the transaction */
- for (cmd_msg = cmd->trx->cmds; cmd_msg->cmd->msg->framenum != cmd->msg->framenum &&
- cmd_msg != NULL; cmd_msg = cmd_msg->next) {
-
+ for (cmd_msg = cmd->trx->cmds;
+ (cmd_msg != NULL) && (cmd_msg->cmd->msg->framenum != cmd->msg->framenum);
+ cmd_msg = cmd_msg->next) {
+
switch (cmd_msg->cmd->type) {
GCP_CMD_REQ_CASE
break;
}
}
-
+
return FALSE;
}
break;
megacostat_packet(void *pms, packet_info *pinfo, epan_dissect_t *edt _U_, const void *pmi)
{
megacostat_t *ms=(megacostat_t *)pms;
- const gcp_cmd_t *mi=(gcp_cmd_t*)pmi;
+ const gcp_cmd_t *mi=(const gcp_cmd_t*)pmi;
nstime_t delta;
int ret = 0;
switch (mi->type) {
GCP_CMD_REQ_CASE
- if(mi->trx->initial->framenum != mi->msg->framenum){
+ if(!mi->trx->initial) {
+ /* Track Context is probably disabled, we cannot
+ * measure service response time */
+ return 0;
+ }
+
+ else if(mi->trx->initial->framenum != mi->msg->framenum){
/* Duplicate is ignored */
ms->req_dup_num++;
}
nstime_delta(&delta, &pinfo->fd->abs_ts, &mi->trx->initial->time);
switch(mi->type) {
-
+
case GCP_CMD_ADD_REPLY:
time_stat_update(&(ms->rtd[0]),&delta, pinfo);
break;