aboutsummaryrefslogtreecommitdiffstats
path: root/packet-http.c
Commit message (Collapse)AuthorAgeFilesLines
* Make a routine to check for NTLMSSP authentication and to do the NTLMSSPGuy Harris2002-10-151-36/+40
| | | | | | | | | | | dissection if found, with a table of headers that indicate NTLMSSP authentication. Add some more headers to that table. Constify the code a bit. svn path=/trunk/; revision=6432
* For NTLM over HTTP the header strings can also be 'WWW-Authenticate: Negotiate'Tim Potter2002-09-231-7/+17
| | | | | | or 'Authorization: Negotiate'. svn path=/trunk/; revision=6326
* Removed trailing whitespaces from .h and .c files using theJörg Mayer2002-08-281-14/+14
| | | | | | | winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
* Don't free a tvb that we add as a new data source. The NTLMSSP overTim Potter2002-08-141-3/+1
| | | | | | | | HTTP now works a treat! Thanks again to Guy for the tip. svn path=/trunk/; revision=5996
* Fixed memory leak in creation of new tvb for ntlmssp data.Tim Potter2002-08-141-5/+7
| | | | | | | | | | | Call tvb_set_child_real_data_tvbuff() and add_new_data_source() to fix the display problem when dissecting ntlmssp over http packets. It works better now, but for some reason the ntlmssp challenge packet is still not displayed correctly. Thanks to Guy for the tips. svn path=/trunk/; revision=5991
* "base64_decode()" returns a "size_t", so make the variable to which thatGuy Harris2002-08-131-2/+2
| | | | | | | | return value is assigned a "size_t". (For some reason, the file fails to compile with MSVC++ 6.0, due to "ssize_t" not being defined, if it's an "ssize_t", but works if it's a "size_t".) svn path=/trunk/; revision=5989
* Oops - forgot to remove debugging printf.Tim Potter2002-08-131-3/+1
| | | | svn path=/trunk/; revision=5984
* Call the NTLMSSP dissector when we detect NTLMSSP over HTTP. This isTim Potter2002-08-131-4/+104
| | | | | | | | | | | | somewhat documented at http://www.innovation.ch/java/ntlm.html and other places. Ethereal handles it nicely, although the hex dump pane gets confused because we create a new tvb containing base64 decoded data from the HTTP header. The hex dump thinks we are still looking at the data from the packet. I'm not sure how to fix this. svn path=/trunk/; revision=5983
* Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer2002-08-021-11/+7
| | | | | | | | equivalents for the toplevel directory. The removal of winsock2.h will hopefully not cause any problems under MSVC++, as those files using struct timeval still include wtap.h, which still includes winsock2.h. svn path=/trunk/; revision=5932
* Add an extra argument to "tvb_find_line_end()", which specifies what itGuy Harris2002-07-171-3/+5
| | | | | | | | | | | | should do if it doesn't find an EOL; if FALSE, it behaves as before, returning values that treat the line as ending at the end of the tvbuff, and if TRUE, it returns -1, so its caller can do segment reassembly until it gets the EOL. Add an option to the SMTP dissector to do segment reassembly, and do segment reassembly of the first line. svn path=/trunk/; revision=5891
* Don't pass "tvb_reported_length_remaining(tvb, offset)" as the fourthGuy Harris2002-05-301-3/+6
| | | | | | | argument to "tvb_new_subset()" - just use -1 if the subset tvbuff is to run to the end of the parent tvbuff. svn path=/trunk/; revision=5597
* WebDAV support, and rewrite of the method-testing code to compute theGuy Harris2002-04-011-56/+105
| | | | | | | | | method length and use that in all comparisons, from Blair Cooper. Fix the check for "M-" to check also whether there are at least two characters in the line. svn path=/trunk/; revision=5071
* Replace a bunch of "tvb_length()" and "tvb_length_remaining()" calls inGuy Harris2002-01-241-3/+3
| | | | | | | | | | | | arguments to "proto_tree_add_text()", and to "proto_tree_add_XXX()" calls that add FT_NONE or FT_PROTO items to the protocol tree, with -1. Replace some calls to "tvb_length()" or "tvb_length_remaining()" with calls to "tvb_reported_length()" and "tvb_reported_length_remaining()", as those give the actual length of the data in the packet, not just the data that happened to be captured. svn path=/trunk/; revision=4605
* Include files from the "epan" directory and subdirectories thereof withGuy Harris2002-01-211-3/+3
| | | | | | | | | | | | | "epan/..." pathnames, so as to avoid collisions with header files in any of the directories in which we look (e.g., "proto.h", as some other package has its own "proto.h" file which it installs in the top-level include directory). Don't add "-I" flags to search "epan", as that's no longer necessary (and we want includes of "epan" headers to fail if the "epan/" is left out, so that we don't re-introduce includes lacking "epan/"). svn path=/trunk/; revision=4586
* Move the pointer to the "column_info" structure in the "frame_data"Guy Harris2001-12-101-6/+6
| | | | | | | | | | | | | | | structure to the "packet_info" structure; only stuff that's permanently stored with each frame should be in the "frame_data" structure, and the "column_info" structure is not guaranteed to hold the column values for that frame at all times - it was only in the "frame_data" structure so that it could be passed to dissectors, and, as all dissectors are now passed a pointer to a "packet_info" structure, it could just as well be put in the "packet_info" structure. That saves memory, by shrinking the "frame_data" structure (there's one of those per frame), and also lets us clean up the code a bit. svn path=/trunk/; revision=4370
* Attach a descriptive name field type and base to dissector tables; thatGuy Harris2001-12-081-2/+3
| | | | | | | | | | | | | | specifies how the selector values used as keys in those tables are to be displayed, and the title to use when displaying the table. Use that information in the code to display the initial and current entries of various dissector tables. Have the dissector for BACnet APDUs register itself by name, and have the BACnet NPDU dissector call it iff the BAC_CONTROL_NET bit isn't set, rather than doing it with a dissector table. svn path=/trunk/; revision=4358
* Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris2001-12-031-16/+13
| | | | | | | | take a dissector handle as an argument, rather than a pointer to a dissector function and a protocol ID. Associate dissector handles with dissector table entries. svn path=/trunk/; revision=4308
* Moved from using dissect_data() to using call_dissector()Ed Warnicke2001-11-261-2/+5
| | | | svn path=/trunk/; revision=4269
* Added hooks to allow the registration of heuristic subdissectors ofEd Warnicke2001-11-181-1/+19
| | | | | | http. svn path=/trunk/; revision=4217
* Change from Thomas Wittwer to register HTTP dissector by name, for otherGuy Harris2001-09-041-1/+3
| | | | | | dissectors to call. svn path=/trunk/; revision=3905
* From Joerg Mayer: explicitly fill in all members of aGuy Harris2001-06-181-4/+4
| | | | | | | "header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
* Remove more "CHECK_DISPLAY_AS_DATA()" calls and "pinfo->current_proto ="Guy Harris2001-01-221-5/+5
| | | | | | | | | | | statements. Move the setting of the Protocol column in various dissectors before anything is fetched from the packet, and also clear the Info column at that point in those and some other dissectors, so that if an exception is thrown, the columns don't reflect the previous protocol. svn path=/trunk/; revision=2932
* Provide a way by which protocols that run atop HTTP, such as IPP, canGuy Harris2001-01-111-125/+123
| | | | | | | | | | | | | register their port as being for XXX-over-HTTP; the HTTP dissector registers that port in the "tcp.port" table as an HTTP port, and registers it in its *own* table with the dissector and protocol provided to it. Parse the HTTP MIME headers regardless of whether we're building a protocol tree or not; we have to do so in order to find the offset of the payload, to hand to an XXX-over-HTTP dissector. svn path=/trunk/; revision=2872
* "dissect_http()" doesn't need to be global any more; make it static.Guy Harris2001-01-111-2/+8
| | | | svn path=/trunk/; revision=2870
* There's no need to register port 631 twice for IPP; do so only once.Guy Harris2001-01-111-5/+30
| | | | | | | Leave notes for a future rethinking of the way we handle protocols that run atop HTTP. svn path=/trunk/; revision=2869
* Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris2001-01-091-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | "{old_}heur_dissector_add()", "{old_}conv_dissector_add()", and "register_dissector()", so that an entry in those tables has associated with it the protocol index of the protocol the dissector handles (or -1, if there is no protocol index for it). This is for future use in a number of places. (Arguably, "proto_register_protocol()" should take a dissector pointer as an argument, but 1) it'd have to handle both regular and heuristic dissectors; 2) making it take either a "dissector_t" or a union of that and a "heur_dissector_t" introduces some painful header-file interdependencies so I'm punting on that for now. As with other Ethereal internal APIs, these APIs are subject to change in the future, at least until Ethereal 1.0 comes out....) svn path=/trunk/; revision=2849
* Have "proto_register_protocol()" build a list of data structures forGuy Harris2001-01-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | protocols, in addition to adding structures to the list of filterable fields. Give it an extra argument that specifies a "short name" for the protocol, for use in such places as pinfo->current_proto; the dialog box for constructing filters; the preferences tab for the protocol; and so on (although we're not yet using it in all those places). Make the preference name that appears in the preferences file and the command line for the DIAMETER protocol "diameter", not "Diameter"; the convention is that the name in question be all-lower-case. Make some routines and variables that aren't exported static. Update a comment in the ICP dissector to make it clear that the dissector won't see fragments other than the first fragment of a fragmented datagram. svn path=/trunk/; revision=2810
* Support for HTTP methods added by GENA (the uPnP protocol), and for theGuy Harris2001-01-031-4/+87
| | | | | | HTTP-based SSDP protocol, from David Hampton. svn path=/trunk/; revision=2808
* Initialize "http_type" to HTTP_OTHERS before callingGuy Harris2000-11-211-1/+3
| | | | | | | | "is_http_request_or_reply()", so that if "is_http_request_or_reply()" decides the line is part of a request or a response it'll set "*type" (which it does only if "*type" is HTTP_OTHERS). svn path=/trunk/; revision=2690
* For each column, have both a buffer into which strings for that columnGuy Harris2000-11-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | can be put, and a pointer to the string for the column, which might or might not point to that buffer. Add a routine "col_set_str()", which sets the string for the column to the string passed to it as an argument; it should only be handed a static string (a string constant would be ideal). It doesn't do any copying, so it's faster than "col_add_str()". Make the routines that append to columns check whether the pointer to the string for the column points to the buffer for the column and, if not, copy the string for the column to the buffer for the column so that you can append to it (so you can use "col_set_str()" and then use "col_append_str()" or "col_append_fstr()"). Convert a bunch of "col_add_str()" calls that take a string constant as an argument to "col_set_str()" calls. Convert some "col_add_fstr()" calls that take a string constant as the only argument - i.e., the format string doesn't have any "%" slots into which to put strings for subsequent arguments to "col_set_str()" calls (those calls are just like "col_add_str()" calls). Replace an END_OF_FRAME reference in a tvbuffified dissector with a "tvb_length(tvb)" call. svn path=/trunk/; revision=2670
* Tvbuffify the STP dissector, have it register itself and have the LLCGuy Harris2000-11-161-4/+4
| | | | | | | | | | | dissector call it through a handle, and make it static. Give "dissect_data()" an "offset" argument, so dissectors can use it to dissect part of the packet without having to cook up a new tvbuff. Go back to using "dissect_data()" to dissect the data in an IPP request. svn path=/trunk/; revision=2651
* Tvbuffify the IPP dissector, and have it register itself rather thanGuy Harris2000-11-151-10/+10
| | | | | | | | | | | being a global function. The HTTP dissector should set "pinfo->current_proto" to HTTP even if we consider the packet to be IPP, so that if we run past the end of a tvbuff while dissecting HTTP stuff it's reported as a problem with HTTP, not IPP. svn path=/trunk/; revision=2648
* Use "tvb_offset_exists()" rather than "tvb_length_remaining()" to checkGuy Harris2000-11-131-2/+2
| | | | | | | whether there's any data left in the tvbuff starting at a specified offset. svn path=/trunk/; revision=2636
* Tvbuffify the HTTP, NNTP, RSH, RTSP, and Telnet dissectors.Guy Harris2000-11-091-70/+93
| | | | | | | | | | | Add "tvb_find_line_end()", to find a CR and/or LF-terminated line in a tvbuff and return its length and the offset of the character after the line end, for the use of those dissectors. Add "tvb_strncaseeql()", which is like "tvb_strneql()" except that it does a case-insensitive comparison. svn path=/trunk/; revision=2590
* Patch from Isaac Wilcox to do case-sensitive checks for HTTP methods andGuy Harris2000-10-191-16/+13
| | | | | | to look for a space after the method name. svn path=/trunk/; revision=2515
* Don't put any "\r" and/or "\n" at the end of an HTTP request or replyGuy Harris2000-09-301-3/+4
| | | | | | into the "Info" column. svn path=/trunk/; revision=2468
* Move format_text(), get_token_len(), and fine_line_end(), into strutil.cGilbert Ramirez2000-09-111-1/+2
| | | | | | | This keeps tvbuff.c generic; it doesn't have to pull in packet.h and all of it's included files. svn path=/trunk/; revision=2409
* Add the "Edit:Protocols..." feature which currently only implementsLaurent Deniel2000-08-131-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the following: It is now possible to enable/disable a particular protocol decoding (i.e. the protocol dissector is void or not). When a protocol is disabled, it is displayed as Data and of course, all linked sub-protocols are disabled as well. Disabling a protocol could be interesting: - in case of buggy dissectors - in case of wrong heuristics - for performance reasons - to decode the data as another protocol (TODO) Currently (if I am not wrong), all dissectors but NFS can be disabled (and dissectors that do not register protocols :-) I do not like the way the RPC sub-dissectors are disabled (in the sub-dissectors) since this could be done in the RPC dissector itself, knowing the sub-protocol hfinfo entry (this is why, I've not modified the NFS one yet). Two functions are added in proto.c : gboolean proto_is_protocol_enabled(int n); void proto_set_decoding(int n, gboolean enabled); and two MACROs which can be used in dissectors: OLD_CHECK_DISPLAY_AS_DATA(index, pd, offset, fd, tree) CHECK_DISPLAY_AS_DATA(index, tvb, pinfo, tree) See also the XXX in proto_dlg.c and proto.c around the new functions. svn path=/trunk/; revision=2267
* Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris2000-08-071-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dissectors to be registered as dissectors for particular ports, registered as heuristic dissectors, and registered as dissectors for conversations, and have routines to be used both by old-style and new-style dissectors to call registered dissectors. Have the code that calls those dissectors translate the arguments as necessary. (For conversation dissectors, replace "find_conversation_dissector()", which just returns a pointer to the dissector, with "old_try_conversation_dissector()" and "try_conversation_dissector()", which actually call the dissector, so that there's a single place at which we can do that translation. Also make "dissector_lookup()" static and, instead of calling it and, if it returns a non-null pointer, calling that dissector, just use "old_dissector_try_port()" or "dissector_try_port()", for the same reason.) This allows some dissectors that took old-style arguments and immediately translated them to new-style arguments to just take new-style arguments; make them do so. It also allows some new-style dissectors not to have to translate arguments before calling routines to look up and call dissectors; make them not do so. Get rid of checks for too-short frames in new-style dissectors - the tvbuff code does those checks for you. Give the routines to register old-style dissectors, and to call dissectors from old-style dissectors, names beginning with "old_", with the routines for new-style dissectors not having the "old_". Update the dissectors that use those routines appropriately. Rename "dissect_data()" to "old_dissect_data()", and "dissect_data_tvb()" to "dissect_data()". svn path=/trunk/; revision=2218
* Add routines for adding items to a protocol tree that take arguments ofGuy Harris2000-05-311-4/+4
| | | | | | | | | | | | | | | | | a particular type, rather than taking a varargs list, along the lines of the "proto_tree_add_XXX_format()" routines. Replace most calls to "proto_tree_add_item()" and "proto_tree_add_item_hidden()" with calls to those routines. Rename "proto_tree_add_item()" and "proto_tree_add_item_hidden()" to "proto_tree_add_item_old()" and "proto_tree_add_item_hidden_old()", and add new "proto_tree_add_item()" and "proto_tree_add_item_hidden()" routines that don't take the item to be added as an argument - instead, they fetch the argument from the packet whose tvbuff was handed to them, from the offset handed to them. svn path=/trunk/; revision=2031
* Add tvbuff class.Gilbert Ramirez2000-05-111-5/+5
| | | | | | | | | | | | | | | Add exceptions routines. Convert proto_tree_add_*() routines to require tvbuff_t* argument. Convert all dissectors to pass NULL argument ("NullTVB" macro == NULL) as the tvbuff_t* argument to proto_tree_add_*() routines. dissect_packet() creates a tvbuff_t, wraps the next dissect call in a TRY block, will print "Short Frame" on the proto_tree if a BoundsError exception is caught. The FDDI dissector is converted to use tvbuff's. svn path=/trunk/; revision=1939
* Move calls to "dissector_add()" out of the register routines for TCP andGuy Harris2000-04-081-1/+15
| | | | | | | | | | | | | | UDP and into the handoff registration routines for the protocols in question. Make the dissectors for those protocols static if they're not called outside the dissector's source file. Get rid of header files if all they did was declare dissectors that are now static; remove declarations of now-static dissectors from header files that do more than just declare the dissector. svn path=/trunk/; revision=1823
* "http_tree" doesn't need to be static; make it local toGuy Harris2000-02-231-27/+29
| | | | | | "dissect_http()". svn path=/trunk/; revision=1666
* Fix HTTP request & response.Laurent Deniel2000-02-231-18/+39
| | | | svn path=/trunk/; revision=1665
* Create a header file for every packet-*.c file. Prune the packet.h file.Gilbert Ramirez2000-02-151-1/+2
| | | | | | | | | | | | | This change allows you to add a new packet-*.c file and not cause a recompilation of everything that #include's packet.h Add the plugin_api.[ch] files ot the plugins/Makefile.am packaging list. Add #define YY_NO_UNPUT 1 to the lex source so that the yyunput symbol is not defined, squelching a compiler complaint when compiling the generated C file. svn path=/trunk/; revision=1637
* Fix files that had Gilbert's old e-mail address or that didn't have myGuy Harris2000-01-221-2/+2
| | | | | | forwarding e-mail address. svn path=/trunk/; revision=1522
* Patch from Jerry Talkington to:Guy Harris1999-12-061-3/+16
| | | | | | | | | | | treat CONNECT as an HTTP request; add DELETE and OPTIONS as request names. Make the order of names in the AUTHORS file match that of the man page and the About box. svn path=/trunk/; revision=1231
* Replace the ETT_ "enum" members, declared in "packet.h", withGuy Harris1999-11-161-2/+8
| | | | | | | | | | | | | | | | | dynamically-assigned "ett_" integer values, assigned by "proto_register_subtree_array()"; this: obviates the need to update "packet.h" whenever you add a new subtree type - you only have to add a call to "proto_register_subtree_array()" to a "register" routine and an array of pointers to "ett_", if they're not already there, and add a pointer to the new "ett_" variable to the array, if they are there; would allow run-time-loaded dissectors to allocate subtree types when they're loaded. svn path=/trunk/; revision=1043
* Add display filters.Laurent Deniel1999-10-161-11/+30
| | | | svn path=/trunk/; revision=864
* Add a "BYTES_ARE_IN_FRAME()" macro, to test whether there are aGuy Harris1999-09-171-4/+9
| | | | | | | | | | | specified number of bytes of captured data in the frame at the specified offset, and a "IS_DATA_IN_FRAME()" macro, to test whether there are any bytes of captured data in the frame at the specified offset, and convert some bounds checks to use them. Add a dissector for the Internet Printing Protocol. svn path=/trunk/; revision=685