diff src/scanner.cpp @ 12:6ac6d6b822ce stable-2-0

fix memory leak with duplicate url host names, document differences from sendmail.mc feature
author carl
date Fri, 23 Apr 2004 22:45:10 -0700
parents 2c206836b4cc
children 2ae8d953f1d0
line wrap: on
line diff
--- a/src/scanner.cpp	Thu Apr 22 20:19:01 2004 -0700
+++ b/src/scanner.cpp	Fri Apr 23 22:45:10 2004 -0700
@@ -825,18 +825,18 @@
     state   st;
     state   init;
     fsa*    next;
-    string_set  *urls;
+    string_set  *hosts;
 
-    fsa(state init, fsa* next_, string_set *urls_);
+    fsa(state init, fsa* next_, string_set *hosts_);
     void push(u_char *buf, int len);
 };
 
-fsa::fsa(state init_, fsa *next_, string_set *urls_) {
+fsa::fsa(state init_, fsa *next_, string_set *hosts_) {
     count = 0;
     st    = init_;
     init  = init_;
     next  = next_;
-    urls  = urls_;
+    hosts = hosts_;
 }
 
 void fsa::push(u_char *buf, int len) {
@@ -866,7 +866,7 @@
                     pending[count-1] = 0;
                     if (strncasecmp((const char *)pending, "http://", 7) == 0) {
                         char *p = (char *)pending + 7;
-                        if (strchr(p, '.')) urls->insert(strdup(p)); // require at least one . in a dns name
+                        if (strchr(p, '.')) register_string(*hosts, p); // require at least one . in a dns name
                     }
                 }
                 }   // fall thru
@@ -969,13 +969,13 @@
     fsa *mime_parser;
     fsa *b64_parser;
 
-    url_scanner(string_set *urls);
+    url_scanner(string_set *hosts);
     ~url_scanner();
     void scan(u_char *buffer, size_t length);
 };
 
-url_scanner::url_scanner(string_set *urls) {
-    urls_parser = new fsa(u_init, NULL,        urls);
+url_scanner::url_scanner(string_set *hosts) {
+    urls_parser = new fsa(u_init, NULL,        hosts);
     html_parser = new fsa(e_init, urls_parser, NULL);
     mime_parser = new fsa(m_init, html_parser, NULL);
     b64_parser  = new fsa(b_init, mime_parser, NULL);