@@ -1684,13 +1684,28 @@ static int wolfsentry_setup(
16841684 {
16851685 struct wolfsentry_route_table * table ;
16861686
1687+ #ifdef WOLFSENTRY_THREADSAFE
1688+ ret = WOLFSENTRY_SHARED_EX (* _wolfsentry );
1689+ if (ret < 0 ) {
1690+ fprintf (stderr , "wolfsentry shared lock op failed: "
1691+ WOLFSENTRY_ERROR_FMT ".\n" ,
1692+ WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1693+ return ret ;
1694+ }
1695+ #endif
1696+
16871697 if ((ret = wolfsentry_route_get_main_table (
16881698 WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry ),
16891699 & table )) < 0 )
16901700 {
16911701 fprintf (stderr , "wolfsentry_route_get_main_table() returned "
16921702 WOLFSENTRY_ERROR_FMT "\n" ,
16931703 WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1704+ #ifdef WOLFSENTRY_THREADSAFE
1705+ WOLFSENTRY_WARN_ON_FAILURE (
1706+ wolfsentry_context_unlock (
1707+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1708+ #endif
16941709 return ret ;
16951710 }
16961711
@@ -1708,6 +1723,11 @@ static int wolfsentry_setup(
17081723 "wolfsentry_route_table_default_policy_set() returned "
17091724 WOLFSENTRY_ERROR_FMT "\n" ,
17101725 WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1726+ #ifdef WOLFSENTRY_THREADSAFE
1727+ WOLFSENTRY_WARN_ON_FAILURE (
1728+ wolfsentry_context_unlock (
1729+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1730+ #endif
17111731 return ret ;
17121732 }
17131733
@@ -1742,6 +1762,11 @@ static int wolfsentry_setup(
17421762 fprintf (stderr , "wolfsentry_route_insert() returned "
17431763 WOLFSENTRY_ERROR_FMT "\n" ,
17441764 WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1765+ #ifdef WOLFSENTRY_THREADSAFE
1766+ WOLFSENTRY_WARN_ON_FAILURE (
1767+ wolfsentry_context_unlock (
1768+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1769+ #endif
17451770 return ret ;
17461771 }
17471772 } else if (WOLFSENTRY_MASKIN_BITS (route_flags , WOLFSENTRY_ROUTE_FLAG_DIRECTION_IN )) {
@@ -1757,6 +1782,11 @@ static int wolfsentry_setup(
17571782 "wolfsentry_route_table_default_policy_set() returned "
17581783 WOLFSENTRY_ERROR_FMT "\n" ,
17591784 WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1785+ #ifdef WOLFSENTRY_THREADSAFE
1786+ WOLFSENTRY_WARN_ON_FAILURE (
1787+ wolfsentry_context_unlock (
1788+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1789+ #endif
17601790 return ret ;
17611791 }
17621792
@@ -1791,9 +1821,19 @@ static int wolfsentry_setup(
17911821 fprintf (stderr , "wolfsentry_route_insert() returned "
17921822 WOLFSENTRY_ERROR_FMT "\n" ,
17931823 WOLFSENTRY_ERROR_FMT_ARGS (ret ));
1824+ #ifdef WOLFSENTRY_THREADSAFE
1825+ WOLFSENTRY_WARN_ON_FAILURE (
1826+ wolfsentry_context_unlock (
1827+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1828+ #endif
17941829 return ret ;
17951830 }
17961831 }
1832+ #ifdef WOLFSENTRY_THREADSAFE
1833+ WOLFSENTRY_WARN_ON_FAILURE (
1834+ wolfsentry_context_unlock (
1835+ WOLFSENTRY_CONTEXT_ARGS_OUT_EX (* _wolfsentry )));
1836+ #endif
17971837 }
17981838
17991839#if defined(WOLFSENTRY_THREADSAFE ) && defined(HAVE_WOLFSENTRY_API_0v8 )
0 commit comments