----------------- sites/all/modules/nodequeue/nodequeue.module -----------------
index eab7411..c9c0286 100644
@@ -2102,19 +2102,26 @@ function nodequeue_remove_subqueue($sqid) {
  */
 function nodequeue_subqueue_add($queue, &$subqueue, $nid) {
   if (!empty($nid)) {
-    db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());
-    $subqueue->count++;
-    // If adding this would make the queue too big, pop the front node
-    // (or nodes) out.
-    if (!empty($queue->size)) {
-      // 0 means infinity so never do this if false
-      nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
+    //Check for dublicate insert
+    $result = db_result(db_query('SELECT qid FROM {nodequeue_nodes} WHERE sqid='.$subqueue->sqid.' and qid='.$queue->qid.' and nid='.$nid.' LIMIT 1'));
+    if(!$result) {
+      db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());
+      $subqueue->count++;
+      // If adding this would make the queue too big, pop the front node
+      // (or nodes) out.
+      if (!empty($queue->size)) {
+        // 0 means infinity so never do this if false
+        nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
+      }
+      if (module_exists('apachesolr')) {
+        apachesolr_mark_node($nid);
+      }
+      //Invoke the hook to notify other modules of the node addition.
+      module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
     }
-    if (module_exists('apachesolr')) {
-      apachesolr_mark_node($nid);
+    else {
+      drupal_set_message(t('Node '.$nid.' is already in the queue.'), 'error');
     }
-    //Invoke the hook to notify other modules of the node addition.
-    module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
   }
 }
