Index: mailing_list.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.admin.inc,v
retrieving revision 1.2
diff -u -p -r1.2 mailing_list.admin.inc
--- mailing_list.admin.inc	4 Aug 2009 20:18:22 -0000	1.2
+++ mailing_list.admin.inc	5 Aug 2009 00:20:35 -0000
@@ -166,6 +166,12 @@ function mailing_list_email_form(&$form_
       '#value' => isset($form_state['values']['mlid']) ? $form_state['values']['mlid'] : isset($list) ? $list->mlid: null,
     );
   }
+  if (isset($form_state['values']['ml_name']) || isset($list)) {
+    $form['ml_name']   = array(
+      '#type' => 'hidden',
+      '#value' => isset($form_state['values']['ml_name']) ? $form_state['values']['ml_name'] : isset($list) ? $list->name: null,
+    );
+  }
   if (isset($form_state['values']['eid']) || isset($email)) {
     $form['eid'] = array(
       '#type' => 'hidden',
@@ -188,6 +194,7 @@ function mailing_list_email_form(&$form_
     '#type' => 'submit',
     '#submit' => array('mailing_list_email_form_submit'),
   );
+  $form['#validate'][] = 'mailing_list_subscription_form_validate';
   $form['#redirect'] = 'admin/build/mailing-list/'. $list->mlid;
   return $form;
 }
Index: mailing_list.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.install,v
retrieving revision 1.4
diff -u -p -r1.4 mailing_list.install
--- mailing_list.install	4 Aug 2009 19:46:02 -0000	1.4
+++ mailing_list.install	5 Aug 2009 00:20:35 -0000
@@ -80,9 +80,10 @@ function mailing_list_schema() {
     'indexes' => array(
       'mlid' => array('mlid'),
       'name' => array('name'),
+      'mail' => array('mail'),
     ),
     'unique keys' => array(
-      'mail' => array('mail'),
+      'mlid_mail' => array('mlid', 'mail'),
     ),
   );
 
@@ -147,9 +148,12 @@ function mailing_list_update_6000() {
       'not null' => TRUE,
     ),
     array(
-      'unique keys' => array(
+      'indexes' => array(
         'mail' => array('mail'),
       ),
+      'unique keys' => array(
+        'mlid_mail' => array('mlid', 'mail'),
+      ),
     )
   );
 
Index: mailing_list.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.module,v
retrieving revision 1.4
diff -u -p -r1.4 mailing_list.module
--- mailing_list.module	4 Aug 2009 19:46:02 -0000	1.4
+++ mailing_list.module	5 Aug 2009 00:20:35 -0000
@@ -149,7 +149,7 @@ function mailing_list_block($op = 'list'
       $result = db_query($query);
       while ($list = db_fetch_object($result)) {
         $block[$list->mlid] = array(
-          'info' => check_plain($list->name),
+          'info' => t('Mailing list: @name', array('@name' => $list->name)),
         );
       }
       break;
@@ -158,7 +158,7 @@ function mailing_list_block($op = 'list'
       $list = mailing_list_load($delta);
       $block = array(
         'subject' => check_plain($list->name),
-        'content' => drupal_get_form('mailing_list_subscription_form', $list),
+        'content' => drupal_get_form('mailing_list_subscription_form_'. $delta),
       );
       break;
   }
@@ -167,6 +167,23 @@ function mailing_list_block($op = 'list'
 }
 
 /**
+ * Implementation of hook_forms().
+ *
+ * All subscription forms are build using mailing_list_subscription_form().
+ * hook_forms() is required to provide unique form id for each one.
+ */
+function mailing_list_forms() {
+  $query = db_query('SELECT * FROM {mailing_list}');
+  while ($list = db_fetch_object($query)) {
+    $forms['mailing_list_subscription_form_'. $list->mlid] = array(
+      'callback' => 'mailing_list_subscription_form',
+      'callback arguments' => array($list),
+    );
+  }
+  return $forms;
+}
+
+/**
  * Return the mailing list object matching a mailing list ID.
  *
  * @param $mlid
@@ -242,6 +259,7 @@ function mailing_list_subscription_form(
     '#title' => t('E-mail'),
     '#type' => 'textfield',
     '#size' => 20,
+    '#required' => TRUE,
   );
   $form['submit'] = array(
     '#value' => t('Subscribe'),
@@ -257,9 +275,6 @@ function mailing_list_subscription_form(
  * entered.
  */
 function mailing_list_subscription_form_validate($form, &$form_state) {
-  if (variable_get('mailing_list_show_name_'. $form_state['values']['mlid'], 1) && empty($form_state['values']['name'])) {
-    form_set_error('name', t('Name is required.'));
-  }
   $message = user_validate_mail($form_state['values']['mail']);
   if ($message) {
     form_set_error('mail', $message);
