Index: trunk/Nebulous/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server.pm	(revision 5498)
+++ trunk/Nebulous/lib/Nebulous/Server.pm	(revision 5501)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Server.pm,v 1.14 2005-11-10 21:31:26 jhoblitt Exp $
+# $Id: Server.pm,v 1.15 2005-11-10 21:51:06 jhoblitt Exp $
 
 package Nebulous::Server;
@@ -82,4 +82,8 @@
         {
             type        => SCALAR,
+            callbacks   => {
+                # check that the volume requested is valid
+                'is valid volume name' => sub { _is_valid_volume_name($_[0]) },
+            },
             optional    => 1,
         },
@@ -97,5 +101,4 @@
 
     # check that the comment isn't too long
-    # check that the volume requested is valid
 
     my $uri;
@@ -702,4 +705,23 @@
 }
 
+sub _is_valid_volume_name  {
+    my $vol_name = shift;
+
+    my $volume;
+    eval {
+        my $query = $db->prepare_cached( $sql->get_volume_by_name  ); 
+        $query->execute( $vol_name );
+        ( $volume ) = $query->fetchrow_array;
+
+        $query->finish;
+    };
+    if ( $@ ) {
+        $db->rollback;
+        $log->logdie( "database error: $@" );
+    }
+
+    return ( defined $volume ) ? 1 : undef;
+}
+
 1;
 
Index: trunk/Nebulous/lib/Nebulous/Server/SQL.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 5498)
+++ trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 5501)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: SQL.pm,v 1.15 2005-11-10 21:21:14 jhoblitt Exp $
+# $Id: SQL.pm,v 1.16 2005-11-10 21:51:06 jhoblitt Exp $
 
 package Nebulous::Server::SQL;
@@ -128,4 +128,9 @@
         FROM class
         WHERE class_id = ?
+    },
+    get_volume_by_name => qq{
+        SELECT vol_id, name, uri
+        FROM volume
+        WHERE name = ?
     },
 );
