Ticket #5719: socket_ops.ipp.patch

File socket_ops.ipp.patch, 1.9 KB (added by olim@…, 11 years ago)
  • \boost\asio\detail\impl\socket_ops.ipp

    old new  
    2323#include <cstring>
    2424#include <cerrno>
    2525#include <new>
    2626#include <boost/asio/detail/socket_ops.hpp>
    2727#include <boost/asio/error.hpp>
    2828
     29#include <boost/asio/detail/mutex.hpp>
    2930#include <boost/asio/detail/push_options.hpp>
    3031
    3132namespace boost {
    3233namespace asio {
    3334namespace detail {
    3435namespace socket_ops {
     
    27712772#else
    27722773      sprintf(serv, "%u", ntohs(port));
    27732774#endif
    27742775    }
    27752776    else
    27762777    {
    2777 #if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) \
    2778       && !defined(BOOST_ASIO_DISABLE_THREADS)
    2779       static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    2780       ::pthread_mutex_lock(&mutex);
    2781 #endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
    2782        //   && !defined(BOOST_ASIO_DISABLE_THREADS)
     2778#if !defined(BOOST_WINDOWS)
     2779      static boost::asio::detail::mutex mutex;
     2780      boost::asio::detail::mutex::scoped_lock lock(mutex);
     2781#endif // !defined(BOOST_WINDOWS)
    27832782      servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0);
    27842783      if (sptr && sptr->s_name && sptr->s_name[0] != '\0')
    27852784      {
    27862785        gai_strcpy(serv, sptr->s_name, servlen);
    27872786      }
    27882787      else
     
    27942793#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE)
    27952794        sprintf_s(serv, servlen, "%u", ntohs(port));
    27962795#else
    27972796        sprintf(serv, "%u", ntohs(port));
    27982797#endif
    27992798      }
    2800 #if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) \
    2801       && !defined(BOOST_ASIO_DISABLE_THREADS)
    2802       ::pthread_mutex_unlock(&mutex);
    2803 #endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
    2804        //   && !defined(BOOST_ASIO_DISABLE_THREADS)
    28052799    }
    28062800  }
    28072801
    28082802  ec = boost::system::error_code();
    28092803  return ec;
    28102804}