More granular define selections within code to allow for smaller code
sizes
diff --git a/library/ssl_cache.c b/library/ssl_cache.c
index f5686be..93d5d8b 100644
--- a/library/ssl_cache.c
+++ b/library/ssl_cache.c
@@ -72,6 +72,7 @@
 
         memcpy( session->master, entry->session.master, 48 );
 
+#if defined(POLARSSL_X509_PARSE_C)
         /*
          * Restore peer certificate (without rest of the original chain)
          */
@@ -90,6 +91,7 @@
                 return( 1 );
             }
         }
+#endif /* POLARSSL_X509_PARSE_C */
 
         return( 0 );
     }
@@ -140,11 +142,13 @@
         {
             cur = old;
             memset( &cur->session, 0, sizeof(ssl_session) );
+#if defined(POLARSSL_X509_PARSE_C)
             if( cur->peer_cert.p != NULL )
             {
                 free( cur->peer_cert.p );
                 memset( &cur->peer_cert, 0, sizeof(x509_buf) );
             }
+#endif /* POLARSSL_X509_PARSE_C */
         }
         else
         {
@@ -164,7 +168,8 @@
     }
 
     memcpy( &cur->session, session, sizeof( ssl_session ) );
-    
+
+#if defined(POLARSSL_X509_PARSE_C)
     /*
      * Store peer certificate
      */
@@ -180,6 +185,7 @@
 
         cur->session.peer_cert = NULL;
     }
+#endif /* POLARSSL_X509_PARSE_C */
 
     return( 0 );
 }
@@ -211,8 +217,10 @@
 
         ssl_session_free( &prv->session );
 
+#if defined(POLARSSL_X509_PARSE_C)
         if( prv->peer_cert.p != NULL )
             free( prv->peer_cert.p );
+#endif /* POLARSSL_X509_PARSE_C */
 
         free( prv );
     }