From owner-freebsd-net@FreeBSD.ORG Sun Apr 10 13:49:30 2011 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E504106566C; Sun, 10 Apr 2011 13:49:30 +0000 (UTC) (envelope-from to.my.trociny@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 7D0E08FC0A; Sun, 10 Apr 2011 13:49:28 +0000 (UTC) Received: by fxm11 with SMTP id 11so4103069fxm.13 for ; Sun, 10 Apr 2011 06:49:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:sender:date:message-id :user-agent:mime-version:content-type; bh=A8AbZlXErhUkR3CJ9tvM7E+ym57qh4QgtDaLuEolnF8=; b=S4yWq4ArNiM9oGr/sfRxPriiM7zqWTwburLKcY+Efaqg+yDsb6cOjMX+QNvhIYRDZ6 bugvjP8IOlvQebfHkuXgbWY7CqDoZ3wTRzZzQM6BNtvuB9ElajJRBmnfr2/c6YnkVJ81 c6B8qlLdPokHpkRLRBJTHHt6+TTW5Pg1KO8RY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:sender:date:message-id:user-agent:mime-version :content-type; b=t5HBKb38Y/BIndp+u6Ihesg4ihxbXnaucXvSNB6hLtZt+ufjMEnNCqbYEktRAKK8CB UF+osZnduGSUD3a082zWc0dqFkyXRSMoUhWZsT7UYNrdu/BZq/jbaYPTuK9l2j4JsVUj LR9aJAGb0JI1n7i/5bgxJb3vU4XevZO2talgA= Received: by 10.223.102.80 with SMTP id f16mr4336639fao.33.1302443368299; Sun, 10 Apr 2011 06:49:28 -0700 (PDT) Received: from localhost ([95.69.172.154]) by mx.google.com with ESMTPS id j18sm243766faa.42.2011.04.10.06.49.26 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 10 Apr 2011 06:49:27 -0700 (PDT) From: Mikolaj Golub To: Andrey Simonenko Sender: Mikolaj Golub Date: Sun, 10 Apr 2011 16:49:25 +0300 Message-ID: <86sjtqw716.fsf@kopusha.home.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (berkeley-unix) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: Kostik Belousov , freebsd-net@freebsd.org, Pawel Jakub Dawidek , bug-followup@FreeBSD.org Subject: Re: kern/154504: [libc] recv(2): PF_LOCAL stream connection is stuck in sbwait when recv(MSG_WAITALL) is used X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Apr 2011 13:49:30 -0000 --=-=-= Hi, Does the attached patch fix the problem for you? -- Mikolaj Golub --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=uipc_socket.c.soreceive.patch Index: sys/kern/uipc_socket.c =================================================================== --- sys/kern/uipc_socket.c (revision 220485) +++ sys/kern/uipc_socket.c (working copy) @@ -1845,10 +1845,16 @@ dontblock: } SBLASTRECORDCHK(&so->so_rcv); SBLASTMBUFCHK(&so->so_rcv); - error = sbwait(&so->so_rcv); - if (error) { - SOCKBUF_UNLOCK(&so->so_rcv); - goto release; + /* + * We could receive some data while was notifying the + * the protocol. Skip blocking in this case. + */ + if (so->so_rcv.sb_mb == NULL) { + error = sbwait(&so->so_rcv); + if (error) { + SOCKBUF_UNLOCK(&so->so_rcv); + goto release; + } } m = so->so_rcv.sb_mb; if (m != NULL) --=-=-=--