diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 3ec877f..ca9dd04 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,9 @@
+2004-03-18 Amir Guindehi <amir@datacore.ch>
+
+	* ospf_opaque.c: Attempt to correct the incorrect behavior of
+	Quagga's ospfd in the special situation that a node's opaque
+	capability has changed as "ON -> OFF -> ON". [quagga-dev 843].
+
 2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>
 
 	* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range
diff --git a/ospfd/ospf_opaque.c b/ospfd/ospf_opaque.c
index f1fe783..636839c 100644
--- a/ospfd/ospf_opaque.c
+++ b/ospfd/ospf_opaque.c
@@ -1385,10 +1385,15 @@
     {
       for (node = listhead (oi->opaque_lsa_self); node; nextnode (node))
         {
+	  /* 
+	   * removed the test for
+	   *   (! list_isempty (oipt->id_list))   * Handler is already active. *
+           * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list)
+	   * not being empty.
+	   */
           if ((oipt = getdata (node))  == NULL /* Something wrong? */
           ||   oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */
-          ||   oipt->status == PROC_SUSPEND    /* Cannot originate now. */
-          ||  ! list_isempty (oipt->id_list))  /* Handler is already active. */
+          ||   oipt->status == PROC_SUSPEND)   /* Cannot originate now. */
               continue;
 
           ospf_opaque_lsa_reoriginate_schedule ((void *) oi,
@@ -1401,10 +1406,15 @@
     {
       for (node = listhead (area->opaque_lsa_self); node; nextnode (node))
         {
+	  /* 
+	   * removed the test for
+	   *   (! list_isempty (oipt->id_list))   * Handler is already active. *
+           * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list)
+	   * not being empty.
+	   */
           if ((oipt = getdata (node))  == NULL /* Something wrong? */
           ||   oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */
-          ||   oipt->status == PROC_SUSPEND    /* Cannot originate now. */
-          ||  ! list_isempty (oipt->id_list))  /* Handler is already active. */
+          ||   oipt->status == PROC_SUSPEND)   /* Cannot originate now. */
             continue;
 
           ospf_opaque_lsa_reoriginate_schedule ((void *) area,
@@ -1417,10 +1427,15 @@
     {
       for (node = listhead (top->opaque_lsa_self); node; nextnode (node))
         {
+	  /* 
+	   * removed the test for
+	   *   (! list_isempty (oipt->id_list))   * Handler is already active. *
+           * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list)
+	   * not being empty.
+	   */
           if ((oipt = getdata (node))  == NULL /* Something wrong? */
           ||   oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */
-          ||   oipt->status == PROC_SUSPEND    /* Cannot originate now. */
-          ||  ! list_isempty (oipt->id_list))  /* Handler is already active. */
+          ||   oipt->status == PROC_SUSPEND)   /* Cannot originate now. */
             continue;
 
           ospf_opaque_lsa_reoriginate_schedule ((void *) top,
