

-------------------------------------------------------------------------------


General                 Project SMSLink - Changelog
Introduction
Documentation
Platforms               smslink-0.56b-3 (October 2nd, 2006)
Supported_Hardware
Package_Content         SERVER:

                        * Fixed multiple send of DB queued messages by limiting
Installation              the number of concurrent OBC child processes to 1
Download                  (instead of 'ngsmdevs'). Since the queue items are
Server_Install            not locked during processing, the same item could be
Client_Install            selected by more than one child process. Bug reported
Gateway_Install           by Tony S. Sykes. The current fix is not optimal. I
Upgrade                   should implement a proper locking mechanism, and
                          return to multiple concurrent OBC child processes to
                          maximize throughput.
Tech Info               * Memory corruption fix (string overflow through
Changelog                 unchecked strcpy() in db_outbox_check()) in the
FAQ                       processing of messages queued in the 'outbox' DB
Drivers                   table (reported by Gabriele Zappi). Added a few
PDU_format                missing terminating NULLs in other calls to strncpy
Bugs_/_Todo               ().
Related_Links           * Improved the output of the 'qstat' command by
                          requesting the 'stored' column in formatted form (in
                          db_list_queue()).
_Jump_to_Vim_Home_Page_ * Integrated a fix contributed by Peter_Forgac that
                          restores compatibility with FreeBSD 6 (sigignore()
                          replaced with signal(...,SIG_IGN) in ./server/
                          mbchecker.c). Also added a comment in the server
                          Makefile to use the FREEBSD platform when compiling
                          on FreeBSD 6.1 instead of FREEBSD5.
                        * Integrated changes contributed by Tony_S._Sykes. They
                          add proper support for MySQL v5.0. Bumped database
                          schema version from 4 to 5. Also created a small SQL
                          script to automate the migration of an existing
                          installation to schema version 5. Placed it in a new
                          ./varia/database directory. Moved the database
                          creation script (database.sql) there as well.
                        * Added support for the Ericsson F251m GSM modem (in ./
                          server/gsmcaps). Contributed by Miguel_Armas.
                        * Cosmetic update to fatal() function (./server/
                          stuff.c).

                        SMS2MAILGW:

                        * Bumped sms2mailgw version to 0.20b.
                        * Plugged a memory leak in mailbox_run() (./server/
                          gw_stuff.c). The variable called "iboxentry" got
                          allocated but never freed. Also added a free() call
                          for two variables in sms2mailgw.c, but those are
                          mostly cosmetic, since that code is never reached.

                        -------------------------------------------------------

                        smslink-0.56b-2 (April 6th, 2006)

                        SERVER:

                        * Added PID file generation and removal code to the
                          server module, in order to ease integration with
                          System V init scripts as used under SuSE linux (among
                          others). PID file name would be /var/run/sms_serv.pid
                          by default, but can be set through a new command line
                          option (-i). The new option is compatible with the -
                          f option. Man pages and online help adapted
                          accordingly. Cosmetics.
                        * Solved a bug in dumptodb() (in ./server/mbchecker.c),
                          where 'cursor' could have been used uninitialised in
                          the case of a MySQL connection failure (bug spotted
                          by Tarmo Kuuse).
                        * Fixed the bug that caused a segfault in resolve() (./
                          server/smtp.c) on the x86_64 platform when called
                          with a hostname in debug mode.
                        * Fixed a major bug (missing {}'s around an 'if' block)
                          and improved error checking in resolve() (./server/
                          smtp.c) + some code readability improvements.
                        * Solved a silly bug in db_outboxcheck() and
                          file_outboxcheck() (./server/mbchecker.c), where
                          'gsm' was used before being initialized. It caused a
                          segfault in backend_send_sms().
                        * Added more debugging to the OBC list handling. In
                          case of OBC cancellation, it will now output a syslog
                          entry similar to the following:

                            Mar  9 17:21:57 kermit sms_serv[6223]: OUTBOX check
                            cancelled, <1> child procs already.
                            Mar  9 17:21:57 kermit sms_serv[6223]: OBC list:
                            Child #0: <6274>

                        * Added the "skip" flag (requested by Maximo Cuadros),
                          and adapted the gsmdevices(5) man page and template
                          file accordingly. When specified, this flag requests
                          that the device be skipped during inbox runs.
                        * A fix provided by Marty_Lee solves a bug where the
                          "prog" spawned child would kill its parent
                          "mbchecker" process through SIGCHLD when terminating.
                        * I followed Marty_Lee's suggestion and improved the
                          INSERT query in dumptodb() in (./server/mbchecker.c).
                        * Fixed a compilation problem on FreeBSD 5 in ./server/
                          smtp.c (thanks to Piet_Ruyssinck for alerting me to
                          the problem and providing the bugfix).
                        * Added preliminary support to the server makefile for
                          interfacing sms_serv(1) with my new modem emulator
                          ostrich(1) (through the hacked libmodem called
                          "libmodememu" -- this work hasn't been released yet).
                        * Increased (again) the value of PINLEN (now from 5 to
                          8). "Fluff" reported a problem due to the fact that
                          his SIM card used a six-digit PIN code. I'm now
                          adding an extra 2 -- hope this will be enough for a
                          while.
                        * Corrected a string sizing bug in translatemodname()
                          (in ./server/gsmdevices.c).
                        * Replaced the dump_string() debugging function in ./
                          server/stuff.c with a vastly improved version. It now
                          behaves as expected for any self-respecting hexdump
                          (3 columns display: offset, hex codes, ascii
                          equivalent). Adapted the Makefile accordingly.

                        SMS2MAILGW:

                        * Added PID file generation and removal code to the
                          server module, in order to ease integration with
                          System V init scripts as used under SuSE linux (among
                          others). PID file name would be /var/run/
                          sms2mailgw.pid by default, but can be set through a
                          new command line option (-i). Man pages and online
                          help adapted accordingly. Cosmetics.
                        * Solved the "can't move new inbox file - system()
                          failed" crash (reported by Mark Pollock, Steven
                          Delport and Johan Kotze) by removing the 'ignore' on
                          SIGCHLD (in ./server/sms2mailgw.c). This prevented
                          proper execution of the system() call on systems with
                          more recent versions of glibc (and was unnecessary
                          anyway).
                        * Improved error checking in mailbox_run() (./server/
                          gw_stuff.c).
                        * Fixed a bug in mailbox_run() (./server/gw_stuff.c)
                          that would lose the first line(s) of a multiline,
                          non-mail inbox entry if it came after mail entries.
                          Cosmetics.
                        * Fixed the bug that caused a segfault in resolve() (./
                          server/smtp.c) on the x86_64 platform when called
                          with a hostname in debug mode.
                        * Fixed a major bug (missing {}'s around an 'if' block)
                          and improved error checking in resolve() (./server/
                          smtp.c) + some code readability improvements.
                        * Improved on-line help message in ./server/
                          sms2mailgw.c.
                        * Fixed a compilation problem on FreeBSD 5 in ./server/
                          smtp.c (thanks to Piet_Ruyssinck for alerting me to
                          the problem and providing the bugfix).
                        * Replaced the dump_string() debugging function in ./
                          server/stuff.c with a vastly improved version (see
                          server section for more details). Adds -lm to the
                          gateway build.

                        CLIENT:

                        * Improved error reporting in the client (sendsms).

                        MISC.:

                        * Added sample System V init scripts for SuSE in the
                          new directory ./varia/scripts/SuSE.
                        * Added the mail to sms forwarding trick contributed by
                          Steven Delport (in a new directory ./contrib/
                          mail2sms).
                        * Fixed an ugly oversight in ./varia/database.sql (the
                          DB creation script hadn't been updated to take all
                          changes specific to schema ver. 4 into account).
                          Thanks a lot to Marty_Lee for spotting that one.

                        -------------------------------------------------------

                        smslink-0.56b (June 11th, 2004)

                        SERVER:

                        * Improved the "interactive interface" command parser
                          behaviour in case of a "parse error". Once a "parse
                          error" message has been emitted, the rest of the
                          input buffer is now discarded, which avoids the need
                          to press the [return] key several times to clear the
                          buffer. This bug has been present since the first
                          released version of SMSLink. I'm really glad I
                          eventually got rid of it ;-) Beware: the solution to
                          this bug might make the lexer dependent on the GNU
                          version of lex (i.e. flex(1)).
                        * Added support in the Makefile for a "debug-enabled"
                          compilation of the lexer. Uncomment the line that
                          defines the FLDEBUG variable to enabled it.
                        * Added a "processed" column in the inbox table. This
                          column is initially filled with 'n' by the sms_serv
                          process, and is then supposed to be set to 'y' by the
                          (user-supplied) external application that will
                          further process incoming messages.
                        * Added a "purge" command to the interactive interface,
                          that removes sent messages from the outbox table and
                          / or processed messages from the inbox table. This
                          command is available only when the "db" backend is
                          enabled. Purging processed messages from the outbox
                          will only be possible provided the (user-supplied)
                          external application that will further process
                          incoming messages actually sets the "processed"
                          column appropriately.
                        * Added support for a prioritisation of queued items.
                          Priorities by default range from 1 (highest) to 5
                          (lowest). Default priority is 3. The user is now able
                          to select his/her message priority at submission
                          time. Messages are listed and processed ordered by
                          priority. This feature is most usefull in conjunction
                          with the limit on messages processed per queue run
                          ('-l' option). Added the "set prio", "show prio" and
                          "clear prio" commands to the interactive interface.
                          Adapted "qstat" output and on-line help accordingly.
                          This feature had been requested by Andrew
                          Goldschmidt. This feature required adding a new
                          "priority" column to the outbox table. It works with
                          both the "db" backend and the "file" backend
                          (although only the "db" backend currently garantees
                          FIFO ordering of the messages within any given
                          priority).
                        * Fixed a silly bug in dequalify(), affecting the
                          determination of the DNS domain the server is working
                          for.
                        * Implemented a child process monitoring system, to
                          avoid starting a second outbox check while the
                          previous one is still running (typically seen with a
                          tight '-o' loop and no '-l' option set). There is
                          still room for improvement here, since the current
                          technique doesn't make proper use of multiple GSM
                          devices in parallel when available (more precisely,
                          multiple child processes could be started in this
                          case, but they might all process the same messages,
                          meaning multiple send).
                        * Added '-X' command-line option, to allow setting the
                          name of the external program / script that should be
                          called during inbox runs when the "prog" flag is set
                          without needing to recompile the server.
                        * Added support for Nokia 30 Connectivity Terminal and
                          for Motorola A008 / 6288 (contributed by Nicki_de
                          Wet).
                        * Corrected the set of defines for TPDU header fields
                          in ./server/pdu.h. In previous versions, I
                          misunderstood the ETSI specs and completely mixed-up
                          headers from different PDU types (mainly SMS-SUBMIT
                          and SMS-DELIVER). Those types are now properly
                          identified, and all matching header fields are
                          provided. Adapted usage in ./server/pdu.c
                          accordingly. This change is purely cosmetic for now -
                          - the actual values, once compiled, don't change.
                        * Added '\t' to the list of characters that would be
                          edited out by the trim() function (in ./server/
                          stuff.c). Affects the processing of some parameters
                          by the interactive interface parser and the handling
                          of incoming messages.
                        * Improved debugging info.
                        * Adapted the man pages accordingly.

                        SMS2MAILGW:

                        * Fixed a silly bug in dequalify(), affecting the
                          determination of the DNS domain the server is working
                          for.
                        * Improved debugging info.

                        CLIENT:

                        * Improved the error reporting in the client, in the
                          case where the client requests server-side queueing
                          of the message and the server doesn't support that
                          feature. The client used to report a plain "sending
                          failed". It will now report the real cause ("queueing
                          disabled") and return with exit code 105.
                        * Added support for the queued item priority feature to
                          the client ('-e' option).
                        * Re-arranged client on-line help output ('-h' option).
                        * Adapted the man pages accordingly.

                        -------------------------------------------------------

                        smslink-0.55b-2 (October 10th, 2003)

                        SERVER:

                        * In ./server/dbaccess.c and ./server/mbchecker.c,
                          corrected a bug where the "outbox.stored" database
                          column would get reset to NOW() on update. Thanks to
                          Andrew_Goldschmidt for pointing it out.
                        * Fixed a compilation error on FreeBSD 4.8 due to some
                          missing includes. Thanks to Nicki_de_Wet for the
                          patch.

                        -------------------------------------------------------

                        smslink-0.55b (August 8th, 2003)

                        SERVER:

                        * Outbound messages queueing support. Queued messages
                          are processed by an "outbox check" child process,
                          started at (admin-settable) interval by the server.
                          Contributed by Ing._Andrea_Vettori.
                        * Two different queueing method are provided: through
                          the use of files or in a back-end database. The
                          implementation design is modular, so adding new
                          queueing methods in the future should be easy.
                        * New commands have been added to the server that take
                          advantage of this queueing feature: in addition to
                          the usual send, you can now also use the new queue
                          and post. queue will simply store the message in the
                          outbound queue for later delivery, while post will
                          attempt a single immediate "send". If this fails, the
                          message is queued for later delivery.
                        * The queueing mechanism now supports queued items
                          obsolescence. The administrator can set a maximum
                          number of times each queue item will undergo an
                          attempted send. When all allowed attempts have
                          failed, the item will be removed from the queue
                          (files are removed, database entries are just flagged
                          "failed"), and an email message is sent to the
                          administrator ("postmaster" by default).
                        * Two new commands in the interactive interface allow
                          for the outbound queue to be managed. Those are qstat
                          (lists queue entries, their IDs and queue run count)
                          and qdel (removes an entry from the queue).
                        * The server module now features support for a MySQL
                          back-end database. This support is related to, but
                          independant of the queueing support. A new db option
                          can be included in the /etc/gsmdevices file to
                          indicate that incoming messages should be stored in
                          the DB (you can use any combination of inbox, prog
                          and db options). If the outbox check feature is
                          enabled (-o server command-line option) and DB access
                          is enabled (valid MySQl credentials), then the DB
                          will be polled for outgoing messages (irrespective of
                          whether or not queueing is enabled -- based on the
                          principle that the database instance can be managed
                          entirely outside of SMSLink). Contributed by Ing.
                          Andrea_Vettori.
                        * Warning: For those of you already using an earlier
                          pre-release version of sms_serv 0.55b, please note
                          that the table layout of the database has slightly
                          changed since then. Please refer to the provided
                          database creation script (./varia/database.sql) for
                          details on the new layout.
                        * The smsstore database now features a new schema table
                          that will hold a schema version number. This schema
                          version will be checked at server startup to make
                          sure the database layout is in-line with the server
                          expectations.
                        * DB instances can be setup on the same host where the
                          SMSLink server runs, or anywhere on the network.
                        * A new mode has been added: init. In your /etc/
                          gsmdevices file, use either poll, dd or init. The
                          purpose of init is to fully initialize the specified
                          GSM module at server startup (the server will feed it
                          all "configuration" AT+ commands). Then, during
                          message processing (incoming or outgoing), only those
                          commands will be issued that may vary for each user
                          request. This speeds up the message delivery
                          considerably, of course, but at the cost of some
                          robustness: when using init mode, the server won't be
                          able to recover from a power-cycle on the GSM device.
                          Contributed by Ing._Andrea_Vettori.
                        * More command-line options. Most features that used to
                          be set at compile-time through #define can now be set
                          at runtime through command-line options. Have a look
                          at sms_serv(1) or type sms_serv -h for more details.
                        * Implemented the stats command in the interactive
                          interface. Reports on the number of messages sent and
                          received and the amount of failed attempts since the
                          server is up. And all this per attached device, of
                          course.
                        * Added a long option to the devicelist command in the
                          interactive interface. Displays the full information
                          for each device, including the driver name and all
                          counters.
                        * In earlier pre-releases of sms_serv, dl l used to
                          also display the PIN and PUK code. I'm now hiding
                          this for security reasons, and will re-enable it when
                          an admin enable mode will have been implemented.
                        * File suffix and port number command-line options
                          support. This allows you to run multiple instances of
                          the server on the same host. Contributed by Ing.
                          Andrea_Vettori.
                        * Preliminary support for the default GSM alphabet (on
                          the GSM side) and various ISO charsets on the server
                          side. This should allow for correct processing of
                          non-ASCII7 foreign characters (such as found in
                          french, german, etc.). Works both for sending and
                          receiving (beware: this feature is meaningfull in PDU
                          mode only). Currently only supports ISO-8859-1 and
                          ISO-8859-15, but it's easy to add more charsets.
                        * Warning: Changed the format of the /etc/gsmdevices
                          file. Added a new field called PINpause. I noticed
                          that the amount of time required by the GSM network
                          to process a login request (what happens "behind the
                          scene" when you provide your PIN code) could vary
                          wildly from one provider to the next. So I made this
                          configurable. See gsmdevices(5) for more details.
                        * Added support for <numplan> #C8.
                        * Expanded the #defined "PUKLEN" value to 16 chars (in
                          ./server/sms_serv.h), as a user reported using a 15-
                          char long PUK string.
                        * Started work on solving Victor Tan's problem
                          (parallel access to multiple devices when all of them
                          are in dd mode). Also made some generic improvements
                          to dd_spawn() (memory allocation and cleanup for
                          struct symbols, error reporting). Also found out
                          that, as it is currently implemented, the dd mode
                          will only support the send command (what about post
                          and queue ?). Added the dd_busy field in the struct
                          gsms_def - modified gsmdevcpy() accordingly.
                        * Worked on solving a weakness in mbparse() (in ./
                          server/mbchecker.c), where only the first line of a
                          multi-line message would be saved (due to an earlier,
                          misguided, design decision). The parsing code should
                          now allow for multiple [<CR>]<LF> characters in the
                          text of the message. Those will then be trimmed out
                          to be replaced by spaces (in order for the incoming
                          messages to be saved on a single line in the inbox
                          file). Problem resolution contributed by Marcel_P..
                        * New end-of-string detection strategy in
                          packed8toascii7(): added a <tpudl> parameter, moved
                          the "trailing '@'" check within packed8toascii7().
                        * Fixed broken support for FreeBSD 4.8 and added
                          support for FreeBSD 5.0 with the help of Greg_May.
                          Added the GNU getopt code in the (new) ./libs
                          directory, for use on those platforms that don't use
                          glibc. Added two variables IEXTRA and LEXTRA that
                          make it easier for the user to specify extra include
                          and library paths when needed (e.g. when the MySQL
                          libs are in a non-standard location).
                        * Code cleanup in the GSM modem dialogue (removed much
                          duplication, made it a lot more modular). Implemented
                          on the whole code the technique shown by Ing._Andrea
                          Vettori.
                        * Improved Makefile readability. Altered CFLAGS
                          handling in the Makefiles. Makes it possible to get a
                          debug build by first exporting CFLAGS="-g" and then
                          running make.
                        * Added support for the following hardware:

                          o Ericsson DI27 (an IR plug-in modem module for the
                            Ericsson T10 and T18). Contributed by Frank_Weis.
                          o Ericsson T65. Contributed by Ritesh_Shah.
                          o Falcom A2D3. Contributed by Benjamin_Zller.
                          o Falcom Twist. Thanks to Brian_Silberbauer and
                            Joachim_Wickman for their help in debugging this.
                          o RMU Ultralite CX. Contributed by Troy_Stevens.
                          o Siemens TC53 Terminal. Contributed by Franois
                            Delpierre.


                        SMS2MAILGW:

                        * Now shipping version 0.16b.
                        * Warning: For those already using version 0.12b or
                          higher: some of the gateway module command-line
                          options were changed to keep them in line with the
                          equivalent options on the server module (-r became -
                          M; -D became -F). Please adapt your scripts
                          accordingly.
                        * Added the --mbchkinterval command-line parameter to
                          allow this daemon to synchronize with sms_serv(1).
                        * Replaced the old (incorrect) domain determination
                          strategy that involved NIS by a more technically
                          correct approach based on DNS only. Added the --
                          defaultdomain= command-line option for easy override.
                        * Added the --smtprelay= command-line option for added
                          flexibility in mail routing setup.
                        * In ./server/gw_stuff.c (now in ./server/smtp.c), in
                          send_mail() function, replaced all <lf> by <cr><lf>
                          sequences in the dialog with the SMTP server, as per
                          RFC 822bis, section 2.3 (see http://cr.yp.to/docs/
                          smtplf.html for details). Caused problems when
                          talking to qmail. Thanks a lot to Nathan_Thomas for
                          letting me know.
                        * Added a call to dequalify() on variable localhost to
                          prevent the domain name to appear twice in the From:
                          address.
                        * Moved everything email-related to ./server/smtp.[ch]
                          (to be able to share it with the server module).
                        * Corrected a bug that prevented multi-line inbox
                          entries from being successfully processed. Those are
                          now supported, whether they be mail or non-mail
                          entries.
                        * In the Makefile, removed 2 useless libs from the link
                          line of the sms2mailgw(1) module (-lnsl & -lresolv).
                        * Updated man page accordingly.

                        CLIENT:

                        * Now shipping version 0.22b.
                        * Adds support for the new server-side commands (post
                          and queue). The desired command can be selected on
                          the client side by a command-line option. See sendsms
                          (1) for details.
                        * Added support for FreeBSD 5.0 (contributed by Greg
                          May).
                        * Replaced outdated use of sys_errlist[] and sys_nerr
                          by calls to strerror(). Thanks to Greg_May for
                          reporting the bug (spotted on RH 9.0).
                        * Improved Makefile readability.
                        * Updated man page.

                        PDU-TOOLS:

                        * Now shipping version 0.04b of gsmts0338(1).
                        * Added support for default GSM alphabet + command-line
                          option to select the local character set.
                        * Added handling of new <tpudl< param to
                          packed8toascii7() (for better support of the trailing
                          '@' case). Play with it through the -l command-line
                          option.
                        * Updated man page.
                        * Added 2 new utilities: encode_pdu(1) [shipping
                          version 0.03b] and decode_pdu(1) [shipping version
                          0.05b].
                        * Adapted ./pdu-tools/Makefile to better handle the
                          dependency beween the tools and some objects from the
                          server directory.

                        MISC.:

                        * In ./varia, an SQL script is provided (called
                          database.sql) that can be used to create the back-end
                          MySQL database and its related tables.
                        * Included a new GUI-based Win32 VB client contributed
                          by Alex_Cooper. Created a directory called SMS-VB
                          below ./contrib to keep the sources and the README
                          file.

                        -------------------------------------------------------

                        smslink-0.54b-8 (December 10, 2001)

                        SERVER:

                        * In ./server/pdu.c, added proper support for a variety
                          of numplans, usually seen in messages received from
                          internet websites. Thanks a ton to Thomas_Gutzler for
                          all the data he gathered for me, and for his great
                          help in testing the new features. For more details on
                          the actual numplans now supported, their meaning or
                          the sites they were coming from, please refer to my
                          new PDU_format_support page.
                        * Also in ./server/pdu.c, modified the numplan switch
                          cases to hex values. Made the <OA> byteswap
                          conditional to <numplan> value. Fixed a bug where the
                          msg->fromgsm string was not always properly
                          terminated.
                        * In ./server/dd.c, ./server/mbchecker.c and ./server/
                          server.y, replaced calls to blopen_mdm_line() by
                          calls to lopen_mdm_line() (those functions are
                          exported in the libmodem API). Advantage being that
                          this version uses the max. speed supported by the
                          device by default (the one defined in /etc/modems).
                          I'm now down to 11 secs per SMS in "poll,fast" mode.

                        CLIENT:

                        * Upgraded to version 0.19b. For the mods, see below.

                        MISC.:

                        * Added a ./pdu-tools directory, containing the
                          gmsts0338(1) utility. This small program allows you
                          to convert strings to and from the ETSI GSM TS 03.38
                          alphabet (the one used in the PDU format). The ./pdu-
                          tools directory will be used to store all utilities
                          that could help in further developping support for
                          the various features and quircks of the PDU format.
                          To compile and install, just make; make install, and
                          for usage info, man gsmts0338.

                        -------------------------------------------------------

                        sendsms-0.19b (October 8, 2001)

                        CLIENT:

                        * Implemented a finer granularity in the acquisition
                          loop by moving to usleep(). Allows the client to
                          sleep by slices of 100 millisecs (instead of a full
                          second). The overall timeout value for each step of
                          the dialogue with the server wasn't altered. A bit
                          heavier on the CPU, but offers the promise of small
                          performance gains against current versions of the
                          server. Will be required to take advantage of the
                          speed improvement that will be featured in the next
                          minor release of the server.

                        -------------------------------------------------------

                        smslink-0.54b-7 (September 27, 2001)

                        SERVER:

                        * Altered the "OK string" and "line separator" fields
                          in the driver file (/etc/gsmcaps) for the SM20, in
                          order to properly support "fast" mode on it. Thanks
                          to Paul_Schaap for his debug traces ;-).
                        * In decode_pdu() (./server/pdu.c), added a debug level
                          that would accept any numplan, print a warning and go
                          ahead, e.g. for numplan #85 [reserved] (requested by
                          Thomas_Gutzler). To activate the feature, run the
                          server with "-d 16" switch (or plain "-d", of
                          course). Changed numplan processing to a switch
                          structure to make it easier supporting more numplans
                          in the future.

                        CLIENT:

                        * Upgraded to version 0.18b. For the mods, see below.

                        -------------------------------------------------------

                        sendsms-0.18b (September 24, 2001)

                        CLIENT:

                        * Complete re-engineering of the main function
                          implementing the dialogue between client and server
                          (get_gsm_answer()). Thanks to this, the average
                          sending time is now down to between 14" and 16"
                          against a server running in "poll,fast" mode, and 11"
                          against a server running in "dd,fast" mode. A
                          significant improvement in performance is also felt
                          when sending through a server using the regular (=
                          "slow") mode.
                        * Fixed the dialogue with the server to also accept as
                          successful the message sent out by a server in "dd"
                          mode. Silly oversight of mine. Thanks to Paul_Schaap
                          for the fix.
                        * Since the distinction between slurp_n_catch() and
                          get_gsm_answer() was completely useless and
                          artificial, I merged both functions into
                          get_gsm_answer().
                        * A few new command-line options: -g for debugging, -
                          r for reporting (the device name used for sending and
                          the message ID on the server when available [thanks
                          to Paul_Schaap for the idea]), -p for the connection
                          port on the server, when a non-standard one is used.
                        * I changed the way the communication port is handled.
                          If a port is requested via the -p command-line
                          option, that one is used. If not, the program
                          attempts to get the port number through a call to
                          getservbyname() for service "sms". Only when this
                          fails is the compiled-in default used.
                        * Made the allocation of the sendlog buffer sully
                          dynamic. No more artificial limit on how long the
                          dialogue with the server can be.
                        * Improved error reporting.
                        * Updated the man page accordingly.

                        -------------------------------------------------------

                        smslink-0.54b-6 (May 9, 2001)

                        SERVER:

                        * Added a 20 secs pause in send_sms() (./server/
                          server.y), mbcheck() (./server/mbchecker.c) and
                          dd_init() (./server/dd.c) after initial PIN
                          processing when using the "fast modem response" mode,
                          to try and solve the "+CMS ERROR: 515" message I was
                          getting on the WMOD2B module. CMS 515 means the
                          module is still busy processing the last command, so
                          it looks like "fast" mode was a bit too fast indeed.
                          This pause will only hit you in "fast" mode, and then
                          only on the first access to the module after it
                          underwent a power cycle. If this bugs you and you
                          feel it's not necessary with the brand you're using,
                          give me a note and I'll isolate that behaviour
                          through a driver flag.
                        * Added cpl_list de-allocation code in send_sms() (./
                          server/server.y) -- back-ported from the upcoming
                          0.55b.
                        * Modified dd_init() (./server/dd.c) to also use the
                          new get_gsm_resp() calls and related cpl_list
                          structure when checking for the PIN code.
                        * Modified the "OK string" and "line seperator" fields
                          in the gsmcaps file for devices of type FA1, FA2 and
                          GENSM2 after a live test.

                        -------------------------------------------------------

                        smslink-0.54b-5 (May 5, 2001)

                        SERVER:

                        * Solved a bug in send_sms() for GSM devices having
                          SUBPROMPT_IN_CMGS when using "fast modem response"
                          mode.

                        -------------------------------------------------------

                        smslink-0.54b-4 (May 5, 2001)

                        SERVER:

                        * Improved handling of the values returned by the
                          AT+CREG? command in send_sms(), mbcheck(),
                          dd_clear_msgs() and dd_send_sms(). The <mode> field
                          is now properly ignored (the server INSTALL page has
                          been modified to recommend setting the mode to
                          disabled), and the <stat> field is now analysed and
                          reported for easier troubleshooting. Parsing of the
                          +CREG: answer is implemented in getregstat(), in
                          server/serv_stuff.c.
                          Thanks to Norbert_Lataille for bringing this issue to
                          my attention.

                        -------------------------------------------------------

                        smslink-0.54b-3 (April 6, 2001)

                        SERVER:

                        * Warning: I modified /etc/gsmcaps format to include
                          the "modem_okay" string and the line separator
                          character(s). Please copy the new file manually in
                          place.
                          Adapted translatemodname() and gsmdevcpy() to handle
                          those new fields. Modified the man page accordingly.
                        * In send_sms() and mbcheck(), replaced the call to
                          get_gsm_answer() by one to get_gsm_resp() in order to
                          allow for detection of a "multiple choice" of catch
                          phrases.
                        * In server/serv_stuff.c, replaced the char * parameter
                          by a cpl_list parameter in get_gsm_resp(),
                          get_gsm_answer() and get_gsm_fast().
                        * Added all needed functions to handle this new
                          cpl_list structure in server/serv_stuff.c.
                        * In server/stuff.c, added a function spchar_pp() that
                          translates special characters in printf() format as
                          read from /etc/gsmcaps to their appropriate ascii
                          value.
                        * In server/sms_serv.c, added a test for negative debug
                          level values, and generated a log entry when the
                          debug is active.
                        * In server/accessctrl.c, removed an old inconsistency
                          where debug messages were sent to stdout instead of
                          stderr.

                        -------------------------------------------------------

                        smslink-0.54b-2 (March 30, 2001)

                        SERVER:

                        * Added hexdump of modem answer in get_gsm_sleep() and
                          get_gsm_fast() to help debug problems with "fast
                          modem response" mode on some devices. Moved
                          dump_string() from mbchecker.c to stuff.c. Added a
                          separate debug level to support it (DEBUG_HEXDUMP).

                        -------------------------------------------------------

                        smslink-0.54b (March 12, 2001)

                        SERVER:
                        (Note: this release was mostly dedicated to merging
                        huge changes brought by Andrew_Worsley, namely the
                        support for the Ericsson GM-12, a "dedicated daemon"
                        mode that can speed up processing of incoming messages,
                        a "fast modem response" mode that can speed up modem
                        dialog, the ability to feed incoming messages to some
                        arbitrary external program / script, device-level flags
                        controlling which of those features are enabled or not,
                        etc. I wanted to aknowledge those here. They are a
                        tremendous asset to this project. All of those changes
                        will be marked with [Andrew] in the list below. Some
                        additional changes were brought by others - those will
                        be attributed in the log below.)

                        * Added support for the Ericsson GM-12 (and GM-22 -
                          same driver - that change was also submitted by Ing.
                          Andrea_Vettori) [Andrew].
                        * Modified /etc/gsmdevices format by adding an optional
                          field that would hold a list of comma separated flags
                          used to enable or disable each of the new features on
                          a per-device level. Adapted demangle_gsm_entry() to
                          take it into account [Andrew].
                        * Added a new "dedicated daemon" mode (handled by the
                          functions in server/dd.c and hooks in main()) meant
                          to speed up processing of incoming messages in the
                          cases where those have higher priority than outgoing
                          ones, or where one of the devices hooked to a server
                          that has many can be dedicated to handling incoming
                          messages. In this case, the master daemon will spawn
                          a child process dedicated to listening to the device.
                          If all other devices are busy, the dedicated one(s)
                          can also be used to send [Andrew].
                        * Modified the dumptofile() function so that it is now
                          possible to feed incoming messages to arbitrary
                          external programs / scripts to be further processed.
                          A sample script is provided that would forward all
                          incoming messages to a predefined mailbox (varia/
                          scripts/sms-recv.pl). A device-level flag controls
                          whether the message has to be stored in the inbox,
                          fed to a program, or both [Andrew].
                        * Modified get_gsm_answer() function to exit early as
                          soon as a catch-phrase is received. This speeds up
                          the dialog with the modem considerably, by avoiding a
                          useless wait() call. Use of this feature, dubbed
                          "fast modem response", is controlled by a device-
                          level flag (fast

                        ) [Andrew].
                        Modified mbcheck() to read all messages from the SIM
                        (and then delete them) instead of just reading the
                        unread ones. Purpose of it being to make sure that no
                        half-processed message may get stuck in the SIM memory,
                        thereby clogging it and preventing further message
                        reception [Andrew]. I isolated this feature on a
                        device-level flag (r4).
                        Added a global variable to define the concept of "debug
                        level". Isolated logging of modem dialog on 2 of those
                        levels [Andrew]. I used this opportunity (triggered by
                        Andrew's advice) to move to another debug level all the
                        debug info that was previously controlled by compile-
                        time defines.
                        Added a few commands to the interactive interface
                        command language to allow control of this debug level
                        ('show debug', 'set debug = x', 'clear debug'). Impact
                        limited to the current session, of course. Modified on-
                        line help accordingly.
                        Added command-line parameters to handle (for the mean
                        time) the setting of the debug level. I improved on
                        Andrew's input by also merging part of Ing._Andrea
                        Vettori's upcoming patch, thereby using GNU getopt()
                        function to parse the command-line. This include
                        support for long and short version of the options.
                        Modified mbparsePDU() to continue processing when
                        dealing with an invalid PDU string (to remove it from
                        the SIM) [Andrew].
                        Modified packed8toascii7() so that it would return in
                        error in case a non-ascii7 character is found [Andrew].
                        Added function trChar() in stuff.c [Andrew].
                        Adapted all the man pages accordingly.
                        Eliminated a slew of gcc warnings in server.y.
                        In server.y, mbchecker.c and dd.c, modified the routine
                        for the selection of a new PIN in the case of a failure
                        that brings us to the use of the PUK. Now tries to use
                        the stored PIN value, instead of randomly choosing a
                        new one. Thanks to Shay_Kalderon for showing me the
                        light.
                        Fixed the "driver flags" for the WMOD2B (I just got one
                        :-), kudos to Shay). Contrary to what was believed, it
                        does have a subprompt. If this was not the case for
                        earlier versions of the command parser (the one I have
                        is using version 4.10), please let me know.
                        Corrected a minor error in the gsmcaps entry that
                        Andrew provided for the GM-12 (HAS_CSDH_1 should be set
                        to '0' - N/A since this model doesn't support text-
                        mode).
                        SMS2MAILGW:

                        * Added a global variable to define the concept of
                          "debug level". Moved to that mechanism all the debug
                          info that was previously controlled by compile-time
                          defines.
                        * Added command-line parameters to handle (for the mean
                          time) the setting of the debug level. Used GNU getopt
                          () function to parse the command-line, to match what
                          was done in the server. This include support for long
                          and short version of the options.

                        -------------------------------------------------------

                        smslink-0.52b-3 (February 13, 2001)

                        CLIENT:

                        * Compilation of the command-line client was broken for
                          the Solaris platform. Thanks to Cristian_Llaras for
                          noticing the problem and providing the fix.

                        -------------------------------------------------------

                        smslink-0.52b-2 (December 30, 2000)

                        SERVER:

                        * Improved the driver definitions for the Wavecom
                          devices (and some Falcom ones whose core is Wavecom-
                          based). Only the /etc/gsmcaps file was modified. No
                          change in the code. Thanks to David_Martinez from
                          Wavecom France for his excellent technical advice.
                          Warning: some Wavecom devices were renamed (what I
                          thought to be a zero was in fact an "Oh", as in
                          WMO2). If you're using one such device, please make
                          sure to modify your /etc/gsmdevices according to the
                          new device codes defined in /etc/gsmcaps when
                          upgrading.

                        -------------------------------------------------------

                        smslink-0.52b (November 30, 2000)

                        SERVER:

                        * Just incremented the server module version to reflect
                          the package version. No change in the code.

                        CLIENT:

                        * Port to the Win32 + Cygwin1 platform. Requires the
                          use of the latest nightly snapshot of the Cygwin
                          libs, but it works. Click here for detailed install
                          instructions. Due to some bug in the cygwin1.dll, the
                          client program will exit with an error when the SMS
                          server parameter is given as an IP address (using
                          hostnames works fine, provided DNS is properly
                          configured on the client, of course). This has been
                          reported and should be fixed in some future snapshot
                          of the Cygwin libs.
                          Update: this bug has been fixed in the nightly
                          snapshot released Dec. 1st. Please install cygwin-
                          inst-20001201.tar.bz2 or later. Thanks a lot to
                          Corinna_Vinschen for her prompt reaction.
                        * Added a new contrib/ directory in the project
                          distribution file. It currently contains two
                          different contributed native Win32 clients.
                          The first one, called ClientSMS is GUI-based and
                          requires Visual Basic to compile. I've not been able
                          to evaluate it yet. Contributed by Dimitri_Bellini.
                          The second, called send_sms, is command-line based
                          and requires Borland C++ to compile. It might compile
                          under other Windows-based C++ compilers. I tested it,
                          and it works very well, being actually faster than
                          the native client (I'll sure have things to learn,
                          here !). Contributed by Melle_Sprenger.
                          Huge thanks to both of them.
                        * For a discussion of the various Win32 clients
                          requirements and their raison d'tre, please read
                          this_bit.

                        -------------------------------------------------------

                        smslink-0.51b (November 27, 2000)

                        SERVER:

                        * Added support for the Siemens S25 / S35 GSM modules.
                          Contributed by Thomas_Omerzu. Those models only
                          support PDU-mode.
                        * Finalized PDU-mode support: PDU-mode SMS reception is
                          now working (tested on the FA1, GENSM2 and PCFF900).
                          Please test it on yours as well.
                        * Preliminary support for the "Option FirstFone GSM 900
                          PCcard". Kudos to Bernard_Willemot for lending me the
                          hardware. Reception works fine both in text and PDU
                          mode. Sending in text mode works, but sometimes
                          returns with an error even though the message was
                          successfully sent. Sending in PDU mode behaves the
                          same, but what's more, the destination phone will get
                          garbage.
                          Support for this hardware lead me to always quote the
                          PIN code when sent to the devices (in sendsms() and
                          mbcheck()). Should be closer to the standard -- I
                          just hope it doesn't break support for any other
                          model. Please test and let me know if it does.
                        * WARNING: Please upgrade your /etc/gsmcaps file with
                          the one provided in this release, as the capacity
                          matrix was changed for all previously supported
                          models.
                          Failure to do so might affect text-mode reception.

                        -------------------------------------------------------

                        smslink-0.50b-2 (November 10, 2000)

                        SERVER:

                        * Added support for the "Ericsson F151s Business"
                          mobile phone (with FD10 Data Adaptor). No change to
                          the code, just an updated version of /etc/gsmcaps.
                          Thanks to Dimitri_Bellini for his help in making this
                          work.

                        -------------------------------------------------------

                        smslink-0.50b (November 3, 2000)

                        SERVER:

                        * Port to the FreeBSD platform (contributed by Stanley
                          Hopcroft).
                        * Added a signal handling function for SIGCHLD that
                          would reap the exit status of child processes and
                          prevent zombie formation (limited to the FreeBSD
                          port, due to it causing server's untimely death on
                          Linux). Contributed by Stanley_Hopcroft.
                        * Improved error checking in send_sms() when parsing
                          the module's reply after +CMGS. Thanks to Stanley
                          Hopcroft for pointing that out.

                        CLIENT:

                        * Port to the FreeBSD platform (contributed by Stanley
                          Hopcroft).
                        * Improved the sendsms(1) man file to document the
                          various possible exit codes returned by the client.

                        SMS2MAILGW:

                        * Port to the FreeBSD platform (contributed by Stanley
                          Hopcroft).

                        -------------------------------------------------------

                        smslink-0.48b-4 (September 13, 2000)

                        SERVER:

                        * Bugfix release: Fixes a bug when parsing incoming SMS
                          in text mode on the WM02 (and possibly the FA2 as
                          well). The problem was that this model uses <LF>
                          characters to separate the SMS message from its
                          headers instead of the <CR> used by the other models.
                          I included the unixify() function in server/stuff.c
                          to normalize the messages and standardize on the <LF>
                          characters. Both delimiters (and any combination of
                          them) will now be accepted in the input. Thanks to
                          Guido_Dolci for helping me track this issue.
                        * Improved the debug information output by the server
                          when compiled with -DINCL_DEBUG_CODE. It will now
                          spew an hexdump of the incoming SMS.

                        -------------------------------------------------------

                        smslink-0.48b-3 (September 7, 2000)

                        SERVER:

                        * Bugfix release: Fixes a problem when using a Siemens
                          M20 (added support for a sub-prompt when sending,
                          both in text and PDU mode). Thanks to Silvano
                          Menegoni for the fine tests he made on his equipment.
                        * Added support for different date formats in the SMS
                          timestamps when read in text mode. This also meant a
                          change in /etc/gsmcaps format. Adapted gsmcaps(5)
                          accordingly. Thanks to Pierluigi_Mangani for pointing
                          that out.
                        * Also thanks to Pierluigi_Mangani, improved support
                          for incoming SMS by making the parser accept a
                          variable number of fields. Improved error reporting
                          in mbparse().

                        -------------------------------------------------------

                        smslink-0.48b-2 (June 8, 2000)

                        SERVER:

                        * Bugfix release: Fixes a problem preventing the server
                          program to communicate properly with Wavecom WM02
                          modules. Those modules have a case-sensitive AT
                          command parser and hence accept only capitalized AT
                          commands. Changed send_sms() (in server.y) and
                          mbcheck() (in mbchecker.c) accordingly. Thanks to
                          Andrea_Vettori and Frank_Friel for letting me know.
                        * Adapted gsmdev.h to include a "capability" denoting
                          this behaviour. Adapted gsmcaps to flag the WM02 with
                          it.

                        -------------------------------------------------------

                        smslink-0.48b (May 24, 2000)

                        SERVER:

                        * WARNING: The format of one of the configuration files
                          (/etc/gsmdevices) has changed again due to the
                          improvement described below. Please adapt your
                          config. file accordingly (add the "model" field
                          between the "defmode" and "provider" fields). See
                          gsmdevices(5) or the example config. file header for
                          more details.
                        * Included support for sending SMS in PDU mode on all
                          supported modules. SMS reception in PDU mode is not
                          implemented yet.
                        * Started to implement some sort of flags-based
                          drivers, that should ease support for different
                          brands of GSM modules (as well as seamlessly allow
                          for the use of multiple modules from different
                          providers on the same server).
                        * Added the translatemodname() function to gsmdevices.c
                          to handle the translation from short model name to
                          capacity matrix, as provided by /etc/gsmdevices and /
                          etc/gsmcaps.
                        * Already modified the SMS reception procedure (mbckeck
                          ()) to use the device-level default mode. Still, only
                          text mode is supported at the present time.
                        * Adapted gsmdevcpy() to accomodate for the changes in
                          struct gsms_dev.
                        * Solved a bug in the definition of RAND_MAX that would
                          have prevented the election of a new PIN from
                          working, and that used to generate annoying warning
                          messages at compile-time.

                        -------------------------------------------------------

                        smslink-0.46b (April 4, 2000)

                        SERVER:

                        * WARNING: The format of one of the configuration files
                          (/etc/gsmdevices) has changed due to the improvement
                          described below. Please adapt your config. file
                          accordingly (add the "defmode" field between the
                          "defsca" and "provider" fields). See gsmdevices(5) or
                          the example config. file header for more details.
                        * Included preliminary support for SMS sending mode
                          support. The default mode (text or PDU) should be
                          defined in the configuration file (/etc/gsmdevices,
                          see above), it can be selected by the user and set in
                          the device, but only text mode is implemented (yet).
                          The "show", "clear" and "devicelist" commands have
                          been adapted accordingly.
                        * Fixed a bug that prevented the mailbox check to work
                          with Wavecom WM02 devices. Those are rather touchy on
                          the parameter format used to read messages in
                          relation to the current message format. Thanks to
                          Guido_Dolci for pointing that out.
                        * Improved the mailbox check procedure by including the
                          "at+csdh" command (full message header detail).
                          Thanks to Piero_Baudino for the hint.
                        * Made sure we always use text mode to retrieve
                          messages for the mean time. When PDU mode will be
                          fully supported, I'll allow PDU mode for message
                          retrieval as well.
                        * The periodic mailbox checks can now be disabled
                          altogether (for users not interested in this
                          functionality, or when it is vital that a "dormant"
                          server wouldn't touch the device except when
                          required). This is done by setting MBCHKINTERVAL to 0
                          in sms_serv.h before compiling.
                        * The server also now rejects abnormal values of
                          MBCHKINTERVAL and exits, logging the error.

                        SMS2MAILGW:

                        * Improved error handling and reporting in gw_stuff.c.
                          If a mail cannot be delivered, the daemon will now
                          keep it in the inbox and retry next time (while
                          logging the reason for the error).

                        -------------------------------------------------------

                        smslink-0.44b (March 13, 2000)

                        SERVER:

                        * Improved handling of the default SMSC. Now properly
                          picked up from the /etc/gsmdevices file on a per-
                          device basis.
                        * Fixed a bug preventing compilation on Slackware 7.0.
                        * In the interactive interface, improved the "show"
                          command to also display the length of the message.
                        * Added the "aclist" command to the interactive
                          interface.
                        * Adapted the sms_serv(1) man page to reflect the
                          changes.
                        * Added handling of a checkpoint file to allow for easy
                          synchronization between the server module and the
                          gateway module.
                        * Included the version number in the server bootup
                          syslog messages.
                        * Splitted the old stuff.c into three files. The new
                          stuff.c now holds functions used by both the server
                          and the gateway module, while serv_stuff.c and
                          gw_stuff.c holds functions specific to each module.

                        CLIENT:

                        * Improved the slurp_n_catch() function to be more
                          robust and less vulnerable to changes in server
                          response messages.

                        SMS2MAILGW:

                        * First public release.

                        VARIA:

                        * Added bulksms (sends the same SMS message to a list
                          of GSM numbers provided in a text file, generates a
                          log with the result for each request).

                        -------------------------------------------------------

                        smslink-0.41b (July 28, 1999)

                        SERVER:

                        * In mbchecker.c, implemented the dialog with the
                          module that will get the incoming messages, the
                          procedure that will save them to disk and the loop to
                          remove them from the SIM card afterwards.
                        * Added a command to the regular sending procedure that
                          would avoid notification of incoming messages.
                        * Moved three functions from server.y to stuff.c and
                          made them public so that I could re-use them from
                          mbchecker.c.
                        * Added a trim() function to stuff.c.
                        * Incremented the main version number in sms_serv.[ch].
                        * Adapted the sms_serv(1) man page to reflect the
                          changes.

                        -------------------------------------------------------

                        smslink-0.40b (June 25, 1999)

                        SERVER:

                        * Fixed a bug preventing compilation on GLibc2
                          platform.
                        * Added an uptime command to the interactive interface.

                        CLIENT:

                        * Fixed a bug preventing compilation on GLibc2
                          platform.

                        VARIA:

                        * Included a basic web interface to the SMSLink system
                          (Perl CGI script calling the sendsms client - no
                          straight http support in the server).

                        -------------------------------------------------------

                        smslink-0.34b (February 22, 1999)

                        SERVER:

                        * Improved signal handling in general. Moved from the
                          "old" signal() interface to sigaction(). Cleared the
                          bug which prevented users to send a second SMS in the
                          same session.
                        * Added a field "owner" in the struct gsms_def, to hold
                          the pid of the child process obtaining a lock on the
                          device. Displayed it through the interactive "dl"
                          command.
                        * Cleared a boundary-checking bug in the search for a
                          free GSM instance loop.
                        * Already built the programmatic structure to regularly
                          check for incoming messages. The actual dialog with
                          the device is not done yet, though.
                        * Implemented a very flexible access control mechanism.
                          Contributed originally by Philipp_Klaus.

                        CLIENT:

                        * Added the ability to read the message from stdin ("-
                          f -"). Contributed by Philipp_Klaus.
                        * Ported to Sun Solaris. Contributed by Philipp_Klaus.
                        * Solved a bug that prevented the previous version of
                          the client to compile under HP-UX.

                        -------------------------------------------------------

                        smslink-0.22b (November 26, 1998)


                        * First public release.


-------------------------------------------------------------------------------

Last Modified: September 29th, 2006.
     _philipa_STRUDEL_scarlet           _SourceForge_Logo_
     PUNKT_be_

