Giter VIP home page Giter VIP logo

bonjour's Introduction

Bonjour logo

Windows Build status Posix Build Status Join the chat at https://gitter.im/Bonjour-community/Bonjour

About this repository

This is not another repository to track the source changes made by Apple (For that, look at https://github.com/dc7kr/mDNSResponder or https://github.com/obiltschnig/mDNSResponder, or build your own with this Ruby script : https://gist.github.com/stepheneb/470947) or a mirror of the last officially available SVN repository from Apple (Lookt at https://github.com/Sha0/mDNSResponder/commits/master).

This repository will host my fork of Apple mDNSResponder code (currently 878.30.4 from https://opensource.apple.com/tarballs/mDNSResponder/) for my own use, trying to improve almost unmaintained support for Windows and Posix platforms. Plateform code for MacOS or VxWorks have been removed.

This document last updated 2019-06-23.

bonjour's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bonjour's Issues

Blocking mDNSResponder / Error in set_waitlimit

Hi,
I have seen situations where my mDNSResponder (765.50.9) seems to be busy (blocking one core) and not responding to a
DNSServiceGetProperty(kDNSServiceProperty_DaemonVersion, &uiDaemonVersion, &size);
call.
The high CPU and the blocking of the daemon stopped when I attached the debugger - so this is still a mystery.

But for the first step I wondered why the call is blocked on the client side.
While examining the blocking a stumbled across the following function

static int set_waitlimit(dnssd_sock_t sock, int timeout)
{
    int gDaemonErr = kDNSServiceErr_NoError;

    // To prevent stack corruption since select does not work with timeout if fds > FD_SETSIZE(1024)
    if (!gDaemonErr && sock < FD_SETSIZE)
    {
        struct timeval tv;
        fd_set set;

        FD_ZERO(&set);
        FD_SET(sock, &set);
        tv.tv_sec = timeout;
        tv.tv_usec = 0;

IMHO the conditon
sock < FD_SETSIZE
is wrong, as my sockets are larger that FD_SETSIZE (==64) and this limit only describes the number of socket in the fd_set, not the socket handle itself.

Any opinion to this?
Thanks
Tobias

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.