[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xinetd and nmbd



On Wed, Jun 10, 1998 at 07:11:38PM -0400, Eloy A. Paris wrote:
> Hi again Norbert,
> 
> just one question: do you know if xinetd will continue to listen at
> traffic in a service's port after it has already forked the server for
> that service and wait=no?

Hm........ it will not answer the request for that service, but it will
not release the port either.  I found this out using in.ntalkd:

Here are the results:

from master.debian.org, I run talk nveber@vtech.dyn.ml.org, in the local log
file:
Jun 11 18:40:53 vtech xinetd[22062]: START: ntalk pid=14282
from=205.229.104.5
the talk daemon runs:
nveber@vtech[~]$ ps aux | grep talk
nveber   14297  0.0  1.0   800   312  p1 R <  18:41   0:00 grep talk 
root     14282  0.0  1.5   848   464  ?  S <  18:40   0:00 in.ntalkd 

root@vtech[~]# fuser ntalk/udp
ntalk/udp:           14282 22062

process 14282 is in.ntalkd, process 22062 is xinetd, it seems they can both
have the port open in the same time (somehow).

Any subsequent talk requests are ignored by xinetd (nothing in the log file)
and are handled by in.ntalkd (untill activity on the port stops, and
in.ntalkd exits)

With inetd:
Jun 11 18:58:09 vtech in.ntalkd[14574]: connect from debian.novare.net
root@vtech[~]# fuser ntalk/udp
ntalk/udp:           14559 14574
root@vtech[~]# ps aux | grep 14559
root     14559  0.0  1.4   868   456  ?  S <  18:57   0:00 /usr/sbin/inetd 
root@vtech[~]# ps aux | grep 14574
root     14574  0.0  1.5   848   464  ?  S <  18:58   0:00 in.ntalkd 

so it behaves the same way!

> 
> Let's forget about the flags=RESUSE workaround. If this is the case
> nmbd gives this error message and exists:
> 
> bind failed on port 137 socket_addr=130.89.222.95 (Address already in
> use)

Hmm.. perhaps the problem is with the way nmbd opens the port, although this
doesnt explain why it works in inetd and not xinetd..

> 
> To me it looks like xinetd still has the socket open so nmbd can't open
> it and then it fails.

yes, that is what the error message means

> 
> xinetd.conf's man page says about the wait parameter:
> 
>        wait             This  attribute determines if the service
>                         is single-threaded or multi-threaded.  If
>                         its  value  is yes the service is single-
>                         threaded; this  means  that  xinetd  will
>                         start  the  server  and then it will stop
>                         handling requests for the  service  until
>                         the  server dies.  If the attribute value
>                         is no, the service is multi-threaded  and
>                         xinetd  will  keep  handling  new service
>                         requests.
> 
> See where it says "if wait==yes then xinetd will start the server
> and then it will stop handling requests".
> 
> The entry for nmbd in xinetd.conf should be:
> 
> service netbios-ns
> {
>         socket_type             = dgram
>         protocol                = udp
>         wait                    = yes
>         user                    = root
>         server                  = /usr/sbin/nmbd
>         server_args             = -a
> #        flags                   = REUSE
> }
> 
> See the setting for "wait" (yes).
> 
> Do you think the error that is causing nmbd to exit (address already
> in use) is because xinetd is still listening at the netbios-ns port
> after is has forked nmbd?

I dont know anything about network programming, but I would imagine that
there is more than one way to open a port.. perhaps nmbd is doing something
odd which doesnt bother inetd, but xinetd doesnt like.  The posibility that
this is an xinetd problem still exists though..

Attachment: pgp_Tdc9QD9iV.pgp
Description: PGP signature


Reply to: