diff --git a/gtk/http_stat.c b/gtk/http_stat.c index 94277d21c1..d23242a723 100644 --- a/gtk/http_stat.c +++ b/gtk/http_stat.c @@ -1,7 +1,7 @@ /* http_stat.c * http_stat 2003 Jean-Michel FAYARD * - * $Id: http_stat.c,v 1.1 2003/09/02 22:47:59 guy Exp $ + * $Id: http_stat.c,v 1.2 2003/09/02 23:09:11 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -59,14 +59,15 @@ typedef struct _http_stats_t { /* used to keep track of the stats for a specific response code * for example it can be { 3, 404, "Not Found" ,...} * which means we captured 3 reply http/1.1 404 Not Found */ -typedef struct _http_response_methode_t { +typedef struct _http_response_code_t { guint32 packets; /* 3 */ - guint response_method; /* 404 */ + guint response_code; /* 404 */ gchar *name; /* Not Found */ GtkWidget *widget; /* Label where we display it */ GtkWidget *table; /* Table in which we put it, e.g. client_error_box */ httpstat_t *sp; -} http_response_methode_t; +} http_response_code_t; + /* used to keep track of the stats for a specific request string */ typedef struct _http_request_methode_t { gchar *response; /* eg. : GET */ @@ -142,10 +143,10 @@ http_init_hash( httpstat_t *sp) for (i=0 ; vals_status_code[i].strptr ; i++ ) { gint *key = g_malloc (sizeof(gint)); - http_response_methode_t *sc = g_malloc (sizeof(http_response_methode_t)); + http_response_code_t *sc = g_malloc (sizeof(http_response_code_t)); *key = vals_status_code[i].value; sc->packets=0; - sc->response_method = *key; + sc->response_code = *key; sc->name=vals_status_code[i].strptr; sc->widget=NULL; sc->table=NULL; @@ -172,17 +173,17 @@ http_draw_hash_requests( gchar *key _U_ , http_request_methode_t *data, gchar * static void -http_draw_hash_responses( gint * key _U_ , http_response_methode_t *data, gchar * string_buff) +http_draw_hash_responses( gint * key _U_ , http_response_code_t *data, gchar * string_buff) { if (data==NULL) g_warning("C'est quoi ce borderl key=%d\n", *key); if (data->packets==0) return; - /*sprintf(string_buff, "%d packets %d:%s", data->packets, data->response_method, data->name); */ + /*sprintf(string_buff, "%d packets %d:%s", data->packets, data->response_code, data->name); */ if (data->widget==NULL){ /* create an entry in the relevant box of the window */ guint16 x; GtkWidget *tmp; - guint i = data->response_method; + guint i = data->response_code; if ( (i<100)||(i>=600) ) return; @@ -198,7 +199,7 @@ http_draw_hash_responses( gint * key _U_ , http_response_methode_t *data, gchar data->table = data->sp->server_errors_table; x=GTK_TABLE( data->table)->nrows; - sprintf(string_buff, "HTTP %3d %s ", data->response_method, data->name ); + sprintf(string_buff, "HTTP %3d %s ", data->response_code, data->name ); tmp = gtk_label_new( string_buff ); gtk_table_attach_defaults( GTK_TABLE(data->table), tmp, 0,1, x, x+1); @@ -230,7 +231,7 @@ http_free_hash( gpointer key, gpointer value, gpointer user_data _U_ ) g_free(value); } static void -http_reset_hash_responses(gchar *key _U_ , http_response_methode_t *data, gpointer ptr _U_ ) +http_reset_hash_responses(gchar *key _U_ , http_response_code_t *data, gpointer ptr _U_ ) { data->packets = 0; } @@ -261,11 +262,11 @@ httpstat_packet(void *psp , packet_info *pinfo _U_, epan_dissect_t *edt _U_, voi /* We are only interested in reply packets with a status code */ /* Request or reply packets ? */ - if (value->response_method!=0) { + if (value->response_code!=0) { guint *key=g_malloc( sizeof(guint) ); - http_response_methode_t *sc; + http_response_code_t *sc; - *key=value->response_method ; + *key=value->response_code; sc = g_hash_table_lookup( sp->hash_responses, key); @@ -273,7 +274,7 @@ httpstat_packet(void *psp , packet_info *pinfo _U_, epan_dissect_t *edt _U_, voi /* non standard status code ; we classify it as others * in the relevant category (Informational,Success,Redirection,Client Error,Server Error) */ - int i = value->response_method; + int i = value->response_code; if ((i<100) || (i>=600)) { return 0; } diff --git a/packet-http.c b/packet-http.c index f326994dd6..4b5cbdf004 100644 --- a/packet-http.c +++ b/packet-http.c @@ -6,7 +6,7 @@ * Copyright 2002, Tim Potter * Copyright 1999, Andrew Tridgell * - * $Id: packet-http.c,v 1.66 2003/09/02 22:47:57 guy Exp $ + * $Id: packet-http.c,v 1.67 2003/09/02 23:09:10 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -58,7 +58,7 @@ static int hf_http_response = -1; static int hf_http_request = -1; static int hf_http_basic = -1; static int hf_http_request_method = -1; -static int hf_http_response_method = -1; +static int hf_http_response_code = -1; static gint ett_http = -1; static gint ett_http_ntlmssp = -1; @@ -219,7 +219,7 @@ dissect_http(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree *req_tree; stat_info =g_malloc( sizeof(http_info_value_t)); - stat_info->response_method = 0; + stat_info->response_code = 0; stat_info->request_method = NULL; switch (pinfo->match_port) { @@ -454,20 +454,20 @@ basic_request_dissector(tvbuff_t *tvb, proto_tree *tree, int req_strlen) { proto_tree_add_item(tree, hf_http_request_method, tvb, 0, req_strlen, FALSE); } + static void -response_method_request_dissector(tvbuff_t *tvb, proto_tree *tree, int req_strlen _U_ ) +basic_response_dissector(tvbuff_t *tvb, proto_tree *tree, int req_strlen _U_) { const guchar *data; int minor, major, status_code; - data = tvb_get_ptr(tvb, 0, 12); - if (sscanf(data, "HTTP/%d.%d %d", &minor, &major, &status_code)==3) - { - proto_tree_add_uint(tree, hf_http_response_method, tvb, 9, 3, status_code); - stat_info->response_method = status_code; + + data = tvb_get_ptr(tvb, 5, 12); + if (sscanf(data, "%d.%d %d", &minor, &major, &status_code) == 3) { + proto_tree_add_uint(tree, hf_http_response_code, tvb, 9, 3, status_code); + stat_info->response_code = status_code; } } - /* * XXX - this won't handle HTTP 0.9 replies, but they're all data * anyway. @@ -499,16 +499,11 @@ is_http_request_or_reply(const guchar *data, int linelen, http_type_t *type, * SEARCH */ if (linelen >= 5 && strncmp(data, "HTTP/", 5) == 0) { - *type = HTTP_RESPONSE; isHttpRequestOrReply = TRUE; /* response */ - if (req_dissector && (linelen >= 12) ) - { - *req_dissector = response_method_request_dissector ; - *req_strlen = 3; - } else if (req_dissector) { - *req_dissector = NULL; /* no dissector for this yet. */ + *req_dissector = basic_response_dissector; + *req_strlen = linelen - 5; } } else { const guchar * ptr = (const guchar *)data; @@ -653,10 +648,10 @@ proto_register_http(void) { "Request Method", "http.request.method", FT_STRING, BASE_NONE, NULL, 0x0, "HTTP Request Method", HFILL }}, - { &hf_http_response_method, - { "Response Method", "http.response.method", + { &hf_http_response_code, + { "Response Code", "http.response.code", FT_UINT16, BASE_DEC, NULL, 0x0, - "HTTP Response Method", HFILL }}, + "HTTP Response Code", HFILL }}, }; static gint *ett[] = { &ett_http, diff --git a/packet-http.h b/packet-http.h index 82918d3fca..5144e4f74b 100644 --- a/packet-http.h +++ b/packet-http.h @@ -1,6 +1,6 @@ /* packet-http.h * - * $Id: packet-http.h,v 1.8 2003/09/02 22:47:57 guy Exp $ + * $Id: packet-http.h,v 1.9 2003/09/02 23:09:10 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -23,13 +23,15 @@ #ifndef __PACKET_HTTP_H__ #define __PACKET_HTTP_H__ + #include void http_dissector_add(guint32 port, dissector_handle_t handle); typedef struct _http_info_value_t { - guint response_method; gchar *request_method; -} http_info_value_t ; + guint response_code; +} http_info_value_t; + #endif diff --git a/tap-httpstat.c b/tap-httpstat.c index e03101c590..f4a024cec4 100644 --- a/tap-httpstat.c +++ b/tap-httpstat.c @@ -1,7 +1,7 @@ /* tap-httpstat.c * tap-httpstat 2003 Jean-Michel FAYARD * - * $Id: tap-httpstat.c,v 1.1 2003/09/02 22:47:58 guy Exp $ + * $Id: tap-httpstat.c,v 1.2 2003/09/02 23:09:10 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -46,12 +46,13 @@ typedef struct _http_stats_t { /* used to keep track of the stats for a specific response code * for example it can be { 3, 404, "Not Found" ,...} * which means we captured 3 reply http/1.1 404 Not Found */ -typedef struct _http_response_methode_t { +typedef struct _http_response_code_t { guint32 packets; /* 3 */ - guint response_method; /* 404 */ + guint response_code; /* 404 */ gchar *name; /* Not Found */ httpstat_t *sp; -} http_response_methode_t; +} http_response_code_t; + /* used to keep track of the stats for a specific request string */ typedef struct _http_request_methode_t { gchar *response; /* eg. : GET */ @@ -122,10 +123,10 @@ http_init_hash( httpstat_t *sp) for (i=0 ; vals_status_code[i].strptr ; i++ ) { gint *key = g_malloc (sizeof(gint)); - http_response_methode_t *sc = g_malloc (sizeof(http_response_methode_t)); + http_response_code_t *sc = g_malloc (sizeof(http_response_code_t)); *key = vals_status_code[i].value; sc->packets=0; - sc->response_method = *key; + sc->response_code = *key; sc->name=vals_status_code[i].strptr; sc->sp = sp; g_hash_table_insert( sc->sp->hash_responses, key, sc); @@ -141,7 +142,7 @@ http_draw_hash_requests( gchar *key _U_ , http_request_methode_t *data, gchar * } static void -http_draw_hash_responses( gint * key _U_ , http_response_methode_t *data, char * format) +http_draw_hash_responses( gint * key _U_ , http_response_code_t *data, char * format) { if (data==NULL){ g_warning("C'est quoi ce borderl key=%d\n", *key); @@ -150,7 +151,7 @@ http_draw_hash_responses( gint * key _U_ , http_response_methode_t *data, char * if (data->packets==0) return; /* " HTTP %3d %-35s %9d packets", */ - printf(format, data->response_method, data->name, data->packets ); + printf(format, data->response_code, data->name, data->packets ); } @@ -165,7 +166,7 @@ http_free_hash( gpointer key, gpointer value, gpointer user_data _U_ ) } */ static void -http_reset_hash_responses(gchar *key _U_ , http_response_methode_t *data, gpointer ptr _U_ ) +http_reset_hash_responses(gchar *key _U_ , http_response_code_t *data, gpointer ptr _U_ ) { data->packets = 0; } @@ -193,11 +194,11 @@ httpstat_packet(void *psp , packet_info *pinfo _U_, epan_dissect_t *edt _U_, voi /* We are only interested in reply packets with a status code */ /* Request or reply packets ? */ - if (value->response_method!=0) { + if (value->response_code!=0) { guint *key=g_malloc( sizeof(guint) ); - http_response_methode_t *sc; + http_response_code_t *sc; - *key=value->response_method ; + *key=value->response_code ; sc = g_hash_table_lookup( sp->hash_responses, key); @@ -205,7 +206,7 @@ httpstat_packet(void *psp , packet_info *pinfo _U_, epan_dissect_t *edt _U_, voi /* non standard status code ; we classify it as others * in the relevant category (Informational,Success,Redirection,Client Error,Server Error) */ - int i = value->response_method; + int i = value->response_code; if ((i<100) || (i>=600)) { return 0; }