Hi !

In http://archives.mandrakelinux.com/cooker/2003-01/msg00073.php I have 
reported a strange problem. I have finally found out what causes the problem. 

Other then I have written there this bug is triggered too with channelbundling 
and some providers. 

Ok. Whats causing the problem:

/dev/isdninfo only produces output if the output can be wriiten all at once. 
If the buffer for reading is to small nothing is written. A lot of 
applications are using a buffer of 1024 bytes (I guess standard with fopen() 
calls). 
Mandrake Kernel defines in isdn.h a maximum of 32 devices and so 64 channels. 
This leads very fast to exceed this 1024 byte limit as the output of 
/dev/isdninfois dependent on the ISDNMAXCHAN set in isdn.h . An strace shows 
that only the difference of HiSax vs. capidrv-1 leads to exceed the limit the 
current setup. 
-----------------------------------------------------------
write(1, "idmap:\tcapidrv-1 capidrv-1 - - -"..., 1024idmap:     capidrv-1 
capidrv-1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
chmap:  0 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
drmap:  0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
usage:  131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
flags:  1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
phone:  0191011 ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? 
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? 
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? 
??? ??? ??? ??? ??? ??? ??? ??? ??? ???) = 1024    <=====
write(1, " \n", 2
)                      = 2   <========
------------------------------------------------

So the output is to big by 2 bytes . 

The question now is how to fix this problem. Calling the apps buggy  :D ;) ? 
An fast and easy solution would be to set in 
/usr/src/linux/include/linux/isdn.h: 

#define ISDN_MAX_DRIVERS    32
#define ISDN_MAX_CHANNELS   64

to 

#define ISDN_MAX_DRIVERS    16
#define ISDN_MAX_CHANNELS   32

I don't think someone using mandrake will have more then 32 lines. At least if 
there is an update kernel in the queue for  9.1 this would be a solution. 
Thanks to Tin Baskovic this is proved to solve the problem. 

Should this be filed as a bug against the kernel or against the applications ?

Suggestions anyone ? 

Greets

Steffen

Reply via email to