aboutsummaryrefslogtreecommitdiffstats
path: root/packet-http.c
AgeCommit message (Collapse)AuthorFilesLines
2003-11-18Content-Type values are case-insensitive; force them to lower caseGuy Harris1-2/+22
(subdissectors must register their Content-Type values as all-lower-case). Don't include parameters in the value we look up in the Content-Type subdissector table. svn path=/trunk/; revision=9000
2003-11-18Add an "http.content_type" dissector table,Guy Harris1-18/+72
Process the Content-Type header, and, if one is found, look up its value in the aforementioned dissector table. svn path=/trunk/; revision=8999
2003-11-07Make a field for the Content-Type entity header, and give it an EH_Guy Harris1-1/+8
value so it can be handled specially (with a string dissector table so that subdissectors can register for particular content types). svn path=/trunk/; revision=8903
2003-11-06Add a mechanism to handle various entity headers, allowing theirGuy Harris1-81/+257
(string) values to be put into the protocol tree as fields and allowing some headers to get special treatment, and use it for Authorization, Proxy-Authorization, WWW-Authenticate, and Proxy-Authenticate. svn path=/trunk/; revision=8892
2003-11-04If we've already constructed a subset tvbuff, don't construct anGuy Harris1-21/+21
identical one and throw away the first one. svn path=/trunk/; revision=8876
2003-10-27From Lo�c Minier: HTTP header and payload desegmentation.Guy Harris1-14/+171
svn path=/trunk/; revision=8786
2003-09-02The code in an HTTP reply is a response code, not a response method.Guy Harris1-20/+15
svn path=/trunk/; revision=8346
2003-09-02From Jean-Michel Fayard: BOOTP/DHCP, HTTP, and WSP statistics taps.Guy Harris1-1/+47
svn path=/trunk/; revision=8345
2003-06-11Get the right length for methods with an "M-" prefix.Guy Harris1-2/+4
svn path=/trunk/; revision=7837
2003-06-10Add http.request.method field, and a subtree under the HTTP Reqeust in whichGilbert Ramirez1-5/+43
to put the field, and any future field extracted from the HTTP Request record. svn path=/trunk/; revision=7834
2003-05-30From tz: decode the base-64 string for HTTP Basic authorization.Guy Harris1-7/+41
svn path=/trunk/; revision=7764
2003-05-23Move the base64_decode() function somewhere where other dissectors canTim Potter1-34/+2
use it. svn path=/trunk/; revision=7723
2003-02-24Non-ASCII characters can't be part of the name in a MIME header; if weGuy Harris1-2/+24
see one, assume we're dealing with data, not a MIME header. Spaces are separators. svn path=/trunk/; revision=7185
2002-12-02Don't cast away constness, and fix variable and structure memberGuy Harris1-2/+2
qualifiers as necessary to ensure that we don't have to. "strcmp()", "strcasecmp()", and "memcmp()" don't return booleans; don't test their results as if they did. Use "guint8", not "guchar", for a pointer to (one or more) 8-bit bytes. Update Michael Tuexen's e-mail address. svn path=/trunk/; revision=6726
2002-11-08Call the NTLMSSP subdissector regardless of whether we're building aGuy Harris1-11/+12
protocol tree or not. svn path=/trunk/; revision=6583
2002-10-15Make a routine to check for NTLMSSP authentication and to do the NTLMSSPGuy Harris1-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
2002-09-23For NTLM over HTTP the header strings can also be 'WWW-Authenticate: Negotiate'Tim Potter1-7/+17
or 'Authorization: Negotiate'. svn path=/trunk/; revision=6326
2002-08-28Removed trailing whitespaces from .h and .c files using theJörg Mayer1-14/+14
winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
2002-08-14Don't free a tvb that we add as a new data source. The NTLMSSP overTim Potter1-3/+1
HTTP now works a treat! Thanks again to Guy for the tip. svn path=/trunk/; revision=5996
2002-08-14Fixed memory leak in creation of new tvb for ntlmssp data.Tim Potter1-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
2002-08-13"base64_decode()" returns a "size_t", so make the variable to which thatGuy Harris1-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
2002-08-13Oops - forgot to remove debugging printf.Tim Potter1-3/+1
svn path=/trunk/; revision=5984
2002-08-13Call the NTLMSSP dissector when we detect NTLMSSP over HTTP. This isTim Potter1-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
2002-08-02Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer1-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
2002-07-17Add an extra argument to "tvb_find_line_end()", which specifies what itGuy Harris1-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
2002-05-30Don't pass "tvb_reported_length_remaining(tvb, offset)" as the fourthGuy Harris1-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
2002-04-01WebDAV support, and rewrite of the method-testing code to compute theGuy Harris1-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
2002-01-24Replace a bunch of "tvb_length()" and "tvb_length_remaining()" calls inGuy Harris1-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
2002-01-21Include files from the "epan" directory and subdirectories thereof withGuy Harris1-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
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-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
2001-12-08Attach a descriptive name field type and base to dissector tables; thatGuy Harris1-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
2001-12-03Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris1-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
2001-11-26Moved from using dissect_data() to using call_dissector()Ed Warnicke1-2/+5
svn path=/trunk/; revision=4269
2001-11-18Added hooks to allow the registration of heuristic subdissectors ofEd Warnicke1-1/+19
http. svn path=/trunk/; revision=4217
2001-09-04Change from Thomas Wittwer to register HTTP dissector by name, for otherGuy Harris1-1/+3
dissectors to call. svn path=/trunk/; revision=3905
2001-06-18From Joerg Mayer: explicitly fill in all members of aGuy Harris1-4/+4
"header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
2001-01-22Remove more "CHECK_DISPLAY_AS_DATA()" calls and "pinfo->current_proto ="Guy Harris1-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
2001-01-11Provide a way by which protocols that run atop HTTP, such as IPP, canGuy Harris1-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
2001-01-11"dissect_http()" doesn't need to be global any more; make it static.Guy Harris1-2/+8
svn path=/trunk/; revision=2870
2001-01-11There's no need to register port 631 twice for IPP; do so only once.Guy Harris1-5/+30
Leave notes for a future rethinking of the way we handle protocols that run atop HTTP. svn path=/trunk/; revision=2869
2001-01-09Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris1-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
2001-01-03Have "proto_register_protocol()" build a list of data structures forGuy Harris1-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
2001-01-03Support for HTTP methods added by GENA (the uPnP protocol), and for theGuy Harris1-4/+87
HTTP-based SSDP protocol, from David Hampton. svn path=/trunk/; revision=2808
2000-11-21Initialize "http_type" to HTTP_OTHERS before callingGuy Harris1-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
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-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
2000-11-16Tvbuffify the STP dissector, have it register itself and have the LLCGuy Harris1-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
2000-11-15Tvbuffify the IPP dissector, and have it register itself rather thanGuy Harris1-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
2000-11-13Use "tvb_offset_exists()" rather than "tvb_length_remaining()" to checkGuy Harris1-2/+2
whether there's any data left in the tvbuff starting at a specified offset. svn path=/trunk/; revision=2636
2000-11-09Tvbuffify the HTTP, NNTP, RSH, RTSP, and Telnet dissectors.Guy Harris1-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
2000-10-19Patch from Isaac Wilcox to do case-sensitive checks for HTTP methods andGuy Harris1-16/+13
to look for a space after the method name. svn path=/trunk/; revision=2515