AM 11/01/02 * Update of windows makefiles (VC6++, tested on NT4). Those makefiles are now up to date with the latest version. * example/msg_register.c: use stricmp on windows instead of strcasecmp. * gcc-3.0 updates and ANSI modifications: msg_register.c (strings.h), port_misc.c * patch from marko: port_misc.c: call srand((unsigned int) time(NULL)) stolowercase() modif changed return values of some function from 1 to 0 possible buffer overflow fixed in sclrspace AM 02/01/02 * HNY :-) * smsg.h: wrong length used in strncmp() calls. * ./tst, test/torture.c, configure.in: improvements AM 14/12/01 * authentication headers has been modified a few, but new rfc2617 is not yet fully supported (I started with the obsolete rfc!!!) * parser/md5c.c & osip/md5.h: (see files for license terms) Add a MD5 implementation inside the parser library. * msg_cparser.c: add support for reading compact form of header. (msg_2char will still use the uncompacted form to send message!!!) * msg_header.c: fix 2 bugs. * port_misc.c: sgetcopy_unquoted_string() * sdp_rfc2327.c: sdp_gotonextline() (compatibility with Windows XP RTC) AM 04/12/01 * hdr_*.c: some bugs in *_clone methods! * url.c, msg_write.c, msg_read.c... AM 03/12/01 * hdr_from.c: from_init should return 0 instead of 1?? * hdr_contact.c: add missing contact_clone() method. * test/torture.c bug fix and improvements for an optionnal verbose mode (-v) * conf/torture_msg2 new file to test the spport for CR and LF instead of CRLF... it's working fine... AM 29/11/01 * msg_parser.c, port_misc.c and hdr_wwwauthenticate.c: add patch from Vytautas Vysniauskas * parser/*.c and osip/smsg*.h add support for buffer save mode (see new element in sip_t structure) * configure.in: enable/disable buffer save mode. Some implementation may not be compatible with this otion without changes but most of them will... Anyway, you can choose to disable this new feature if you experience some troubles. AM 28/11/01 * try to patch windows VC++ makefiles with emacs... Not sure it's gonna work... AM 13/11/01 * windows port is now in the ./windows directory. (This is a patch from Rick Flott. Great thanks!) AM 12/11/01 * parser/msg_parser.c: Many little bug fixes! * parser/msg.h: add the msg_startline_init() method. * parser/msg_parser.c: support for SIP message with \r and \n. This add the possibility to support old network and thus make oSIP more compliant with the RFC. (This is a patch from Vytautas Vysniauskas. Great thanks!) AM 25/10/01 * smsg.h: correct allocation issues and warnings in MACROs. * hdr_contentdisposition.c: New header * hdr_encryption.c: New header (!!!!Not finished!!!!!) AM 22/10/01 * smsg.h: correct allocation issues and warnings in MACROs. AM 19/10/01 * fsm_uac4inv.c: fix allocaation bug. AM 12/10/01 * msg_write.c: accept was free() twice.. * hdr_contentencoding.c: New header * hdr_allow.c: New header * hdr_errorinfo.c: New header AM 11/10/01 * hdr_callinfo.c: New header * hdr_alertinfo.c: New header * hdr_acceptenconding.c: New header * hdr_acceptlanguage.c: New header * hdr_accept.c: New header AM 10/10/01 * hdr_proxyauthorization.c: New header * hdr_proxyauthenticate.c: New header AM 09/10/01 * hdr_authorization .c: New header * hdr_wwwauthenticate.c: New header AM 05/10/01 * msg_parser.c: comma iare acceted in "Server" and "User-Agent". The comma is not used to list separate headers. * doc/osip.txt: remove file from cvs! * doc/osip.sgml: Change license to FDL. * windows_port: (thanks to Rick Flott) add ports of semaphore, thread and socket methods... !! -> makefiles are not included by now: I want them in a separate directory... * osip/const.h: DATE changed to SIPDATE (for windows compatibility) * msg_read.c: issue with authentication = rfc2543 p130 Section 18.2 oSIP should use a canonical form for SIP message if we want authentication to be possible. AM 30/09/01 * parser/hdr_contenttypes.c: bug fix in contentype_clone() AM 26/09/01 * fsm_ua*4*.c/osip.h: bug fix request other than INVITE were in a wrong state after completion. * several improvements * osip.html: NEW DOCUMENTATION! * cvs tag rel070 AM 20/09/01 * API: * complete the API for parser... * fsm_uas4req.c: rigth names of callbacks. AM 17/09/01 * VxWorks: * route.c: method route_init() already exist on VxWorks. * makefile.mai: support for VxWorks. * osip.h: add #include <time.h> * remove the unused error management support (err_t) * API: * complete the API for parser... * complete the API for fsm... * ..... so many changes.... AM 11/09/01 * example/example_rcfile.c add comments for the use of a sipproxy on VxWorks. remove the unused 'domain' attributes. * configure.in add better managements for configure's options: --disable-mt --enable-pth --disable-pthread * fsm/port_fifo.c: 2 implementations a fifo with semaphore (compiled with -DOSIP_MT) a fifo without semaphore (compiled with -UOSIP_MT) The second implementation does not provide the method 'void *fifo_get(fifo_t*);'. Instead, you must always use 'void *fifo_tryget(fifo_t*);' * correct method name freefifo_t() changed to fifo_free() AM 10/09/01 * separation has been made between: * parser the SIP parser. * fsm the state machines. * example architectural design and logic of application. * example_mt architectural design and logic of application. ***src is removed*** The new API is flexible enough to create your own architecture design for your application. You can now implement as many architectures you want: * ./example provides a ONE process example architecture. * ./example_mt provides a 1 thread/transaction example architecture, one thread for the timers and one for a UDP listeners. * moved-files: plenty... * new files in osip: osip.h, list.h, fifo.h, sema.h, thread.h * --disable-mt: remove -DOSIP_MT If you use the command (./configure --disable-mt), you will only be able to use the ./example/ If you use the default command, oSIP will be build with multithreaded support. (-DOSIP_MT) * TODO by now, fifo are implemented with semaphore even in non-multithread design. A replacement will be provided so no library at all will be needed. AM 04/09/2001 * re-organisation of the stack: fsm: contains the finite state machines and optionnal timer facilities. parser: contains the SIP parser and the SIP message and headers accessor API. The new objective is to provide a set of methods independant from the application architecture. Also, the transport layer has been moved towards the application. By now, port_sema.c and port_thread.c will be optionnally compiled in oSIP. This may change in next versions. As before, implementors can choose their own implementation of threads and replace the needed methods. * macro: TRACE() and DEBUG() those new MACROs removes the printf() and trace() calls to speed the application when compiled with --disable-debug and --disable-trace. * trace() -> change prototype. Make use of the __FILE__ and __LINE__ MACROs generated by the compiler. AM 27/08/2001 * route.c/record_route.c: new method record_route_2char() wich ALWAYS use brackets which are mandatory for route and record_route headers. * test/Makefile.am: * example/Makefile.am: add the following line to enable building the package in a saparate directory. INCLUDES = -I$(top_srcdir) configure.in: move to 0.6.2 release cvs tag rel062 AM 26/08/2001 * hdr_from.c: from_char(), from_parse() 1. when quotes are used for the displayname, the parser now include them in the displayname. This is for interoperability issue with other limited stack. 2. from_params = strchr(url,';'); changed to: char *host = strchr(url,'@'); if (host!=NULL) from_params = strchr(host,';'); else from_params = strchr(url,';'); * msg_parser.c: Add support for multiple header on the same line. a nasty behavior is that we can't print the message as it was received! This stack only output a message by using multiple lines for multiple fields. * msg_parser.c: When LWS are found, \n and \t are replaced by SPACE. Same remark as above... * url.c: in url_parse() be sure the host and port part of the url has no SPACEs around. AM 24/08/2001 * hdr_header.c: new prototype and new name for msg_getnheader(..., header_t **dest); msg_getfindheader new prototype for msg_getheader(..., header_t **dest) new header_get/set method for name and value * msg_read.c: !MEMORY LEAK at the end of msg_2char()! tmp was allocated with malloc()... instead of smalloc() without any sfree(tmp)... * url.c/url.h: extend the accessor API to build and read url. * url.c: 2 bugs in url_parse(): :-( ->>> password = next_separator(username+1,':','@'); ->>> if (port>headers) port = NULL; /* Bug fixed: 24/08/2001 */ AM 23/08/2001 * hdr_via.c/udp_send.c: modify msg_getvia(..., viat_t **dest) prototype. * hdr_*.c/url.c: * new access methods on url_param_t. * new generic_param_t structure wich replace via_param_t, from_param_t, to_param, content_type_param.... * new access methods on generic_param_t * hdr_*.c/smsg.h: extend the accessor API (method and MACRO) of the SIP headers. configure.in: move to 0.6.1 release cvs tag rel061 AM 22/08/2001 * udp_send.c: udp_send() is moved at the beginning of the file and its declaration is removed from trlayer.h (it is not a global method....) getsock() is also moved at the beginning of the file. * fsm_uac4inv.c: in uac_i_retransmitack() add a missing call to OnEvent_rcvresp_retransmission() to announce reception of many 200 response. * trn_timers.c and timers.h: remove duplicate code between uas/uac timers. Now, only one thread deals with uas/uac transactions new trn_execute(): This new method allow applications to start the timers when they need it without using the provided design. Note that this module can be completely replaced by applications that want to control retransmission on their own. * url.c: BUG in next_separator() tmp MAY not be assigned if before_separator==0 FIXED * smsg.h: remove msg_body_parse(). This is a private method. Also, the file msg_body.c is useless and removed. the method is moved in the msg_parser.c file. * msg_write.c remove msg_makereply() from the src/ directory to the example/example_agentlogic.c file. It's more appropriate. * hdr_body.c/smsg.h: add msg_getbody() * smsg.h: rename all set/get MACRO definitions to msg_set*/msg_get*. remove extra MACRO set/getcontenttype() * trn_manager.c: in trn_thread() remove unused variable "i" AM 21/08/2001 * in example_logic.c: sip_invite(): remove unused test/initialisation of from and contact. * new file: osip/fsm.h for all fsm related declarations. move method declarations from fsm_*.c/sip.h towards this file. * new file: osip/timers.h for all timers related declarations. move method declarations from transactionnal_design*.c towards this file. * osip/Makefile.am: add timers.h and fsm.h * trn_manager.c: call_id_match(), callleg_match(), cseq_match() * return code of from_compare is 0 on success. * basic tests for bad arguments (avoid crashes when called with NULL args). * trn_manager.c: in trn_init() * BUG: if trn_init fails, mutex is not unlocked!!! * trn_manager.c: * the global mutex is now initiated by a call to trn_global_init() called from sip_start_design() * port.h/port_thread.c/trn_manager.c: * add sthread_join() * add sthread_setpriority() (for VxWorks only) * add sthread_exit() * hdr_from.c: in from_compare() * return code is 0 on success. * basic tests for bad arguments (avoid crashes when called with NULL args). * udp_send.c: add a connect() before the sendto so the second call to sendto will failed with errno setted to ECONNREFUSED. * fsm_uas4req.c: in fsm_load_uas4req() the last transition appears twice... * fsm_ua*4*.c: in uac_r_rcv2XX(), uac_r_rcv3456XX(), in uac_i_rcv2XX(), uac_i_rcv3456XX, remove useless test (the fisrt test is always true) and remove the extra code that is never executed. AM 18/08/2001 * add optionnal code for LINPHONE from Simon Morlat for linphone0.4.0 (UA available at linphone.free.fr) This transport part is likely to be modified a lot. This is the reason why I did not made it available in the standard distribution. To use it: compile with -enable-linphone * Debug and Trace is now set as default option. use --disable-trace --disable-debug to turn options off * cvs tag rel060 AM 17/08/2001 * record-route/route. * modif of sip_t structure, smsg.h, smsgtype.h, msg_cparser.c, msg_read.c, msg_write.c. * new hdr_recordroute.c file. * new hdr_route.c file. AM 14/08/2001 * hdr_from: in from_parse(...) if (displayname>url) displayname = NULL; to support those kinds of url where the first '"' is after the first '<' * trn_manager.c: in callid_match() add support for callid without @ (with callid->host==NULL) * Many improvements for the test application: * optional use of a proxy for all request * use the "localip" value (from the config file) which is added in the via header of request. * the from value in the config file must include a tag. (this is mandatory in the RFC) AM 13/08/2001 * BUG: message body does not end with an additional CRLF change the parser so that it is able to calculate automaticly the content-length and so that it does not rely on the final CRLFCRLF sequence to find the end of the body. (see rfc2543 section 8) * msg_bye.c -> set cseq to cseq+1 * example_agentlogic.c -> add a contact header in 200 response for INVITE. AM 03/08/2001 * Makefile.am: add makedefs.vxw and makefile.mai in EXTRA_DIST * src/Makefile.am, example/Makefile.am, test/Makefile.am: add makefile.vxw in EXTRA_DIST * evt_server.c: in the TEST_PARSER_SPEED case. correct "i = msg_setcontent_length(sip, tmp, err);" add "sfree(se);" * msg_body.c: memory leak! add some sfree(sep_boundary); AM 01/08/2001 * copy of makefile.mai * copy of makedef.vxw * copy of all makefile.mai * fsm_uas4req.c: BUG FIXES last state (for retransmission) changed to COMPLETED and COMPLETED * trn_manager.c: improvement do not delete event when the first action of a transaction is not finished. (This is mainly to correct a behaviour that will occur on local tests) if (transaction->lastrequest!=NULL) { CHANGED TO: /* if (transaction->lastrequest!=NULL) { */ * app.c/example_rcfile.c: changes for VxWorks and command line arguments * port_sema.c/port_thread.c/port_misc.c/port.h: changes for VxWorks * evt_server.c: you can now test the parser speed: #define TEST_PARSER_SPEED or compile with -DTEST_PARSER_SPEED * app.c/hdr_to.c: update use of from_t/to_t and to_parse/from_parse AM 27/07/2001 some modification for VxWorks, (more to come...) AM 25/07/2001 * Fixes some missing features of the new parser: * in msg_body_parse: use sep_boundary instead of "--++". * support for empty value in generic-parameter * url_param_set(): Add a call to sclrspace() for generic-parameter. AM 25/07/2001 * release-0.6.0 * new SIP parser * new MIME support The API for the parser is completely new. Each method has an err_t parameter which will be used later to improve error managements. (Actually, you are just aware that an error occurred, you don't know what is the type of error.) API for parser and sip_t: msg_init(sip_t **sip); msg_setto(to_t *to, char *string, err_t *err); msg_setfrom(from_t *from, char *string, err_t *err); msg_setcall_id(call_id_t *ci, char *string, err_t *err); ... API for headers: * example for to_t: int to_init(to_t **to, err_t *err); void to_free(to_t *to); int to_parse(to_t *to, char *hvalue, err_t *err); int to_2char(to_t *to, char **dest, err_t *err); The PARSER is now fully compliant and understand many features of SIP messages such as escaped characters, comments in Via, lws characters.... What's missing: * better granularity in error management tasks. * simple accessor API on messages and its headers. * Multiple fields on the same line separated by a comma are not supported. The library had been adapted to the new parser and tested for memory leaks. The ./example/ua application seems to be stable. Also, some new tests for headers are provided. The example application has also been modified to reflect changes and I also correct the command line for application. AM 08/07/2001 * BUG fixes. * correction of the random method for reliable generation of call-id number. * fsm_uac4inv. (retransmission of ACK) * draft of documentation (not up2date) AM 08/06/2001 * patches from Steven donegan have been included. stolowercase() modified.... :-( spelling errors... * port_malloc.c: Add if (ptr!=NULL) in , to make the code more readable. * cvs tag for 0.5.3 added. AM 04/06/2001 * memory leak removed in register (in app.c: "expires") * app.c: bug fix: MSG_IS_ACK is replaced by !MSG_IS_ACK * NEW OPTIONS User can now set a static SIP code for default answer to any incoming request. c: new static return code wanted * bug fix found and corrected by Pascal David (pdavid@ocare.com) * the form (i<=atoi(string_number)) does not work! * memory-leak: (compile with --enable-mleak) NEW SERIES OF TEST: * for various return code values. * for INVITE, BYE, and REGISTER * On stress test for INVITE * for various situation (on process is killed or not launched!) * for various messages (see ./test/torture_test) AM 01/06/2001 * logger facility (-DENABLE_TRACE)( user can change trace_level at run time (thanks to serge l.) * msg_register.c/example_agentlogic.c modified * memory-leak is detected when doing register!... * cvs tag rel051 AM 28/05/2001 * autotools: more modifications. * trn_manager.c: bug fix ( /* { */ ) * configure options: --enable-debug for "-g -DENABLE_DEBUG" --enable-debug --enable-trace for "-g -DENABLE_DEBUG -DENABLE_TRACE" --enable-leakdetection for "-DENABLE_MLEAK" AM 28/05/2001 * sipconf_t is changed to osip_t * parser_config() is changed to parser_configure() * make all init from sip_start_design1() AM 27/05/2001 * autotools: new configure scripts are done. autoconf 2.5 automake 1.4 libtool 1.4 New files: acinclude.m4 (for libtool support) corrected files: Makefile.in, test/Makefile.in src/Makefile.in example/Makefile.in AM 21/05/2001 * autotools: improve configure support. AM 20/05/2001 * int/sutil/serror.h add support for error codes. /* SIP library error code */ typedef int err_t; /* success */ #define SIP_OK ((err_t)0) #define SIP_SYNTAX_ERROR ((err_t)-1) #define SIP_NETWORK_ERROR ((err_t)-2) #define SIP_GLOBAL_FAILURE ((err_t)-3) AM 19/05/2001 * oSIP is the official name!!! rename dir and clean files... AM 16/05/2001 * new name for methods: methods from trn_*.c start with "trn_" methods from msg_*.c start with "msg_" methods from fsm_*.c start with "fsm_", "ua", "uac" and "uas" methods from evt_*.c start with "evt_" methods from udp_*.c start with "udp_"