www.nordicmessaging.se

EMG 3.0.17 - User's Guide

Table of ContentsPreviousNextIndex

F. Change history

Changes between EMG releases.

There are three different types of releases:

Major release
A full distribution including new functionality. Migrating from one major version to another will require a new license key.
Minor release
A full distribution primarily including changes and bug fixes. Usually does not require a new license key.
Patch release
A binaries-only release including changes and bug fixes. Applied to an existing installation from a full distribution. Does not require a new license key.

Changes marked with an asterisk, `*', includes a fix for a problem which potentially could cause the server to stop unexpectedly.

F.1 EMG 3.0.17.18116

Minor release.

New keyword EXPIRE_INTERVAL which specifies how often (in seconds) to check for expired objects (default: 2)
New keywords DISABLE_MESSAGEBODY and DISABLE_MESSAGEOPTION to suppress corresponding DB tables being used
New connector keyword MODEM_BPS to set bitrate on GSM modem connections
New connector keyword FAILOVER_ALL which will move all queued entries to specified connector if connector goes into state error
Keyword MAXSESSIONS did not reject new sessions when limit exceeded
UCP: Send "0" instead of alphanumeric source address in DLRs
UCP: OTOA value of 1139 should set NPI=1
SMPP: If MESSAGESTATE2/RECEIPTEDMESSAGEID are used parameters from DLR body must be ignored
MM7: Allow SOAPAction header to be missing
FAILOVER with invalid connector would cause NPE*
Keyword session, potenial NPE if keyword matches but source address is missing*
DLR log level was not always set correctly after a refresh/reload
Improved escaping of options in log files
Minor improvements in GSM modem driver
Minor performance improvements

F.2 EMG 3.0.16.14262

Minor release.

EMG is now available in version without SSL/encryption support
Database schema change for "emguser" table (build 13555)
Import performance for handling of incoming delivery reports
New connector keyword FAILOVER for re-routing of message when an error is returned in response to submit operation
New connector keywords FORCE_SOURCEPORT_IN and FORCE_DESTPORT_IN
Fix for potential crash when orphaned messages expired
PDU log format change for unknown fields, previously logged as "UNKNOWN:<value>", now logged as "?<key>:<value>"
HTTP: Two potential buffer overflows eliminated *
OIS: Multiple fixes for sending and receiving message incl UDH support
UCP: Protocol id is now treated as string and not as numeric value
SMPP: DLR_ERR_HEX can now be used for outgoing DLRs
SMPP: Handle delivery receipts from Huawei SMSC correctly
WAP PUSH SI/SL in UTF-8 is now handled correctly
Validation of values for INTERFACEVERSION added when SMPP is used
Signature change (2 new arguments) for DB functions "db_sendrequest" and "db_readresponse". Plugins using these functions must be re-compiled to use the new signatures.
Plus som additional potential minor memory leaks and null pointers fixed.

F.3 EMG 3.0.15.12050

Minor release.

Added support for regular expressions in routlist files
SMPP: New connector keyword DLR_ERR_HEX which indicates "err" field in incoming delivery receipts should be treated as hex
SMPP: Handle delivery receipts from Comverse SMSC correctly
UCP: Empty messages bodies was not handled *
Problem with refresh/reload with connectors using SSL fixed

F.4 EMG 3.0.14.11726

Minor release.

New general keyword DISABLE_CREDITS, which disables credit handling
SMPP: Possible data corruption when parsing invalid pdus fixed *
SMPP: Preserve DCS value when GSM MWI is used
PAP: Improvements for PAP proxy possibilities
UCP: New MGP option XSER_EXTRA for handling custom XSER fields
DLR: Possible memory corruption under high load eliminated *
DLR: Logic rewrite for performance improvement
New MySQL driver for Solaris 10 x86
Check for expired DLRs only once per minute
Ensure connection is closed if we cannot write

F.5 EMG 3.0.13.10913

Minor release.

New connector keyword OPS_MAXEXPIRED, which controls how many outstanding operations are allowed to expire before connection is closed. Default is 0.
PAP: Missing "Content-type" could cause server to crash *
SMPP: Make delivery report parsing a bit more flexible
MGP: Fail message if UDH is not correctly encoded
Enable forwarding of DLRs for temporary status by setting bit 2 for DLR option (DLR=2 for temp only or DLR=3 for temp and permanent status)
Routing files was not checked properly by "emgd -verify"
Fix in retry scheme handling which would cause action for one message to be applied to multiple messages
"Holding" a connector which did not exist would cause server to crash *
Minor memory leak when using PLUGINARG option
DB: Schema change (19) in routelog, "npdus" now defaults to "1"
DB: Schema change (20) in routelog, new field "origid" which is set to the id of the original message for DLRs
DB: Schema change(21), new table "monthlysummary" for aggregated

F.6 EMG 3.0.12.10307

Minor release.

PAP: Fix for respecting SI/SL
SMSCI: Do not use mod 256 on transaction number
Concatenated messages: Never convert from UCS2 to IA5 even if one part will fit, since this will corrupt message
Concatenated messages: Ensure we do not split a message in the middle of a multi-byte character
AUTOWAPPUSH_IN now supports a text in addition to the URL. The first URL found in the message will be extracted and the rest of the message used as the text
Do not update routelog table with NULL values
Bodies for large messages was not removed when using message persistence

F.7 EMG 3.0.11.9982

Minor release.

CIMD2: TAB is not allowed in usernames
HTTP: HTTP status 406 was incorrectly sent for messages with empty message body
MGP: QPRIORITY can now be set by ADMIN users
SMPP: Added support for parsing of Comverse DLR format
SMPP: Field data_coding was not always set correctly
SMPP: Fix for handling of messages longer than 255 bytes
SMTP: E-mails with leading space in message body was not handled correctly
SMTP: Functionality for "compressing" a Unicode message into GSM IA5, if it fits, improved
SMTP: QUOTEDSUBJECT was not handled correctly
UCP: "/" is not allowed in usernames
UCP: Ensure correct length is used for billingid (max 20 chars)
smtpload: More than 10 threads was not handled
UDH calculation could sometimes be incorrect for long messages if "concat" attributes already present in UDH
New protocol implemented, SMSCI (CIMD2 variant)
Loglevel now reset to "info" during reload if not present
Increased buffer size for network communication for improved SMTP performance
Memory leak when clearing messages and PERSISTFILES in use
Directory structure is now only traversed every minute when using PERSISTFILES

F.8 EMG 3.0.10.9505

Minor release.

HTTP: Validate hex encoded message bodies
MM7: Namespace added to DeliverRsp
SMPP: Possible null pointer when receiving invalid data *
emgclient: Invalid pointer problem when running "deleteall" on server with a lot of activity *
PARSEMESSAGE did not handle all IA5 characters properly
New keyword AUTOWAPPUSH_IN for receiving a link via SMTP and converting it into a WAP Push (SI).
Improved performance of hex encoder/decoder
Incoming connectors should not be set to "hold" on message errors

F.9 EMG 3.0.9.9284

Minor release.

MGP: Return code from plugin call before_receive was not respected
SMPP: enquire_link is not allowed if not logged in
Optimizations in DLR handling
Optimizations in logging
Minor memory leak when database operation aborted unexcpectedly

F.10 EMG 3.0.8.9115

Minor release.

SMPP: Messaging mode part of parameter esm_class was not respected
SMPP: Timezone was not handled correctly for validity period
SMPP: Handle DLRs with BUFFERD or ACCEPTD status
SMPP: Optional parameters with a length > 128 were not handled properly*
UCP: Message body was hex encoded twice when logged
HTTP: Read to "end of file" if content-length is missing
HTTP/MGP: Handle incoming DLRs
HTTP/MGP: Now it is allowed to set XUSERNAME option if ALLOWROUTE is specified
HTTP/EBE: New connector keyword USERESPONSE which allows for a message id to be read
SMTP: Potential null pointer when message body empty which would cause crash on Solaris*
EBE: Improved handling of childs in order to avoid zombie processes
MM7: Reordered some fields
MM7: Fixed memory leak when converting from MIME to MM7
MM7: new protocol variant MM7-TMOBILE for interoperability with T-Mobile MMC
emgstat: Display more of connectorname if screen is wider than 80 characters
mmscomp: Fix potential crash
Outgoing messages were counted twice for some protocols
Keyword CONNECTORLOGDB can now be used for connectors as well as in general section
New connector keyword LOGDB_EVENTS for specifying which connector events should be written to connectorlog table in database
New connector keyword NODLR to suppress DLRs being generated from HTTP, SMTP, EBE connectors
New connector keyword CHARCODE_CONVERT which enables automatic conversion between IA5 and Latin-1 for messages sent over connector
New DB keyword SOCKET for connecting to MySQL databases using a UNIX socket instead of TCP/IP. As a consequence PORT now must always be specified
Automcatic conversion of UCS2 messages which does not use the "high byte" to Latin-1 added
DLRs received with a buffered status are now handled and will update the "bufferedstatus" field in routelog accordingly
Default lifetime for a DLR entry increased to 73 hours
Default value for IDLETIMEOUT for outgoing connectors is now KEEPALIVE + 10 seconds
GSM modems would not work correctly if emgd had more than 64 file descriptors open*
New column "msgtype" in routelog table. Now routelog can be used for all message statistics without using connectorlog
DB: Multiple schema changes for routelog
DB: Warn if INSTANCES > 1 for a DB profile since this is not supported
Plugin API: Added functions plugin_thread_start and plugin_thread_stop for thread-specific handling when using plugins
Plugin API: Plugins using more than 1 instance were not thread-safe*
Performance: Optimization of allocated buffers has increased performance substantially for this release
Performance: Switch to mtmalloc routines on Solaris which is much faster for multi-threaded applications
Solaris 10 x86 is now supported

F.11 EMG 3.0.7.8470

Minor release.

Updated OpenSSL version to 0.9.7i
Unnecessary counting of DLRs could cause high load on DLR intensive systems
Environment variable EMGLOGDIR did not work properly
Use of MAXSESSIONS in users file could cause deadlock *
Eliminated potential buffer overflow in UDH parsing *
Users connecting and then disconnecting without logging in could cause thread to be left hanging
DCS value for IA5 message was sometimes set to 1 instead of 0
SMTP: FORCE_CHARCODE=UCS2 would cause server to crash *
UCP: MT_ALERT_RESP was incorrectly decoded
pushtohex: WAP opaque data was not correctly encoded

F.12 EMG 3.0.6.8403

Minor release.

MIME: Handle UTF-8 in MIME trees properly
CIMD2: Protocolid was not respected
SMPP: Potential buffer overflow when parsing pdu *
SMPP: Send error "invalid command length" on invalid pdu length
SMPP: Reject unsupported operations
SMPP: Handle generic_nack properly
SMPP: Added support for vendor-specific optional parameters
UCP: Potential buffer overflow when parsing pdu *
UCP: Protocolid was not respected
MM1: Potential null pointer problem fixed *
MM1: Use sender timestamp for date field
MM1: Force read-reply and delivery-report to false if messageclass=auto
MM7: Handle "env:Client" as a generic client error
MM7: Duplicate "<Priority>" tags was sometimes sent
MM7: Use transid "0" in reply if transid is missing in request
MM7: 5xx responses was not handled correctly
emgclient: delete operation could delete wrong message
Option MAXTOTALQUEUESIZE was not respected for most protocols
Added MGP option DESTNETWORK which can be used for MNP routing
URLs that starts with "https" in (SUB)ADDRESS should give SSL
Algorithm for splitting long messages did not always work correctly
Now IDLETIMEOUT is used when waiting for HTTP responses
Minor memory leak fixed related to using invalid connector keywords
Warn if KEEPALIVE is set to a greater value than IDLETIMEOUT
Possible deadlock when authentication users from file and using maxsessions
Session counter did not always handle disconnecting users correctly
Support for multiple RETRYSCHEME keywords per connector
Warn if DEFAULT_MSGTYPE is supplied with an invalid message type
Potential invalid reads on big-endian archs (Solaris) *
Plugins: Implementation of ZMRDB (MNP in Germany) and T-Mobile (Germany) billing plugins

F.13 EMG 3.0.5.7719

Minor release.

Treat HTTP status 202 (accepted) as delivery ok
SMTP: Error 450 is message specific and should not block entire domain for retry
SMTP: There was a 30 second hard-coded "idle timeout" for incoming connections
Prune /dlr and /sat directories when using persistence
Syntax \xx can be used for binary data in keywords
MSGTYPE=DLR was not sent for DLRs over SMTP
EBE connector did not count used instances correctly
New connector keyword DELAYFIRSTMESSAGE which causes a delay before the first message is sent over a connection
Relative SMPP time did not respect days, months or years when specified
Added concept of "weak" keywords which has a lower priority than keyword sessions via WEAKKEYWORD in routing file
User-specific force of source address did not always work as expected
Avoid null pointer when emgstat is used immediately after server startup *
Binary messages should not be parsed for keywords
Delivery time was not handled correctly for CIMD2, SMPP and UCP
Protocol ID (GSM 3.40 TP-PID) was not handled correctly
Keyword sessions could generate high load due to inefficient tree traversal
Keyword sessions was only checked for messages containing a keyword
SMPP message length was incorrectly set on big-endian platforms
DLR: Expire field was not persisted and therefore lost on server restart
UCP: Number of sessions was not always decreased on disconnect
UCP: Message type was not set correctly for UCS2 and 8 bit messages via UCP deliver operation
HTTP: Fix UDH parse problem for incoming requests
HTTP: Avoid possible null pointer *
MM7: Send UTF-8 data without conversion using encoding quoted-printable
MMS: New connector option MMS_TEXT_CHARSET used to set character set for text parts in MMS
DCS parameter was not handled correctly for HTTP
MM1: Set status in replies
Log plugin rejects in connector log
Minor perfomance optimization in hex encoder
Build date is now included in version information
Arcor fixes
DB schema change to version 15

F.14 EMG 3.0.4.6983

Minor release.

New connector keyword ROUTING for specifying a connector-specific routing table
New connector keywords REVDLR and REVDLR_IN for switching source and destination address for sent and received DLRs respectively
New connector keywords used for setting TON and NPI when detecting address types automatically: AUTOMATICTONNPI_SHORTCODE_TON, AUTOMATICTONNPI_SHORTCODE_NPI,
AUTOMATICTONNPI_ALPHANUMERIC_TON, AUTOMATICTONNPI_ALPHANUMERIC_NPI,
AUTOMATICTONNPI_DEFAULT_TON, AUTOMATICTONNPI_DEFAULT_NPI
New connector keyword REGEXP_KEYWORD for applying regular expressions to keywords
Added new MGP options for SMPP fields source_subaddress, dest_subaddress and its_session_info
Apply mappings to keywords as well as message body
MMS: Keyword parsing for MMS messages implemented, first check subject and if subject does not exist use first word in first plain text message part
MIME: Ensure quoted-printable lines are CRLF terminated
MM7: Put short codes in ShortCode tag correctly
MM7: Allow empty Subject tag
Handle empty SMTP messages
Fixed potential crash for invalid formatted HTTP cookies *
Fixed potential crash when DNS lookup failed *
Fixed potential buffer overflow in MM1 parser *

F.15 EMG 3.0.3.6691

Minor release.

New connector option REJECT_EMPTY for rejecting messages with empty message body
CMR: Fix for CMR where messages could be routed under high server load. Ported from EMG 2.5t
DLR: Problem with UCP DLR matching when id overflow
DLR: Fixed problem with DLR matching when FORCE_DESTADDR was used
GSM: New connector options for protocol GSM: SCAADDR, SCAADDRTON and SCAADDRNPI used to set SMSC address in message PDU
GSM: Always use capital letters when hex encoding in driver for GSM modems
HTTP: Always URL encode MGP option values sent over HTTP
MGP: Requesting route log via MGP could cause emgd to crash *
MIME: Do not insert CRLF before boundary attribute in Content-Type header
MIME: Handle when space is missing after ":" in headers
MIME: Potential buffer overflow in MIME part ids *
MMS: Force connection close when using HTTP 1.0
MM7: Various MM7 fixes
SAT: QUOTEDREPLY did not work properly
SAT: Subject was not saved properly when using SAT with SMTP
ARCOR: Added Arcor multimessage packet logging
Orphans: A small ORPHANSSIZE was used emgd could crash on server startup *
Authentication: When authenticating from database emguser and useraccess was joined improperly allowing access to server from any IP address
Authentication: Separate warning message when user has exceeded max number of simultaneous sessions
Credits: Improved handling of credits charging 1 credit when receiving message and later charge additional credits if message was split into multiple PDUs
Refresh: Connector hold flag was reset during server refresh/reload
License: On Linux when MAC address of eth0 is not available use IP address for license check instead
Added reasontext for CIMD2, SMPP and UCP for protocol specific error information
Fixed minor memory leak when incoming connections was terminated prematurely

F.16 EMG 3.0

First official release of EMG 3.

Table of ContentsPreviousNextIndex