Revert "Have find_or_create_conversation() use pinfo->conv_endpoint if present."
This reverts commit ba202ef362
.
Creating endpoints, and corresponding conversations, for protocols atop which TCP or UDP runs can potentially cause attempts to look up the conversation to find the conversation for that protocol rather than for TCP/UDP, which can confuse protocols running atop TCP or UDP.
Change-Id: I3ca522e54e67cc4f996d0ee841c6bb40ee6a9976
Reviewed-on: https://code.wireshark.org/review/28912
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
b28345b8a4
commit
9cf292a30f
|
@ -164,7 +164,6 @@ libwireshark.so.0 libwireshark0 #MINVER#
|
|||
conversation_key_port2@Base 2.5.0
|
||||
conversation_new@Base 1.9.1
|
||||
conversation_new_by_id@Base 2.5.0
|
||||
conversation_new_pinfo@Base 2.6.3
|
||||
conversation_pt_to_endpoint_type@Base 2.5.0
|
||||
conversation_set_dissector@Base 1.9.1
|
||||
conversation_set_dissector_from_frame_number@Base 2.0.0
|
||||
|
@ -633,6 +632,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
|
|||
find_heur_dissector_by_unique_short_name@Base 1.99.8
|
||||
find_heur_dissector_list@Base 1.99.2
|
||||
find_or_create_conversation@Base 1.9.1
|
||||
find_or_create_conversation_by_id@Base 2.6.3
|
||||
find_protocol_by_id@Base 1.9.1
|
||||
find_sid_name@Base 1.9.1
|
||||
find_stream_circ@Base 1.9.1
|
||||
|
|
|
@ -765,28 +765,6 @@ 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.
|
||||
|
@ -1519,7 +1497,29 @@ find_or_create_conversation(packet_info *pinfo)
|
|||
DPRINT(("did not find previous conversation for frame #%u",
|
||||
pinfo->num));
|
||||
DINDENT();
|
||||
conv = conversation_new_pinfo(pinfo);
|
||||
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);
|
||||
DENDENT();
|
||||
}
|
||||
|
||||
|
|
|
@ -134,9 +134,6 @@ WS_DLL_PUBLIC conversation_t *conversation_new(const guint32 setup_frame, const
|
|||
|
||||
WS_DLL_PUBLIC conversation_t *conversation_new_by_id(const guint32 setup_frame, const endpoint_type etype, const guint32 id, const guint options);
|
||||
|
||||
WS_DLL_PUBLIC
|
||||
conversation_t *conversation_new_pinfo(packet_info *pinfo);
|
||||
|
||||
/**
|
||||
* Given two address/port pairs for a packet, search for a conversation
|
||||
* containing packets between those address/port pairs. Returns NULL if
|
||||
|
@ -191,6 +188,12 @@ WS_DLL_PUBLIC conversation_t *find_conversation_pinfo(packet_info *pinfo, const
|
|||
*/
|
||||
WS_DLL_PUBLIC conversation_t *find_or_create_conversation(packet_info *pinfo);
|
||||
|
||||
/** A helper function that calls find_conversation_by_id() and, if a
|
||||
* conversation is not found, calls conversation_new_by_id().
|
||||
* The frame number is taken from pinfo.
|
||||
*/
|
||||
WS_DLL_PUBLIC conversation_t *find_or_create_conversation_by_id(packet_info *pinfo, const endpoint_type etype, const guint32 id);
|
||||
|
||||
WS_DLL_PUBLIC void conversation_add_proto_data(conversation_t *conv, const int proto,
|
||||
void *proto_data);
|
||||
WS_DLL_PUBLIC void *conversation_get_proto_data(const conversation_t *conv, const int proto);
|
||||
|
|
|
@ -96,8 +96,6 @@ dissect_isdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
|
|||
col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "Network");
|
||||
}
|
||||
|
||||
conversation_create_endpoint_by_id(pinfo, ENDPOINT_ISDN, pinfo->pseudo_header->isdn.channel, 0);
|
||||
|
||||
if (tree) {
|
||||
ti = proto_tree_add_item(tree, proto_isdn, tvb, 0, 0, ENC_NA);
|
||||
isdn_tree = proto_item_add_subtree(ti, ett_isdn);
|
||||
|
@ -109,7 +107,8 @@ dissect_isdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
|
|||
/*
|
||||
* Set up a circuit for this channel, and assign it a dissector.
|
||||
*/
|
||||
conv = find_or_create_conversation(pinfo);
|
||||
conv = find_or_create_conversation_by_id(pinfo, ENDPOINT_ISDN,
|
||||
pinfo->pseudo_header->isdn.channel);
|
||||
|
||||
if (conversation_get_dissector(conv, 0) == NULL) {
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue