aboutsummaryrefslogtreecommitdiffstats
path: root/epan/conversation.c
AgeCommit message (Collapse)AuthorFilesLines
2015-01-18Update some comments to reflect reality.Guy Harris1-2/+3
Get rid of references to ep_ and se_ allocation in code that now uses wmem allocation instead. Fix API documentation of conversation_table.h routines to reflect that as well - some APIs changed to pass wmem scopes. Also, zbee_sec_key_hash() now takes the output buffer as an argument and just returns it, and nobody actually uses the return value, so change it to return void. Change-Id: Ife1ec675a9322fd0f0be306a9d639ec17aad1c7a Reviewed-on: https://code.wireshark.org/review/6636 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2015-01-18Remove some apparently-unnecessary includes of emem.h.Guy Harris1-1/+0
Change-Id: Id50ce3e707056cca8f30052f05c451ce431b39b5 Reviewed-on: https://code.wireshark.org/review/6632 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2015-01-16Update comment to reflect the current reality.Guy Harris1-1/+2
Change-Id: I7f8c66723efc9d21ec3abc08e57db1df5f772f04 Reviewed-on: https://code.wireshark.org/review/6576 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2015-01-16SE_COPY_ADDRESS -> WMEM_COPY_ADDRESSMichael Mann1-3/+3
Copy addresses with wmem-scope instead of (forced) seasonal scope. All existing instances were converted to wmem_file_scope, but the flexibility is there for other scopes. Change-Id: I8e58837b9ef574ec7dd87e278470d7063ae8c1c2 Reviewed-on: https://code.wireshark.org/review/6564 Reviewed-by: Michael Mann <mmann78@netscape.net>
2015-01-16Remove seasonal memory from everything except address resolutionsMichael Mann1-3/+3
This includes circuits, conversations and streams as well as camel and h225 dissectors. Change-Id: Ia5ee70a5e5c6bcb420f0f19df126595246a3c042 Reviewed-on: https://code.wireshark.org/review/6566 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2015-01-06Replace ep_address_to_str with address_to_str.Michael Mann1-7/+11
Change-Id: I4f1078b20f41800f72a751612703ad0d4c2ae87b Reviewed-on: https://code.wireshark.org/review/6323 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-08-06we're matching against {any}/port_b, not address_bMartin Kaiser1-1/+1
Change-Id: Ief00f09225805c6c7488d92f8aa5b59c21575788 Reviewed-on: https://code.wireshark.org/review/3464 Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
2014-07-08conversion: do not free conversation memory on updatesPeter Wu1-2/+6
In commit 4afd70d ("Use g_hash_table_new_full to free some values"), the hashtable gained a destroy handler which frees memory. This inadvertently destroyed a conversation during key updates. Fix this by not calling _remove (and thereby calling the destroy handler), but use _steal instead. (Suggestion by Evan Huus). Bug: 10263 Change-Id: I9fa7f5a697599f42894d38718b00b9c0c1b57004 Reviewed-on: https://code.wireshark.org/review/2924 Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Evan Huus <eapache@gmail.com>
2014-07-06Use g_hash_table_new_full to free some valuesEvan Huus1-13/+9
Fixes a good 80-90KB of leaks in certain cases. Bug: 10261 Change-Id: I81d57ac67219e730b03649b9fdfc2306807bdb97 Reviewed-on: https://code.wireshark.org/review/2879 Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-03-21Add debug printing functions for conversations, sip, sdp, rtpHadriel Kaplan1-0/+54
There have been enough gnarly bus in sip/sdp/rtp that it needs to have good debug printing. Using a debugger isn't good enough because there's interaction across multiple frames and it's too hard to follow what's going on without real printed data history. Change-Id: Ifb5bb1fb580be81f988569ece79d238a9c030c34 Reviewed-on: https://code.wireshark.org/review/688 Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-03-04Remove all $Id$ from top of fileAlexis La Goutte1-2/+0
(Using sed : sed -i '/^ \* \$Id\$/,+1 d') Fix manually some typo (in export_object_dicom.c and crc16-plain.c) Change-Id: I4c1ae68d1c4afeace8cb195b53c715cf9e1227a8 Reviewed-on: https://code.wireshark.org/review/497 Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-02-25Remove trailing whitespaceBill Meier1-2/+2
Change-Id: I8116f63ff88687c8db3fd6e8e23b22ab2f759af0 Reviewed-on: https://code.wireshark.org/review/385 Reviewed-by: Bill Meier <wmeier@newsguy.com> Tested-by: Bill Meier <wmeier@newsguy.com>
2014-01-04(Trivial) explicitely --> explicitlyBill Meier1-1/+1
svn path=/trunk/; revision=54594
2013-12-27Fix [-Wmissing-prototypes]Anders Broman1-2/+2
svn path=/trunk/; revision=54473
2013-11-01Allow try_conversation_dissector() to pass data to subdissectors.Michael Mann1-2/+2
svn path=/trunk/; revision=53035
2013-09-15Our hash function is no longer commutative (yay!). However, this means that weEvan Huus1-1/+7
no longer get to check both conversation directions at once "for free" because the two orderings actually result in different hashes. Do them one at a time. Sorry Anders, this may or may not cancel out some of the performance gain you were looking for. Either way, the new hash function is still an improvement. Fixes bidirectional conversation lookup, which was conveniently showing up as a DTLS decryption failure in the test suite. Go figure. svn path=/trunk/; revision=52084
2013-09-15Add the new hash algorithm to the macro we were already using. Create aEvan Huus1-84/+43
temporary address structure for the port-numbers so we can use the same macro, reducing duplication further. Add modelines. svn path=/trunk/; revision=52081
2013-09-15Use a better hash algorithm and add a dialouge to get hastable data.Anders Broman1-9/+132
svn path=/trunk/; revision=52078
2013-07-08New Qt feature: Show related packet list items in the frame numberGerald Combs1-2/+6
column. Conversation spans (setup frame to last frame) are shown with a square bracket. Linked frames are shown with a circle. Use correct column justifications in Qt. Move common justification-related packet list code to ui/packet_list_utils.[ch]. Add a last_frame element to conversation_t. svn path=/trunk/; revision=50447
2013-03-20 From beroset:Bill Meier1-3/+3
remove C++ incompatibilities https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416 attachment #10397 svn path=/trunk/; revision=48438
2012-09-20We always HAVE_CONFIG_H so don't bother checking whether we have it or not.Jeff Morriss1-3/+1
svn path=/trunk/; revision=45016
2012-09-11Add data parameter to call_dissector_only.Jakub Zawadzki1-1/+1
svn path=/trunk/; revision=44872
2012-06-28Update Free Software Foundation address.Jakub Zawadzki1-1/+1
(COPYING will be updated in next commit) svn path=/trunk/; revision=43536
2012-06-01Remove debug code left by mistakeAnders Broman1-4/+0
svn path=/trunk/; revision=42959
2012-06-01Fix a couple of warningsAnders Broman1-4/+8
svn path=/trunk/; revision=42958
2012-04-20From Evan Huus: Clean up conversation list iterator caching. ↵Anders Broman1-23/+28
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7149 svn path=/trunk/; revision=42150
2012-04-19From Cristian Constantin:Anders Broman1-1/+6
while caching the last element from the conversation hash chain lists speeds-up the operation when the hash/chain lists are actually built, it does NOT help a lot when a certain random conversation which is in the hash table is looked-up. I did some profiling and tracing and I saw that a lot of cpu time is spent in the function conversation_lookup_hashtable() when wireshark is asked to show the "Flow Graph", "TCP Conversations", "Voip Calls". I used two types of captures with over 500k packets: - tcp packets having the _same_ src ip addr, src tcp port, dst ip addr, dst tcp port - (mostly) sip packets containing sdp payloads which advertise the _same_ ip addr, udp port for media these types of captures lead to _huge_ chain lists behind the same hash bucket (to which the conversation is actually mapped) the solution would be to cache the last found conversation into the head of the chain list and to use it whenever it is possible; most of the time the look-up will be in O(1) instead of O(n) (n - number of elements in the list). https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7149 svn path=/trunk/; revision=42141
2012-04-19From Evan Huus: Convert a few instances in conversation.c to use the new ↵Anders Broman1-2/+2
macro. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7142 svn path=/trunk/; revision=42138
2012-04-17From Evan Huus:Anders Broman1-64/+115
Do the right thing with conversation hash chains. Adds two new functions: conversation_insert_into_hashtable() and conversation_remove_from_hashtable() that do the right thing with conversation hash table chains and ordering and all that. Converts conversation_new(), conversation_set_addr2() and conversation_set_port2() to use the new functions. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7085 svn path=/trunk/; revision=42104
2012-04-13From Cristian Constantin:Anders Broman1-2/+2
There was something really wrong in conversation_lookup_hashtable(). https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7066 svn path=/trunk/; revision=42044
2012-04-09Mark some function static.Jakub Zawadzki1-1/+1
svn path=/trunk/; revision=41999
2012-02-04From Cristian Constantin:Anders Broman1-15/+48
Slow loading/processing of conversations with over 500k frames. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6755 svn path=/trunk/; revision=40837
2011-10-20Delay freeing of seasonal memory until after the conversation cleanup routineJeff Morriss1-5/+32
has been called. In the conversation cleanup routine, free the GSlist for any proto_data which may have been hanging off the (se_allocated) conversation. svn path=/trunk/; revision=39484
2010-05-13As suggested in ↵Jeff Morriss1-0/+24
http://www.wireshark.org/lists/wireshark-dev/200809/msg00075.html (as referenced in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2907 ) and https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3411 : Write a new convenience routine for finding a conversation and, if it is not found, create it. The frame number and addresses are taken from pinfo (as is the common case). Use this function in a bunch of dissectors. svn path=/trunk/; revision=32790
2010-04-03 From Yaniv Kaul: constify parametersBill Meier1-15/+15
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4422 From me: Fix a number of instances where the function prototype or the function definition wasn't changed so there was a mismatch thus causing Windows (but not gcc) compilation errors. svn path=/trunk/; revision=32365
2010-04-02Revert SVN #32360 until Windows compilation errors corrected.Bill Meier1-15/+15
svn path=/trunk/; revision=32361
2010-04-02From Yaniv Kaul: constify parametersBill Meier1-15/+15
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4422 svn path=/trunk/; revision=32360
2009-09-06Split a bunch of init routines into init() and cleanup(). This allows us to ↵Kovarththanan Rajaratnam1-4/+15
free memory properly on shutdown. This is an initial step. There's still some work to do. svn path=/trunk/; revision=29754
2008-04-23Don't skip ahead in time when looking for a conversation.Jaap Keuter1-2/+4
svn path=/trunk/; revision=25158
2008-03-17Move the conversation addresses to the se_ allocator. This does not solve a ↵Jeff Morriss1-30/+7
memory leak but it does save a 12 line comment explaining why the const-ness of the pointers was being cast away and (more importantly) fixes the conversation part of the crashes detailed in http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1113 . In particular the conversation keys themselves are se_ alloc'd so by the time we get to conversation_init() (again) the keys have already been freed by the se_ allocator so traversing them isn't such a good idea. svn path=/trunk/; revision=24661
2007-10-29When there are multiple conversations with the same key, ↵Sake Blok1-1/+1
conversation_lookup_hashtable() did not return the correct conversation for the first packet of a conversation (ie when frame_num == conversation->setup_frame). svn path=/trunk/; revision=23303
2007-04-26Make ADD_ADDRESS_TO_HASH() take a pointer to an address as an argument,Guy Harris1-6/+6
as the other address macros do. svn path=/trunk/; revision=21588
2007-04-26Rename HASH_ADDRESS to ADD_ADDRESS_TO_HASH, to make it clearer what itGuy Harris1-6/+6
does (i.e., it will add the address bytes to the value that's already there - it will not initialize the value, so you have to clear it before doing any hashing). svn path=/trunk/; revision=21578
2007-04-26Add a macro for hashing the bytes of an address into a hash value.Guy Harris1-24/+6
Use it in the IAX2 dissector and in the conversation code. svn path=/trunk/; revision=21577
2006-08-02From Peter Johansson:Anders Broman1-9/+9
the supplied patch fixes a problem where the options value should really be used from the conversation found (using conversation_lookup_hashtable(...) to create a new conversation based on the already stored conversation template (the CONVERSATION_TEMPLATE bit is set in the stored conversation) rather from the options argument passed to the function(s). This solves a problem that otherwise shows itself where "DISSECTOR_ASSERT(!(conv->options & CONVERSATION_TEMPLATE) && "Use the conversation_create_from_template function when the CONVERSATION_TEMPLATE bit is set in the options mask");" fails sometimes. svn path=/trunk/; revision=18825
2006-05-21name changeRonnie Sahlberg1-2/+2
svn path=/trunk/; revision=18197
2005-08-13start converting gmemchunk into se_alloc() in /epanRonnie Sahlberg1-32/+5
svn path=/trunk/; revision=15329
2005-08-02Fix more "no previous declaration" warningsJörg Mayer1-1/+1
svn path=/trunk/; revision=15171
2005-06-25from Kashyap DesaiRonnie Sahlberg1-2/+4
fix bug in conversation_delete_proto_data second argument to g_slist_remove() is a pointer to the data, not a GSlist containing a list of such pointers. svn path=/trunk/; revision=14755
2005-05-11Some applications do very naughty things like reusing a port for a different ↵Ronnie Sahlberg1-3/+15
protocol during different stages of an application cycle. This is very naughty and will cause problems when we have assigned a dissector to a dynamic port using conversation_set_dissector(). To make ethereal handle this case I have changed the try_conversation_dissector() to allow it to fail and return 0, meaning yes there is indeed a protocol registered for this conversation but that protocol rejected this packet. (which only happens for "new" style dissectors, "old" style dissectors will never reject a packet that way) When this happens the decode_udp_port() helper will still allow other dissectors to be tried, in the hope that the conversation is now used for some other protocol and thus someone else might be able to decode the packet. Update SNMP and TFTP dissectors to check that even if there already is a conversation but that conversation does NOT have snmp/tftp registered as the dissector for it, then create a new conversation anyway and attach the proper dissector. Since ethereal keeps track of which frame number a conversation started in, this actually works really well. svn path=/trunk/; revision=14345