Peter Schlaile [Thu, 9 Oct 2008 18:30:59 +0000 (20:30 +0200)]
added inband dtmf support to chan_lcr
Use option 's' in lcr_config or within the dial-command options,
just like in misdn.
Peter Schlaile [Sat, 27 Sep 2008 20:26:02 +0000 (22:26 +0200)]
chan_lcr: forgotten commit for new ref fix
Peter Schlaile [Sat, 27 Sep 2008 20:04:14 +0000 (22:04 +0200)]
Merge branch 'master' of ssh://schlaile@git.misdn.org/var/git/lcr
Peter Schlaile [Sat, 27 Sep 2008 20:03:44 +0000 (22:03 +0200)]
chan_lcr: fixed race condition in new ref assignment
LCR assumes, that any call in the list, that has ref set to 0 is waiting for a ref to be assigned.
That can cause trouble, if we have one call waiting for a ref to be assigned and another call
hanging in the list, that was just released in the same moment.
Both have ref == 0 and in some circumstances, the new ref message picks the wrong one for
assignment...
This patch makes chan_lcr distinguish between calls waiting for a new ref and those, that
only have their ref removed due to release. (It is not enough, to check for state, since
new calls can change into release state immediately! That is also one of the race conditions,
when this can get you into trouble: asterisk receives call1 by LCR, makes a SETUP call2 immediately
through LCR and then receives a release for call1 by LCR before call2 got it's ref assigned!)
This patch also removes some dead code, that was #ifdef'd out.
End user notice: if you ever got into the situation, that _all_ calls from asterisk to LCR got released
immediately and only a restart of asterisk got you out of the situation, then you might need
this fix :)
Andreas Eversberg [Sat, 27 Sep 2008 15:23:43 +0000 (17:23 +0200)]
updated autoconf
modified: Makefile.in
Peter Schlaile [Tue, 23 Sep 2008 19:14:15 +0000 (21:14 +0200)]
added options.c to automake, so that chan_lcr gets built correctly
Peter Schlaile [Mon, 22 Sep 2008 18:43:33 +0000 (20:43 +0200)]
Merge branch 'master' of ssh://schlaile@git.misdn.org/var/git/lcr
Peter Schlaile [Mon, 22 Sep 2008 18:35:37 +0000 (20:35 +0200)]
work around broken HOLD/UNHOLD handling on some SIP phones
Some SIP phones don't send RETRIEVE before they send TRANSFER.
So we RETRIEVE if we bridge two channels, if calls are still on hold.
Also: handle CONTROL_SRCUPDATE with a debug message in recent
versions of asterisk.
Andreas Eversberg [Sun, 21 Sep 2008 06:57:51 +0000 (08:57 +0200)]
Finished autoconf.
-> Commments are welcome.
deleted: Makefile
modified: Makefile.am
new file: Makefile.in
modified: README
new file: aclocal.m4
modified: action_vbox.cpp
modified: alawulaw.h
modified: autogen.sh
new file: config.h.in
new file: configure
modified: configure.ac
modified: default/interface.conf
modified: default/options.conf
modified: dss1.cpp
modified: dss1.h
modified: extension.c
modified: genext.c
modified: interface.c
modified: interface.h
modified: mISDN.cpp
modified: mISDN.h
modified: main.h
new file: mkinstalldirs
modified: options.c
modified: options.h
modified: port.cpp
modified: route.c
modified: todo.txt
modified: tones.c
modified: vbox.cpp
deleted: watch.c
Andreas Eversberg [Sun, 14 Sep 2008 12:37:51 +0000 (14:37 +0200)]
fixed some layer 2 link issues
modified: README
modified: apppbx.cpp
modified: lcradmin.c
modified: mISDN.cpp
modified: route.c
Andreas Eversberg [Sun, 14 Sep 2008 10:27:11 +0000 (12:27 +0200)]
Fixed trace bugs.
modified: README
modified: interface.c
modified: lcradmin.c
modified: mISDN.cpp
modified: main.c
modified: socket_server.c
modified: trace.c
modified: vbox.cpp
Andreas Eversberg [Fri, 12 Sep 2008 05:43:21 +0000 (07:43 +0200)]
Corrected error print, if mISDN_dsp.ko module cannot be loaded.
modified: README
modified: bchannel.c
modified: mISDN.cpp
modified: main.c
Andreas Eversberg [Sun, 7 Sep 2008 08:31:58 +0000 (10:31 +0200)]
Ports can now be specified by number or by name.
Names are shown in state-screen also.
modified: README
modified: default/interface.conf
modified: interface.c
modified: interface.h
modified: lcradmin.c
modified: lcrsocket.h
modified: mISDN.cpp
modified: mISDN.h
modified: main.h
modified: socket_server.c
Andreas Eversberg [Sat, 6 Sep 2008 11:59:48 +0000 (13:59 +0200)]
changed port attribute to "portnum".
modified: bchannel.c
modified: default/interface.conf
modified: interface.c
modified: mISDN.cpp
modified: route.c
Karsten Keil [Wed, 3 Sep 2008 18:57:58 +0000 (20:57 +0200)]
Fix missing argument
open with O_CREATE need 3 args.
Signed-off-by: Karsten Keil <kkeil@suse.de>
Karsten Keil [Wed, 3 Sep 2008 18:57:00 +0000 (20:57 +0200)]
Fix possible bufferoverflows
strncat(dest,src,n)
The size of dest must be at least strlen(dest)+n+1.
Signed-off-by: Karsten Keil <kkeil@suse.de>
Karsten Keil [Tue, 2 Sep 2008 00:02:11 +0000 (02:02 +0200)]
Fix lot of warnings
Karsten Keil [Mon, 1 Sep 2008 20:23:01 +0000 (22:23 +0200)]
Fix 64bit build
Andreas Eversberg [Sat, 30 Aug 2008 06:55:34 +0000 (08:55 +0200)]
Added -fPIC to fix chan_lcr shared object.
modified: Makefile
Andreas Eversberg [Sat, 30 Aug 2008 06:24:52 +0000 (08:24 +0200)]
LCR now runs as a user.
You may change the path of socket and lock files.
LCR admin socket's flags can now be altered to allow access to other users.
Lock and socket files will now be removed when terminating LCR.
modified: Makefile
modified: chan_lcr.c
modified: default/options.conf
modified: lcradmin.c
modified: lcrsocket.h
modified: main.c
modified: options.c
modified: options.h
modified: socket_server.c
Karsten Keil [Fri, 29 Aug 2008 11:13:03 +0000 (13:13 +0200)]
Fix conversion string warnings, there are lot more like these.
Peter Schlaile [Sat, 23 Aug 2008 07:56:19 +0000 (09:56 +0200)]
chan_lcr: fixed lcr_fixup (compare with chan_misdn for reference)
- oldast is totally unimportant
- we didn't unlock correctly
=> works now :)
Test case: open two lcr channels using a sip phone. Do a transfer between
them.
Peter Schlaile [Fri, 22 Aug 2008 18:09:33 +0000 (20:09 +0200)]
chan_lcr: fixed typo, that made rebuffer-mode request a parameter,
that isn't necessary... shame on me :)
Peter Schlaile [Fri, 22 Aug 2008 18:08:43 +0000 (20:08 +0200)]
chan_lcr: this fixes hanging with app_rxfax and a race condition
in lcr_read
(lcr_read was hanging in locked-state forever, when no data was
available, making any further calls impossible.
Now we return a null-packet to asterisk)
Sidenode: you have to use lcr_config(r) to receive faxes correctly.
(app_rxfax seems to rely on 160-byte buffers)
Peter Schlaile [Thu, 21 Aug 2008 06:46:28 +0000 (08:46 +0200)]
removed debug code from last commit
Peter Schlaile [Thu, 21 Aug 2008 06:45:30 +0000 (08:45 +0200)]
chan_lcr: added missing memcpy to bchannel_transmit. HDLC data was not send at all!
schlaile [Tue, 12 Aug 2008 14:16:54 +0000 (16:16 +0200)]
make LCR compile again with latest mISDNuser changes
Super User [Wed, 30 Jul 2008 17:35:28 +0000 (19:35 +0200)]
fixed audio preload of tones. this reduces the propability of audio gaps resulting in clicking noise. only if dsp clock and kernel clock shifts away, gaps will happen.
modified: mISDN.cpp
Super User [Tue, 29 Jul 2008 17:00:12 +0000 (19:00 +0200)]
make compile with gcc 4.* without warnings. (hopefully with all versions)
modified: Makefile
modified: bchannel.c
modified: chan_lcr.h
modified: extension.c
modified: gentones.c
modified: genwave.c
modified: joinpbx.cpp
modified: tones.c
Super User [Sun, 27 Jul 2008 08:35:55 +0000 (10:35 +0200)]
fixed problem with "Answer" after extension matches.
some cleanups in the makefile.
modified: Makefile
modified: chan_lcr.c
Super User [Sat, 26 Jul 2008 15:44:01 +0000 (17:44 +0200)]
updated README
modified: README
Super User [Sat, 26 Jul 2008 15:42:16 +0000 (17:42 +0200)]
now LCR features real HDLC bchannel mode.
-> if initial caller uses pure data mode (or video), the bchannels for this call are handled in HDLC mode. (hardware/software briding is still applicable.)
modified: apppbx.cpp
modified: chan_lcr.c
modified: dss1.cpp
modified: dss1.h
modified: lcradmin.c
modified: lcrsocket.h
modified: mISDN.cpp
modified: mISDN.h
modified: message.h
modified: socket_server.c
Super User [Sat, 26 Jul 2008 11:49:23 +0000 (13:49 +0200)]
many fixes on HDLC issues
many fixes on briding issues
-> briding will work with dsp and directly via chan_lcr
-> hdlc will work with dsp and directly with chan_lcr
modified: bchannel.c
modified: chan_lcr.c
modified: chan_lcr.h
Super User [Thu, 24 Jul 2008 17:40:09 +0000 (19:40 +0200)]
bearer capability fix.
modified: chan_lcr.c
Super User [Thu, 24 Jul 2008 17:19:56 +0000 (19:19 +0200)]
fixed overlap dialing problem:
-> YES, you may now overlap dial through asterisk
fixed answering call when bridging, because asterisk will not call lcr_answer when bridging.
modified: chan_lcr.c
Super User [Thu, 24 Jul 2008 16:24:20 +0000 (18:24 +0200)]
fixed trace bug
added ast_setstate after pbx_start()
modified: chan_lcr.c
modified: mISDN.cpp
modified: trace.h
schlaile [Tue, 22 Jul 2008 18:46:16 +0000 (20:46 +0200)]
made lcr_read read frames in 160 bytes packets in rebuffer mode
schlaile [Sun, 20 Jul 2008 17:33:28 +0000 (19:33 +0200)]
rebuffer option for chan_lcr (160 bytes per frame)
l1-link state "unknown" if not known yet.
removed root user check.
modified: bchannel.c
modified: bchannel.h
modified: chan_lcr.c
modified: chan_lcr.h
modified: dss1.cpp
modified: lcradmin.c
modified: mISDN.cpp
modified: main.c
Super User [Fri, 18 Jul 2008 17:26:32 +0000 (19:26 +0200)]
removed "lcr query", use "isdninfo" instead.
fixed some unlocking in chan_lcr.
fixed dead-lock issue with chan_lcr.
modified: README
modified: chan_lcr.c
modified: chan_lcr.h
modified: mISDN.cpp
modified: mISDN.h
modified: main.c
Super User [Sat, 12 Jul 2008 17:07:52 +0000 (19:07 +0200)]
ported genrc
modified: genrc.c
Super User [Tue, 8 Jul 2008 19:46:35 +0000 (21:46 +0200)]
must send "proceeding" instead of "setup_acknowledge", in case the number
in the setup-message has "sending complete" element. otherwhise it is a
protocol error.
Christian: you must also consider it in chan_mISDN.
fixed channel hunting bug. (hope so)
modified: README
modified: dss1.cpp
Super User [Thu, 3 Jul 2008 17:08:37 +0000 (19:08 +0200)]
added more display info
fixed dtmf detection bug
modified: README
modified: apppbx.cpp
modified: dss1.cpp
modified: message.h
Super User [Sat, 28 Jun 2008 08:13:20 +0000 (10:13 +0200)]
disabled overlap dialing and dtmf digit forwarding, due to bug.
modified: chan_lcr.c
schlaile [Mon, 23 Jun 2008 17:50:46 +0000 (19:50 +0200)]
don't treat it as a fatal socket error, when chan_lcr sends messages to an already released B-channel
Super User [Fri, 20 Jun 2008 06:27:26 +0000 (08:27 +0200)]
minor fixes
modified: mISDN.h
modified: route.c
Super User [Wed, 18 Jun 2008 06:50:46 +0000 (08:50 +0200)]
fixed call-ref-bug that caused b-channels to fail after 256 call instances.
modified: mISDN.h
Super User [Tue, 17 Jun 2008 19:13:22 +0000 (21:13 +0200)]
no functional change:
renamed 'handle' to 'sock' in some functions, because it is not the channel's handle, it's the socket
modified: bchannel.c
modified: chan_lcr.c
Super User [Tue, 17 Jun 2008 10:41:10 +0000 (12:41 +0200)]
fixed socket handling
modified: bchannel.c
Super User [Mon, 16 Jun 2008 20:13:39 +0000 (22:13 +0200)]
fixed bchannel create
modified: chan_lcr.c
Super User [Sun, 15 Jun 2008 15:22:25 +0000 (17:22 +0200)]
work, overlap dialing to chan_lcr doesn't work, so do en-bloc dialing until it is fixed.
modified: chan_lcr.c
Super User [Sun, 15 Jun 2008 12:38:35 +0000 (14:38 +0200)]
layer 2 establish and release improvements
modified: mISDN.cpp
Super User [Sun, 15 Jun 2008 12:29:09 +0000 (14:29 +0200)]
fixed dialing bug to remote application
modified: action.cpp
modified: apppbx.cpp
modified: chan_lcr.c
modified: mISDN.cpp
schlaile [Sat, 14 Jun 2008 18:51:34 +0000 (20:51 +0200)]
chan_lcr: in lcr_in_information: information.id already contains the
completely assembled extension, so strncpy is more appropriate :)
schlaile [Sat, 14 Jun 2008 18:21:14 +0000 (20:21 +0200)]
made callerid handling work in call from asterisk
(Asterisk 1.4.18 at least changes cid records between call and setup ...)
fixed Makefile (emacs kept complaining :) )
Super User [Sat, 14 Jun 2008 06:34:50 +0000 (08:34 +0200)]
changed long to int (64 bit system's compatibilty)
Super User [Sat, 7 Jun 2008 18:32:12 +0000 (20:32 +0200)]
fixed dialing-bug when dialing chan_lcr
modified: action.cpp
modified: apppbx.h
modified: configure.ac
Super User [Sat, 7 Jun 2008 10:00:54 +0000 (12:00 +0200)]
work
Super User [Sat, 7 Jun 2008 09:49:28 +0000 (11:49 +0200)]
*** CHAN_LCR is complete! ***
(not every detail tested yet)
modified: bchannel.c
modified: bchannel.h
modified: chan_lcr.c
modified: chan_lcr.h
modified: mISDN.cpp
Super User [Fri, 6 Jun 2008 17:15:14 +0000 (19:15 +0200)]
free bchannels on broken pipe of remote application
work
modified: chan_lcr.c
modified: mISDN.cpp
modified: mISDN.h
modified: socket_server.c
Christian Richter [Fri, 6 Jun 2008 13:33:49 +0000 (15:33 +0200)]
added Moh for HOLD/UNHOLD and app_lcr_config
Super User [Fri, 6 Jun 2008 13:18:59 +0000 (15:18 +0200)]
work on chan_lcr: bridging works, interface selection possible
modified: Makefile
modified: apppbx.cpp
modified: apppbx.h
modified: bchannel.c
modified: bchannel.h
modified: chan_lcr.c
modified: chan_lcr.h
modified: dss1.cpp
modified: genext.c
modified: joinremote.cpp
modified: joinremote.h
modified: mISDN.cpp
modified: mISDN.h
modified: macro.h
modified: main.c
modified: message.h
modified: options.c
modified: options.h
modified: socket_server.c
Super User [Wed, 4 Jun 2008 16:09:43 +0000 (18:09 +0200)]
fixed bad bug in opening bchannel
modified: Makefile
modified: bchannel.c
Super User [Mon, 2 Jun 2008 16:13:45 +0000 (18:13 +0200)]
call instance is created when lcr_call is called, no we can be sure that ast thread is running.
modified: chan_lcr.c
Super User [Sun, 1 Jun 2008 16:52:10 +0000 (18:52 +0200)]
LCR is now uses socket based mISDN V2 API
*** chan_lcr, the Asterisk interface works (not complete yet).
-> LCR can be used as Asterisk channel driver.
modified: Makefile
modified: Makefile.am
modified: README
modified: action.cpp
modified: apppbx.cpp
modified: bchannel.c
modified: bchannel.h
modified: callerid.c
modified: cause.c
modified: chan_lcr.c
modified: chan_lcr.h
modified: configure.ac
modified: default/routing.conf
modified: dss1.cpp
modified: dss1.h
modified: genrc.c
modified: ie.cpp
modified: interface.c
modified: lcradmin.c
modified: mISDN.cpp
modified: mISDN.h
modified: main.c
modified: main.h
modified: message.h
modified: myisdn.h
modified: route.c
modified: socket_server.c
modified: trace.h
Super User [Tue, 27 May 2008 07:56:35 +0000 (09:56 +0200)]
work
modified: bchannel.c
Super User [Sun, 25 May 2008 14:12:20 +0000 (16:12 +0200)]
fix and work
modified: Makefile
modified: action.cpp
modified: bchannel.c
modified: chan_lcr.c
modified: extension.h
modified: joinpbx.cpp
modified: mISDN.cpp
modified: message.h
Super User [Tue, 20 May 2008 05:00:59 +0000 (07:00 +0200)]
work
modified: Makefile
Super User [Mon, 19 May 2008 20:07:40 +0000 (22:07 +0200)]
work
Super User [Mon, 19 May 2008 17:47:05 +0000 (19:47 +0200)]
work
modified: chan_lcr.c
Super User [Mon, 19 May 2008 17:39:39 +0000 (19:39 +0200)]
work on chan_lcr
Super User [Sun, 18 May 2008 17:04:35 +0000 (19:04 +0200)]
lcr work (soon done :)
modified: Makefile
modified: bchannel.c
modified: chan_lcr.c
modified: chan_lcr.h
modified: dss1.cpp
modified: todo.txt
Super User [Sun, 18 May 2008 07:23:10 +0000 (09:23 +0200)]
work on chan_lcr
modified: action.cpp
modified: apppbx.cpp
modified: bchannel.c
modified: chan_lcr.c
modified: mISDN.cpp
modified: message.h
modified: route.c
modified: route.h
Super User [Mon, 12 May 2008 16:35:48 +0000 (18:35 +0200)]
some minor fixes
modified: dss1.cpp
modified: joinpbx.cpp
modified: mISDN.cpp
modified: port.cpp
modified: tones_american/joined.isdn
modified: tones_american/left.isdn
Super User [Mon, 12 May 2008 11:12:28 +0000 (13:12 +0200)]
nt-mode multiplexing debugged
-> tested in all variations (connect/reject before/after T312)
modified: dss1.cpp
Super User [Mon, 12 May 2008 09:39:44 +0000 (11:39 +0200)]
fixed multiplexing bug
DL reports tei
modified: dss1.cpp
modified: mISDN.cpp
Super User [Sat, 10 May 2008 19:40:23 +0000 (21:40 +0200)]
fixed some bugs
modified: dss1.cpp
modified: mISDN.cpp
Super User [Fri, 9 May 2008 19:31:58 +0000 (21:31 +0200)]
fixed so, PRI/BRI NT/TE works
modified: default/interface.conf
modified: dss1.cpp
modified: mISDN.cpp
modified: trace.c
modified: trace.h
Super User [Fri, 2 May 2008 19:40:31 +0000 (21:40 +0200)]
mISDN-socket port opens
modified: mISDN.cpp
modified: main.c
Super User [Fri, 2 May 2008 19:19:06 +0000 (21:19 +0200)]
SOCKET BRANCH:
los,ais,rdi,slip
query works!
opening socket almost works :)
Super User [Thu, 1 May 2008 18:07:02 +0000 (20:07 +0200)]
chan_lcr work
modified: bchannel.c
modified: bchannel.h
modified: chan_lcr.c
modified: chan_lcr.h
Super User [Thu, 1 May 2008 09:56:14 +0000 (11:56 +0200)]
work on chan_lcr
modified: Makefile
modified: chan_lcr.c
modified: chan_lcr.h
Super User [Thu, 1 May 2008 08:35:20 +0000 (10:35 +0200)]
work on chan_lcr
modified: Makefile
modified: action.cpp
modified: action_efi.cpp
modified: action_vbox.cpp
modified: apppbx.cpp
modified: apppbx.h
modified: bchannel.c
modified: bchannel.h
new file: callerid.c
new file: callerid.h
modified: chan_lcr.c
modified: chan_lcr.h
modified: crypt.cpp
modified: endpoint.cpp
modified: endpointapp.cpp
modified: interface.c
modified: join.cpp
modified: joinpbx.cpp
modified: joinremote.cpp
modified: mISDN.cpp
modified: mail.c
modified: main.h
modified: message.h
modified: port.cpp
modified: route.c
modified: route.h
modified: socket_server.c
modified: todo.txt
modified: vbox.cpp
modified: watch.c
Super User [Tue, 29 Apr 2008 09:02:02 +0000 (11:02 +0200)]
work
modified: chan_lcr.c
Super User [Tue, 29 Apr 2008 08:00:44 +0000 (10:00 +0200)]
locking work
modified: chan_lcr.c
Super User [Tue, 29 Apr 2008 07:38:49 +0000 (09:38 +0200)]
creation and termination of thread
modified: chan_lcr.c
Super User [Tue, 29 Apr 2008 06:33:06 +0000 (08:33 +0200)]
locking
modified: chan_lcr.c
Super User [Mon, 28 Apr 2008 17:34:33 +0000 (19:34 +0200)]
Merge branch 'master' of ssh://jolly@mISDN.org/var/git/lcr
Conflicts:
chan_lcr.c
Super User [Mon, 28 Apr 2008 17:29:06 +0000 (19:29 +0200)]
work on chan_lcr:
call instance and asterisk channel instance creation and destruction process
please read the comments on the top of chan_lcr.
modified: apppbx.cpp
modified: chan_lcr.c
modified: chan_lcr.h
modified: message.h
root [Sat, 26 Apr 2008 10:25:01 +0000 (12:25 +0200)]
chan_lcr has now a lcr_request function which should work basically, we only need the callref request mechanism here. We have also a lcr_ast_new function which produces an empty Asterisk channel object. The Call handler has now a pointer to the asterisk channel, the asterisk channel also holds a pointer to the Call handle, so they need to be created and destroyed together at the same time.
Super User [Sat, 26 Apr 2008 08:37:47 +0000 (10:37 +0200)]
modified: Makefile
Super User [Sat, 26 Apr 2008 08:37:31 +0000 (10:37 +0200)]
modified: Makefile
modified: chan_lcr.c
Super User [Sat, 26 Apr 2008 08:34:29 +0000 (10:34 +0200)]
Merge branch 'master' of ssh://jolly@mISDN.org/var/git/lcr
Conflicts:
chan_lcr.c
root [Sat, 26 Apr 2008 09:18:37 +0000 (11:18 +0200)]
Merge branch 'master' of ssh://crich@git.misdn.org/var/git/lcr
root [Sat, 26 Apr 2008 09:18:27 +0000 (11:18 +0200)]
chan_lcr.c compiles now, and the Makefile generates a .so instead of an executable.
Super User [Sat, 26 Apr 2008 08:32:30 +0000 (10:32 +0200)]
modified: chan_lcr.c
modified: todo.txt
Super User [Fri, 25 Apr 2008 07:06:20 +0000 (09:06 +0200)]
struct message -> struct lcr_msg
Super User [Thu, 24 Apr 2008 17:35:55 +0000 (19:35 +0200)]
work
modified: chan_lcr.c
modified: mISDN.cpp
modified: main.c
Super User [Thu, 24 Apr 2008 17:14:09 +0000 (19:14 +0200)]
missing myisdn
modified: mISDN.cpp
new file: myisdn.h
Super User [Thu, 24 Apr 2008 07:24:04 +0000 (09:24 +0200)]
socket mISDN work
modified: Makefile
modified: apppbx.cpp
modified: default/interface.conf
modified: dss1.cpp
modified: interface.c
modified: interface.h
modified: mISDN.cpp
modified: mISDN.h
modified: main.h
modified: options.c
modified: options.h
modified: route.c
Super User [Mon, 14 Apr 2008 05:45:07 +0000 (07:45 +0200)]
socket work
modified: Makefile
modified: ie.cpp
modified: mISDN.cpp
modified: socket_server.c