aboutsummaryrefslogtreecommitdiffstats
path: root/epan/conversation.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-07-31 15:52:46 -0700
committerGuy Harris <guy@alum.mit.edu>2018-07-31 22:53:27 +0000
commitba202ef36225b59eb797c5a48b8d4a4665b479c7 (patch)
tree050e449f76d3cf248e64b9260a7c2438db028768 /epan/conversation.c
parent137bbb2d146a89b42c8173c2b7e9a867df14ecae (diff)
Have find_or_create_conversation() use pinfo->conv_endpoint if present.
Add conversation_new_pinfo(), which uses the endpoint if present, and have find_or_create_conversation() use it rather than conversation_new(). Remove find_or_create_conversation_by_id() - it's no longer needed. Bug: 15018 Change-Id: Ib13e539751af0f071aede4ee0ed751d0cb72ba3f Reviewed-on: https://code.wireshark.org/review/28908 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/conversation.c')
-rw-r--r--epan/conversation.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/epan/conversation.c b/epan/conversation.c
index fc94e3d65b..e1f1a03b85 100644
--- a/epan/conversation.c
+++ b/epan/conversation.c
@@ -765,6 +765,28 @@ conversation_t *conversation_new_by_id(const guint32 setup_frame, const endpoint
return conversation_new(setup_frame, NULL, NULL, etype, id, 0, options | NO_ADDR2 | NO_PORT2);
}
+conversation_t *
+conversation_new_pinfo(packet_info *pinfo)
+{
+ if (pinfo->use_endpoint) {
+ return conversation_new(pinfo->num,
+ &pinfo->conv_endpoint->addr1,
+ &pinfo->conv_endpoint->addr2,
+ pinfo->conv_endpoint->etype,
+ pinfo->conv_endpoint->port1,
+ pinfo->conv_endpoint->port2,
+ pinfo->conv_endpoint->options);
+ } else {
+ return conversation_new(pinfo->num,
+ &pinfo->src,
+ &pinfo->dst,
+ conversation_pt_to_endpoint_type(pinfo->ptype),
+ pinfo->srcport,
+ pinfo->destport,
+ 0);
+ }
+}
+
/*
* Set the port 2 value in a key. Remove the original from table,
* update the options and port values, insert the updated key.
@@ -1497,29 +1519,7 @@ find_or_create_conversation(packet_info *pinfo)
DPRINT(("did not find previous conversation for frame #%u",
pinfo->num));
DINDENT();
- conv = conversation_new(pinfo->num, &pinfo->src,
- &pinfo->dst, conversation_pt_to_endpoint_type(pinfo->ptype),
- pinfo->srcport, pinfo->destport, 0);
- DENDENT();
- }
-
- DENDENT();
-
- return conv;
-}
-
-conversation_t *
-find_or_create_conversation_by_id(packet_info *pinfo, const endpoint_type etype, const guint32 id)
-{
- conversation_t *conv=NULL;
-
- /* Have we seen this conversation before? */
- if ((conv = find_conversation_by_id(pinfo->num, etype, id, 0)) == NULL) {
- /* No, this is a new conversation. */
- DPRINT(("did not find previous conversation for frame #%u",
- pinfo->num));
- DINDENT();
- conv = conversation_new_by_id(pinfo->num, etype, id, 0);
+ conv = conversation_new_pinfo(pinfo);
DENDENT();
}