aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_main.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2017-03-21 00:48:16 +0100
committerLuca Deri <deri@ntop.org>2017-03-21 00:48:16 +0100
commit92b1b46fa67e9de42a028ef9ec0d618cd8e701c5 (patch)
tree11315fa5bf2b1fb622a42560e1c2e1800e3ecfda /src/lib/ndpi_main.c
parent760d468aca5e75123b594319701a43e808961a5d (diff)
SSL server certificate is now detected
Diffstat (limited to 'src/lib/ndpi_main.c')
-rw-r--r--src/lib/ndpi_main.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 5c8589c3f..a2abca7b8 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -3327,30 +3327,34 @@ ndpi_protocol ndpi_detection_giveup(struct ndpi_detection_module_struct *ndpi_st
if(flow->detected_protocol_stack[0] == NDPI_PROTOCOL_UNKNOWN) {
u_int16_t guessed_protocol_id, guessed_host_protocol_id;
- if((flow->guessed_protocol_id == NDPI_PROTOCOL_UNKNOWN)
- && (flow->packet.l4_protocol == IPPROTO_TCP)
- && (flow->l4.tcp.ssl_stage > 1))
- flow->guessed_protocol_id = NDPI_PROTOCOL_SSL;
-
- guessed_protocol_id = flow->guessed_protocol_id,
- guessed_host_protocol_id = flow->guessed_host_protocol_id;
-
- if((guessed_host_protocol_id != NDPI_PROTOCOL_UNKNOWN)
- && (NDPI_ISSET(&flow->excluded_protocol_bitmask, guessed_host_protocol_id)))
- guessed_host_protocol_id = NDPI_PROTOCOL_UNKNOWN;
-
-
- /* Ignore guessed protocol if they have been discarded */
- if((guessed_protocol_id != NDPI_PROTOCOL_UNKNOWN)
- && (guessed_host_protocol_id == NDPI_PROTOCOL_UNKNOWN)
- && (NDPI_ISSET(&flow->excluded_protocol_bitmask, guessed_protocol_id)))
- guessed_protocol_id = NDPI_PROTOCOL_UNKNOWN;
-
- if((guessed_protocol_id != NDPI_PROTOCOL_UNKNOWN)
- || (guessed_host_protocol_id != NDPI_PROTOCOL_UNKNOWN)) {
- ndpi_int_change_protocol(ndpi_struct, flow,
- guessed_host_protocol_id,
- guessed_protocol_id);
+ if(flow->protos.ssl.client_certificate[0] != '\0') {
+ ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_SSL, NDPI_PROTOCOL_UNKNOWN);
+ } else {
+ if((flow->guessed_protocol_id == NDPI_PROTOCOL_UNKNOWN)
+ && (flow->packet.l4_protocol == IPPROTO_TCP)
+ && (flow->l4.tcp.ssl_stage > 1))
+ flow->guessed_protocol_id = NDPI_PROTOCOL_SSL;
+
+ guessed_protocol_id = flow->guessed_protocol_id,
+ guessed_host_protocol_id = flow->guessed_host_protocol_id;
+
+ if((guessed_host_protocol_id != NDPI_PROTOCOL_UNKNOWN)
+ && (NDPI_ISSET(&flow->excluded_protocol_bitmask, guessed_host_protocol_id)))
+ guessed_host_protocol_id = NDPI_PROTOCOL_UNKNOWN;
+
+
+ /* Ignore guessed protocol if they have been discarded */
+ if((guessed_protocol_id != NDPI_PROTOCOL_UNKNOWN)
+ && (guessed_host_protocol_id == NDPI_PROTOCOL_UNKNOWN)
+ && (NDPI_ISSET(&flow->excluded_protocol_bitmask, guessed_protocol_id)))
+ guessed_protocol_id = NDPI_PROTOCOL_UNKNOWN;
+
+ if((guessed_protocol_id != NDPI_PROTOCOL_UNKNOWN)
+ || (guessed_host_protocol_id != NDPI_PROTOCOL_UNKNOWN)) {
+ ndpi_int_change_protocol(ndpi_struct, flow,
+ guessed_host_protocol_id,
+ guessed_protocol_id);
+ }
}
} else {
flow->detected_protocol_stack[1] = flow->guessed_protocol_id,