]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Update Server and User-Agent strings.
authormike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Wed, 16 Jan 2013 22:49:13 +0000 (22:49 +0000)
committermike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Wed, 16 Jan 2013 22:49:13 +0000 (22:49 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10821 7a7537e8-13f0-0310-91df-b6672ffda945

cups/http.c
scheduler/conf.c

index 146c8c7e1c51e22d736646f19c5068daaa01cf6f..0121fc63714a149864f5e0530c20105919a1dc86 100644 (file)
 #  include <signal.h>
 #  include <sys/time.h>
 #  include <sys/resource.h>
+#  include <sys/utsname.h>
 #endif /* WIN32 */
 #ifdef HAVE_POLL
 #  include <poll.h>
@@ -4792,9 +4793,46 @@ http_send(http_t       *http,            /* I - Connection to server */
   */
 
   if (!http->fields[HTTP_FIELD_USER_AGENT][0])
-    httpSetField(http, HTTP_FIELD_USER_AGENT,
-                 http->default_user_agent ? http->default_user_agent :
-                                            CUPS_MINIMAL);
+  {
+    if (http->default_user_agent)
+    {
+      httpSetField(http, HTTP_FIELD_USER_AGENT, http->default_user_agent);
+    }
+    else
+    {
+#ifdef WIN32
+      SYSTEM_INFO      sysinfo;        /* System information */
+      OSVERSIONEX      version;        /* OS version info */
+
+      version.dwOSVersionInfoSize = sizeof(OSVERSIONEX);
+      GetVersionInfoEx(&version);
+      GetNativeSystemInfo(&sysinfo);
+
+      snprintf(buf, sizeof(buf), CUPS_MINIMAL " (Windows %d.%d; %s) IPP/2.0",
+               version.major, version.minor,
+               sysinfo.wProcessorArchitecture
+                   == PROCESSOR_ARCHITECTURE_AMD64 ? "amd64" :
+                   sysinfo.wProcessorArchitecture
+                       == PROCESSOR_ARCHITECTURE_ARM ? "arm" :
+                   sysinfo.wProcessorArchitecture
+                       == PROCESSOR_ARCHITECTURE_IA64 ? "ia64" :
+                   sysinfo.wProcessorArchitecture
+                       == PROCESSOR_ARCHITECTURE_INTEL ? "intel" :
+                   "unknown");
+
+#else
+      struct utsname   name;           /* uname info */
+
+      uname(&name);
+
+      snprintf(buf, sizeof(buf), CUPS_MINIMAL " (%s %s; %s) IPP/2.0",
+               name.sysname, name.release, name.machine);
+#endif /* WIN32 */
+
+      DEBUG_printf(("8http_send: Default User-Agent: %s", buf));
+      httpSetField(http, HTTP_FIELD_USER_AGENT, buf);
+    }
+  }
 
  /*
   * Set the Accept-Encoding field if it isn't already...
index d6c64440c4fee297827b50a637b12ed25b53f195..1613e9757e6a74782fa06f559de44b820043dc51 100644 (file)
@@ -590,7 +590,7 @@ cupsdReadConfiguration(void)
   cupsdSetString(&Printcap, CUPS_DEFAULT_PRINTCAP);
   cupsdSetString(&FontPath, CUPS_FONTPATH);
   cupsdSetString(&RemoteRoot, "remroot");
-  cupsdSetStringf(&ServerHeader, "CUPS/%d.%d", CUPS_VERSION_MAJOR,
+  cupsdSetStringf(&ServerHeader, "CUPS/%d.%d IPP/2.1", CUPS_VERSION_MAJOR,
                   CUPS_VERSION_MINOR);
   cupsdSetString(&StateDir, CUPS_STATEDIR);
 
@@ -3207,19 +3207,20 @@ read_cupsd_conf(cups_file_t *fp)        /* I - File to read from */
       uname(&plat);
 
       if (!_cups_strcasecmp(value, "ProductOnly"))
-       cupsdSetString(&ServerHeader, "CUPS");
+       cupsdSetString(&ServerHeader, "CUPS IPP");
       else if (!_cups_strcasecmp(value, "Major"))
-       cupsdSetStringf(&ServerHeader, "CUPS/%d", CUPS_VERSION_MAJOR);
+       cupsdSetStringf(&ServerHeader, "CUPS/%d IPP/2", CUPS_VERSION_MAJOR);
       else if (!_cups_strcasecmp(value, "Minor"))
-       cupsdSetStringf(&ServerHeader, "CUPS/%d.%d", CUPS_VERSION_MAJOR,
+       cupsdSetStringf(&ServerHeader, "CUPS/%d.%d IPP/2.1", CUPS_VERSION_MAJOR,
                        CUPS_VERSION_MINOR);
       else if (!_cups_strcasecmp(value, "Minimal"))
-       cupsdSetString(&ServerHeader, CUPS_MINIMAL);
+       cupsdSetString(&ServerHeader, CUPS_MINIMAL " IPP/2.1");
       else if (!_cups_strcasecmp(value, "OS"))
-       cupsdSetStringf(&ServerHeader, CUPS_MINIMAL " (%s)", plat.sysname);
+       cupsdSetStringf(&ServerHeader, CUPS_MINIMAL " (%s %s) IPP/2.1",
+                       plat.sysname, plat.release);
       else if (!_cups_strcasecmp(value, "Full"))
-       cupsdSetStringf(&ServerHeader, CUPS_MINIMAL " (%s) IPP/2.1",
-                       plat.sysname);
+       cupsdSetStringf(&ServerHeader, CUPS_MINIMAL " (%s %s; %s) IPP/2.1",
+                       plat.sysname, plat.release, plat.machine);
       else if (!_cups_strcasecmp(value, "None"))
        cupsdClearString(&ServerHeader);
       else