More friendly behaviour in during character set negotiation.
[idzebra-moved-to-github.git] / index / zserver.c
index 24aad32..5578959 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: zserver.c,v 1.108 2003-06-18 11:46:33 adam Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: zserver.c,v 1.112 2003-11-09 11:48:16 oleg Exp $
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
    Index Data Aps
 
 This file is part of the Zebra server.
@@ -149,7 +149,7 @@ bend_initresult *bend_init (bend_initrequest *q)
                 if (selected)
                     zebra_record_encoding (zh, right_name);
                q->charneg_response =
-                   yaz_set_response_charneg (q->stream, right_name,
+                   yaz_set_response_charneg (q->stream, charsets[i],
                                               0, selected);
                break;
             } else {
@@ -382,6 +382,7 @@ static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r)
        break;
     case Z_ESAdminOriginPartToKeep_drop:
        yaz_log(LOG_LOG, "adm-drop");
+       zebra_drop_database (zh, r->toKeep->databaseName);
        break;
     case Z_ESAdminOriginPartToKeep_create:
        yaz_log(LOG_LOG, "adm-create %s", r->toKeep->databaseName);
@@ -656,20 +657,24 @@ static void bend_start (struct statserv_options_block *sob)
 #else
     if (!sob->inetd) 
     {
+       char pidfname[4096];
         struct flock area;
-        char *pidfile = "zebrasrv.pid";
-        int fd = open (pidfile, O_EXCL|O_WRONLY|O_CREAT, 0666);
+       int fd;
+
+       zebra_pidfname(sob->handle, pidfname);
+
+        fd = open (pidfname, O_EXCL|O_WRONLY|O_CREAT, 0666);
         if (fd == -1)
         {
             if (errno != EEXIST)
             {
-                yaz_log(LOG_FATAL|LOG_ERRNO, "lock file %s", pidfile);
+                yaz_log(LOG_FATAL|LOG_ERRNO, "lock file %s", pidfname);
                 exit(1);
             }
-            fd = open(pidfile, O_RDWR, 0666);
+            fd = open(pidfname, O_RDWR, 0666);
             if (fd == -1)
             {
-                yaz_log(LOG_FATAL|LOG_ERRNO, "lock file %s", pidfile);
+                yaz_log(LOG_FATAL|LOG_ERRNO, "lock file %s", pidfname);
                 exit(1);
             }
         }
@@ -697,8 +702,12 @@ static void bend_stop(struct statserv_options_block *sob)
 #ifdef WIN32
 
 #else
-    if (!sob->inetd) 
-        unlink ("zebrasrv.pid");
+    if (!sob->inetd && sob->handle) 
+    {
+       char pidfname[4096];
+       zebra_pidfname(sob->handle, pidfname);
+        unlink (pidfname);
+    }
 #endif
     if (sob->handle)
     {