Porting changes from 1.2 branch
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Mon, 25 Oct 2004 03:52:48 +0000 (03:52 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Mon, 25 Oct 2004 03:52:48 +0000 (03:52 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@1218 cb58f699-b61c-0410-a6fe-9272a202ed29

14 files changed:
isapi_shib/isapi_shib.dsp
isapi_shib/isapi_shib.rc [new file with mode: 0644]
isapi_shib/resource.h [new file with mode: 0644]
shib-mysql-ccache/Makefile.am
shib-mysql-ccache/resource.h [new file with mode: 0644]
shib-mysql-ccache/shib_mysql_ccache.dsp
shib-mysql-ccache/shib_mysql_ccache.rc [new file with mode: 0644]
shib-target/Makefile.am
shib-target/XMLRequestMapper.cpp
shib-target/resource.h [new file with mode: 0644]
shib-target/shib-rm.cpp
shib-target/shib-shire.cpp
shib-target/shib-target.rc [new file with mode: 0644]
shib-target/shibtarget.dsp

index ea6c936..c54e8f3 100644 (file)
@@ -91,15 +91,15 @@ LINK32=link.exe
 # Name "isapi_shib - Win32 Debug"
 # Begin Source File
 
-SOURCE=.\directive_class.h
+SOURCE=.\isapi_shib.cpp
 # End Source File
 # Begin Source File
 
-SOURCE=.\directives.h
+SOURCE=.\isapi_shib.rc
 # End Source File
 # Begin Source File
 
-SOURCE=.\isapi_shib.cpp
+SOURCE=.\resource.h
 # End Source File
 # End Target
 # End Project
diff --git a/isapi_shib/isapi_shib.rc b/isapi_shib/isapi_shib.rc
new file mode 100644 (file)
index 0000000..0f99511
--- /dev/null
@@ -0,0 +1,109 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,2,1,0
+ PRODUCTVERSION 1,2,1,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "UCAID\0"
+            VALUE "FileDescription", "Shibboleth ISAPI Filter / Extension\0"
+            VALUE "FileVersion", "1, 2, 1, 0\0"
+            VALUE "InternalName", "isapi_shib\0"
+            VALUE "LegalCopyright", "Copyright © 2004 UCAID\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "isapi_shib.dll\0"
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "Shibboleth 1.2.1\0"
+            VALUE "ProductVersion", "1, 2, 1, 0\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/isapi_shib/resource.h b/isapi_shib/resource.h
new file mode 100644 (file)
index 0000000..f3772c1
--- /dev/null
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by isapi_shib.rc
+//
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
index 28c11a3..189b371 100644 (file)
@@ -19,5 +19,5 @@ shib_mysql_ccache_la_LDFLAGS = -module -avoid-version
 install-exec-hook:
        for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done
 
-EXTRA_DIST = shib_mysql_ccache.dsp
+EXTRA_DIST = shib_mysql_ccache.dsp shib_mysql_ccache.rc resource.h
 
diff --git a/shib-mysql-ccache/resource.h b/shib-mysql-ccache/resource.h
new file mode 100644 (file)
index 0000000..ddb62d9
--- /dev/null
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by shib_mysql_ccache.rc
+//
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
index 109ed67..9ebc1ac 100644 (file)
@@ -89,7 +89,15 @@ LINK32=link.exe
 # Name "shib_mysql_ccache - Win32 Debug"
 # Begin Source File
 
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
 SOURCE=".\shib-mysql-ccache.cpp"
 # End Source File
+# Begin Source File
+
+SOURCE=.\shib_mysql_ccache.rc
+# End Source File
 # End Target
 # End Project
diff --git a/shib-mysql-ccache/shib_mysql_ccache.rc b/shib-mysql-ccache/shib_mysql_ccache.rc
new file mode 100644 (file)
index 0000000..9365a58
--- /dev/null
@@ -0,0 +1,109 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,2,1,0
+ PRODUCTVERSION 1,2,1,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "UCAID\0"
+            VALUE "FileDescription", "Shibboleth MySQL Session Cache Plugin\0"
+            VALUE "FileVersion", "1, 2, 1, 0\0"
+            VALUE "InternalName", "shib-mysql-ccache\0"
+            VALUE "LegalCopyright", "Copyright © 2004 UCAID\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "shib-mysql-ccache.so\0"
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "Shibboleth 1.2.1\0"
+            VALUE "ProductVersion", "1, 2, 1, 0\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 0e053f4..c77de9d 100644 (file)
@@ -35,7 +35,7 @@ libshib_target_la_SOURCES = \
 
 # this is different from the project version
 # http://sources.redhat.com/autobook/autobook/autobook_91.html
-libshib_target_la_LDFLAGS = -version-info 4:0:0
+libshib_target_la_LDFLAGS = -version-info 4:1:0
 
 
 
@@ -66,5 +66,5 @@ shib-paths.h: ${srcdir}/shib-paths.h.in Makefile ${top_builddir}/config.status
 install-exec-hook:
        for la in $(lib_LTLIBRARIES) ; do rm -f $(DESTDIR)$(libdir)/$$la ; done
 
-EXTRA_DIST = shibtarget.dsp shib-paths.h.in
+EXTRA_DIST = shibtarget.dsp shib-paths.h.in resource.h shib-target.rc
 BUILT_SOURCES = shib-paths.h
index b75ebf9..cd07bd9 100644 (file)
@@ -347,44 +347,100 @@ void XMLRequestMapperImpl::init()
             char* dup=strdup(name.second);
             for (char* pch=dup; *pch; pch++)
                 *pch=tolower(*pch);
+            auto_ptr<char> dupwrap(dup);
 
-            string url(scheme.first ? scheme.second : "http");
-            url=url + "://" + dup;
-            free(dup);
-            if (!port.first) {
-                // First store a port-less version.
-                if (m_map.count(url)) {
-                    log->warn("Skipping duplicate Host element (%s)",url.c_str());
-                    delete o;
-                    continue;
-                }
-                m_map[url]=o;
-                
-                // Now append the default port.
+            if (!scheme.first && port.first) {
+                // No scheme, but a port, so assume http.
+                scheme = pair<bool,const char*>(true,"http");
+            }
+            else if (scheme.first && !port.first) {
+                // Scheme, no port, so default it.
                 // XXX Use getservbyname instead?
-                if (!scheme.first || !strcmp(scheme.second,"http"))
-                    url=url + ":80";
+                port.first = true;
+                if (!strcmp(scheme.second,"http"))
+                    port.second = "80";
                 else if (!strcmp(scheme.second,"https"))
-                    url=url + ":443";
+                    port.second = "443";
                 else if (!strcmp(scheme.second,"ftp"))
-                    url=url + ":21";
+                    port.second = "21";
                 else if (!strcmp(scheme.second,"ldap"))
-                    url=url + ":389";
+                    port.second = "389";
                 else if (!strcmp(scheme.second,"ldaps"))
-                    url=url + ":636";
+                    port.second = "636";
+            }
+
+            if (scheme.first) {
+                string url(scheme.second);
+                url=url + "://" + dup;
                 
-                m_extras[url]=o;
+                // Is this the default port?
+                if ((!strcmp(scheme.second,"http") && !strcmp(port.second,"80")) ||
+                    (!strcmp(scheme.second,"https") && !strcmp(port.second,"443")) ||
+                    (!strcmp(scheme.second,"ftp") && !strcmp(port.second,"21")) ||
+                    (!strcmp(scheme.second,"ldap") && !strcmp(port.second,"389")) ||
+                    (!strcmp(scheme.second,"ldaps") && !strcmp(port.second,"636"))) {
+                    // First store a port-less version.
+                    if (m_map.count(url) || m_extras.count(url)) {
+                        log->warn("Skipping duplicate Host element (%s)",url.c_str());
+                        delete o;
+                        continue;
+                    }
+                    m_map[url]=o;
+                    log->debug("Added <Host> mapping for %s",url.c_str());
+                    
+                    // Now append the port. We use the extras vector, to avoid double freeing the object later.
+                    url=url + ':' + port.second;
+                    m_extras[url]=o;
+                    log->debug("Added <Host> mapping for %s",url.c_str());
+                }
+                else {
+                    url=url + ':' + port.second;
+                    if (m_map.count(url) || m_extras.count(url)) {
+                        log->warn("Skipping duplicate Host element (%s)",url.c_str());
+                        delete o;
+                        continue;
+                    }
+                    m_map[url]=o;
+                    log->debug("Added <Host> mapping for %s",url.c_str());
+                }
             }
             else {
-                url=url + ':' + port.second;
-                if (m_map.count(url)) {
+                // No scheme or port, so we enter dual hosts on http:80 and https:443
+                string url("http://");
+                url = url + dup;
+                if (m_map.count(url) || m_extras.count(url)) {
                     log->warn("Skipping duplicate Host element (%s)",url.c_str());
                     delete o;
                     continue;
                 }
                 m_map[url]=o;
+                log->debug("Added <Host> mapping for %s",url.c_str());
+                
+                url = url + ":80";
+                if (m_map.count(url) || m_extras.count(url)) {
+                    log->warn("Skipping duplicate Host element (%s)",url.c_str());
+                    continue;
+                }
+                m_extras[url]=o;
+                log->debug("Added <Host> mapping for %s",url.c_str());
+                
+                url = "https://";
+                url = url + dup;
+                if (m_map.count(url) || m_extras.count(url)) {
+                    log->warn("Skipping duplicate Host element (%s)",url.c_str());
+                    continue;
+                }
+                m_extras[url]=o;
+                log->debug("Added <Host> mapping for %s",url.c_str());
+                
+                url = url + ":443";
+                if (m_map.count(url) || m_extras.count(url)) {
+                    log->warn("Skipping duplicate Host element (%s)",url.c_str());
+                    continue;
+                }
+                m_extras[url]=o;
+                log->debug("Added <Host> mapping for %s",url.c_str());
             }
-            log->debug("Added <Host> mapping for %s",url.c_str());
         }
     }
     catch (SAMLException& e) {
@@ -418,7 +474,7 @@ const Override* XMLRequestMapperImpl::findOverride(const char* vhost, const char
 const char* split_url(const char* url, string& vhost)
 {
     const char* path=NULL;
-    const char* slash=strchr(url,'/');
+    char* slash=strchr(url,'/');
     if (slash)
     {
         slash=strchr(slash,'/');
diff --git a/shib-target/resource.h b/shib-target/resource.h
new file mode 100644 (file)
index 0000000..4fbd2cf
--- /dev/null
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by shib-target.rc
+//
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
index ccbda1e..deea26b 100644 (file)
@@ -119,20 +119,18 @@ RPCError* RM::getAssertions(
   RPC rpc;
   do {
     clnt = rpc->connect();
-    if (shibrpc_get_assertions_1(&arg, &ret, clnt) != RPC_SUCCESS) {
+    clnt_stat status = shibrpc_get_assertions_1(&arg, &ret, clnt);
+    if (status != RPC_SUCCESS) {
       // FAILED.  Release, disconnect, and try again.
-      log.debug("RPC Failure: %p (%p): %s", this, clnt, clnt_spcreateerror (""));
+      log.debug("RPC Failure: %p (%p) (%d): %s", this, clnt, status, clnt_spcreateerror("shibrpc_get_assertions_1"));
       rpc->disconnect();
       if (retry)
         retry--;
-      else {
-        log.error("RPC Failure: %p, %p", this, clnt);
+      else
         return new RPCError(-1, "RPC Failure");
-      }
     }
     else {
       // SUCCESS.  Release back into pool
-      rpc.pool();
       retry = -1;
     }
   } while (retry>=0);
@@ -187,6 +185,7 @@ RPCError* RM::getAssertions(
   }
 
   clnt_freeres(clnt, (xdrproc_t)xdr_shibrpc_get_assertions_ret_1, (caddr_t)&ret);
+  rpc.pool();
 
   log.debug ("returning..");
   return retval;
index 52d8e9f..eacb67a 100644 (file)
@@ -415,20 +415,18 @@ RPCError* SHIRE::sessionIsValid(const char* session_id, const char* ip) const
   RPC rpc;
   do {
     clnt = rpc->connect();
-    if (shibrpc_session_is_valid_1(&arg, &ret, clnt) != RPC_SUCCESS) {
+    clnt_stat status = shibrpc_session_is_valid_1(&arg, &ret, clnt);
+    if (status != RPC_SUCCESS) {
       // FAILED.  Release, disconnect, and try again...
-      log.debug("RPC Failure: %p (%p): %s", this, clnt, clnt_spcreateerror(""));
+      log.error("RPC Failure: %p (%p) (%d) %s", this, clnt, status, clnt_spcreateerror("shibrpc_session_is_valid_1"));
       rpc->disconnect();
       if (retry)
           retry--;
-      else {
-        log.error("RPC Failure: %p (%p)", this, clnt);
-        return new RPCError(-1, "RPC Failure");
-      }
+      else
+          return new RPCError(-1, "RPC Failure");
     }
     else {
-      // SUCCESS.  Return to the pool.
-      rpc.pool();
+      // SUCCESS
       retry = -1;
     }
   } while (retry>=0);
@@ -442,6 +440,7 @@ RPCError* SHIRE::sessionIsValid(const char* session_id, const char* ip) const
     retval = new RPCError();
 
   clnt_freeres (clnt, (xdrproc_t)xdr_shibrpc_session_is_valid_ret_1, (caddr_t)&ret);
+  rpc.pool();
 
   log.debug("returning");
   return retval;
@@ -487,20 +486,18 @@ RPCError* SHIRE::sessionCreate(const char* response, const char* ip, string& coo
   RPC rpc;
   do {
     clnt = rpc->connect();
-    if (shibrpc_new_session_1 (&arg, &ret, clnt) != RPC_SUCCESS) {
+    clnt_stat status = shibrpc_new_session_1 (&arg, &ret, clnt);
+    if (status != RPC_SUCCESS) {
       // FAILED.  Release, disconnect, and retry
-      log.debug("RPC Failure: %p (%p): %s", this, clnt, clnt_spcreateerror (""));
+      log.error("RPC Failure: %p (%p) (%d): %s", this, clnt, status, clnt_spcreateerror("shibrpc_new_session_1"));
       rpc->disconnect();
       if (retry)
-       retry--;
-      else {
-        log.error("RPC Failure: %p (%p)", this, clnt);
+        retry--;
+      else
         return new RPCError(-1, "RPC Failure");
-      }
     }
     else {
       // SUCCESS.  Pool and continue
-      rpc.pool();
       retry = -1;
     }
   } while (retry>=0);
@@ -517,6 +514,7 @@ RPCError* SHIRE::sessionCreate(const char* response, const char* ip, string& coo
   }
 
   clnt_freeres(clnt, (xdrproc_t)xdr_shibrpc_new_session_ret_1, (caddr_t)&ret);
+  rpc.pool();
 
   log.debug("returning");
   return retval;
diff --git a/shib-target/shib-target.rc b/shib-target/shib-target.rc
new file mode 100644 (file)
index 0000000..91bc573
--- /dev/null
@@ -0,0 +1,117 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 4,0,1,0
+ PRODUCTVERSION 1,2,1,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "UCAID\0"
+            VALUE "FileDescription", "Shibboleth Target Library\0"
+            VALUE "FileVersion", "4, 0, 1, 0\0"
+#ifdef _DEBUG
+            VALUE "InternalName", "shibtarget_4D\0"
+#else
+            VALUE "InternalName", "shibtarget_4\0"
+#endif
+            VALUE "LegalCopyright", "Copyright © 2004 UCAID\0"
+            VALUE "LegalTrademarks", "\0"
+#ifdef _DEBUG
+            VALUE "OriginalFilename", "shibtarget_4D.dll\0"
+#else
+            VALUE "OriginalFilename", "shibtarget_4.dll\0"
+#endif
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "Shibboleth 1.2.1\0"
+            VALUE "ProductVersion", "1, 2, 1, 0\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 2aed8b3..1de82f4 100644 (file)
@@ -95,6 +95,10 @@ SOURCE=.\internal.h
 # End Source File
 # Begin Source File
 
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
 SOURCE=".\shib-ccache.cpp"
 # End Source File
 # Begin Source File
@@ -135,6 +139,10 @@ SOURCE=".\shib-target.h"
 # End Source File
 # Begin Source File
 
+SOURCE=".\shib-target.rc"
+# End Source File
+# Begin Source File
+
 SOURCE=".\shibrpc-clnt.c"
 # End Source File
 # Begin Source File