Giter Club home page Giter Club 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

Contributors

olivierlevon avatar

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.