aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2010-05-27use macro to portably test for socket system call errorsSteve Vinoski
On some combinations of Montavista Linux running on Cavium Octeon chips, some socket-related system calls erroneously return negative numbers other than -1 to indicate errors, but inet_drv.c specifically compares against -1 to test for errors. The result is that beam dumps core due to the code treating these negative numbers as success indicators, as counts/offsets of bytes written, etc. thereby corrupting its own internal data structures. To fix this, introduce a portability macro to test the result of socket system calls. The test remains unchanged on Windows but for other platforms the macro considers all return values that are less than zero to be errors. Though POSIX specifies that errors from these system calls are indicated by a return value of -1, treating all negative return values as errors is also safe, as described in detail below. In networking programming, treating all negative return values from system calls as errors is very common practice -- see the examples in W. Richard Stevens's popular and highly lauded network programming books, for example. For system calls that return 0 to indicate success, treating all negative numbers as errors is safe because only 0 is specified to indicate success. These include: getsockname getpeername getsockopt gethostname bind listen connect close shutdown Likewise, for system calls that return non-negative numbers to indicate success, treating all negative numbers as errors is also safe. These functions typically return signed integers of type ssize_t, and they treat any parameters of type size_t that cannot fit within the ssize_t return value, such as numbers of bytes to read or write, as errors (specifically EINVAL). For example, in the "ERRORS" section of the man page for writev from several varieties of Linux, it states that EINVAL is returned when the total length of the I/O is more than can be expressed by the ssize_t return value. These calls include: recv recvfrom recvmsg writev send sendto sendmsg Finaly, the socket() system call is also similar to these in that it returns a signed type (int) with all non-negative return values indicating success, so treating all negative return values as errors is safe.
2010-05-27Moved nodelay workaround for linux, as it seems to only work if you doIngela Anderton Andin
it before sending the fatal alert, even though documentation suggests the socket will be flushed on linux as an effect of setting the nodelay option.
2010-05-27OTP-8563: Decode/Encode of Counter64 errorMicael Karlberg
OTP-8574: Option to allow invalid row OIDs OTP-8594: Make snmp forward compatible with new crypto OTP-8595: snmpc fails to compile BITS with "holes" OTP-8646: Agent-info lookup raise condition OTP-8648: MIB server cache gc changed to on by default
2010-05-27Cleanup branch 'bg/compiler-cover-and-clean'Kostis Sagonas
Commit 329f737c03db51918361e127560a6f700e99028e removed some unused code, but also introduced the need for further clean-ups. Fix a spec so that its return corresponds to reality. Take out code that will never match from a function.
2010-05-26OTP-8649 change in public_key apiIngela Anderton Andin
2010-05-26Preparing for new version.Niclas Eklund
2010-05-26Fix race condition when an other connection is started before a channel is ↵Niclas Eklund
opened in the first connection.
2010-05-26Aligning error message with used versionNiclas Eklund
2010-05-26Test ssl_session_cache_api.Ingela Anderton Andin
2010-05-26Seems we need "nodelay socket flush" on some linux platforms after all.Ingela Anderton Andin
2010-05-26Avoid apparently timing issus when closing down opensslIngela Anderton Andin
2010-05-26Added option list argument to the init function in ssl_session_cache_api.Ingela Anderton Andin
2010-05-26Merge branch 'mh/escript-erlang-mode' into devErlang/OTP
* mh/escript-erlang-mode: Associate files using interpreter "escript" with Erlang mode
2010-05-26Merge branch 'cb/emacs-eunit-run-current-test' into devErlang/OTP
* cb/emacs-eunit-run-current-test: Add Emacs EUnit utility feature: run current test function.
2010-05-26Merge branch 'mh/fix-record-indentation' into devErlang/OTP
* mh/fix-record-indentation: Fix indentation of records with line breaks inside lists
2010-05-26Merge branch 'mh/inferior-erlang-cmd-uniq' into devErlang/OTP
* mh/inferior-erlang-cmd-uniq: inferior-erlang: specify command to run, uniquify buffer names
2010-05-26Merge branch 'mh/erlang-mode-imenu-arity' into devErlang/OTP
* mh/erlang-mode-imenu-arity: Let imenu distinguish functions by arity
2010-05-26Merge branch 'mh/erlang-mode-map-init' into devErlang/OTP
* mh/erlang-mode-map-init: Set erlang-mode-map when loading erlang.el
2010-05-25Enhancements and fixes due to coverage investegation.Ingela Anderton Andin
2010-05-25Enhanced protocol version handling.Ingela Anderton Andin
2010-05-25Better coverage.Ingela Anderton Andin
2010-05-25Better coverageIngela Anderton Andin
2010-05-25OTP-8563: Decode/Encode of Counter64 error.Micael Karlberg
OTP-8574: Option to allow invalid row OIDs. OTP-8594: Make snmp forward compatible with new crypto. OTP-8595: snmpc fails to compile BITS with "holes". OTP-8646: Agent-info lookup raise condition. OTP-8648: MIB server cache auto-gc chenged to on by default.
2010-05-24Set erlang-mode-map when loading erlang.elMagnus Henoch
Create and assign the erlang-mode keymap to erlang-mode-map once erlang.el is loaded, not the first time it is used. This way of doing it follows the Emacs Lisp convention described at http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips-for-Defining.html and also makes it easier for users to customize the keymap. Remove the now unneeded functions erlang-keymap-init and erlang-mode-commands. Also move the definition of inferior-erlang-use-cmm, so it is available when defining erlang-mode-map.
2010-05-24Merge branch 'bg/wx_objects' into devErlang/OTP
* bg/wx_objects: wx_objects: Fix calls to unexported gen_server:print_event/3 OTP-8638 bg/wx_objects
2010-05-24Merge branch 'fm/file-operations' into devErlang/OTP
* fm/file-operations: Update preloaded modules Add file:advise/4 - a wrapper to the POSIX syscall posix_fadvise Add file:datasync/1 for syncing file contents only sys.h: Correct the get_int64() macro OTP-8637 fm/file-operations The functions file:advise/4 and file:datasync/1 have been added. (Thanks to Filipe David Manana.)
2010-05-24Fixed session validation bug thanks to cover.Ingela Anderton Andin
2010-05-24Changed the documentation to match latest implementation and design decisions.Ingela Anderton Andin
2010-05-21Clean up of codeIngela Anderton Andin
2010-05-21Prepare new version.Niclas Eklund
2010-05-21Worked on getting better code coverage.Ingela Anderton Andin
2010-05-21Decision not to support export cipher suites.Ingela Anderton Andin
2010-05-21Decision not to support DH and export cipher suites.Ingela Anderton Andin
2010-05-21Decision not to support DH and export cipher suites and clean up.Ingela Anderton Andin
2010-05-21wx_objects: Fix calls to unexported gen_server:print_event/3Björn Gustavsson
In code copied (and modified) from the gen_server module, there are references to the gen_server:print_event/3 function, which is not exported. We could export print_event/3 from the gen_server, but in that case we must promise to keep the function and keep it compatible in the future. Since the function is small and wx_object already contains a lot of code copied from gen_server, let's copy the code for print_event/3 too. (Thanks to Kostis Sagonas. This old bug was exposed by a patch by Kostis that replaced "tuple funs" with real funs.)
2010-05-21Merge branch 'bg/compiler-cover-and-clean' into devErlang/OTP
* bg/compiler-cover-and-clean: v3_life: Remove clause that cannot match in match_fail/3 v3_life tests: Cover exception handling code in v3_life:function/1 beam_type: Remove redundant clause v3_core tests: Cover make_bool_switch_guard/5 v3_core tests: Cover handling of pattern aliases v3_core: Remove a clause in is_simple/1 that cannot match v3_core: Remove unused support for generating compilation errors Remove stray support for the put_literal/2 instruction Remove stray support for the bs_bits_to_bytes2/2 instruction Remove the bs_bits_to_bytes/3 instruction Cover handling of 'math' BIFs beam_bool: Remove a clause in live_regs/1 that cannot match beam_bool: Cover handling of bs_context_to_binary in initialized_regs/2 beam_bool: Remove a clause in initialized_regs/2 that cannot match beam_block: Remove a clause that will never be executed erts: Stop supporting non-literal empty tuples compile: Remove code that is only executed on Solaris Do not cover-analyze core_scan core_SUITE_data: Don't ignore *.core files in this directory OTP-8636 bg/compiler-cover-and-clean
2010-05-21Merge branch 'sv/format_status_error_info' into devErlang/OTP
* sv/format_status_error_info: Add support for the format_status callback to gen_event Extend format_status for gen_server/gen_fsm termination error logging OTP-8630 sv/format_status_error_info When a gen_server, gen_fsm process, or gen_event terminates abnormally, sometimes the text representation of the process state can occupy many lines of the error log, depending on the definition of the state term. A mechanism to trim out parts of the state from the log has been added (using a format_status/2 callback). See the documentation.
2010-05-21Correct typos in EEP-0031 implementationTuncer Ayaz
Signed-off-by: Tuncer Ayaz <[email protected]>
2010-05-20Let imenu distinguish functions by arityMagnus Henoch
Make the function names used by M-x imenu contain the function arity as well as the name. This makes it possible to jump to all functions of the same name, as opposed to only the one that is defined first. For example, in the following module there is now a way to jump directly to foo/1: -module(foo). foo() -> ok. bar() -> error. foo(A) -> {ok, A}.
2010-05-20Merge branch 'jn/ic-docs-without-java' into devErlang/OTP
* jn/ic-docs-without-java: Permit building and installing documentation without Java
2010-05-20Update preloaded modulesBjörn Gustavsson
2010-05-20Add file:advise/4 - a wrapper to the POSIX syscall posix_fadviseFilipe David Manana
Useful for informing the Operating System about the access pattern for a file's data, so that it can adapt the caching strategy to maximize disk IO performance.
2010-05-20Add file:datasync/1 for syncing file contents onlyFilipe David Manana
file:datasync/1 invokes the POSIX system call "int fdatasync(int fd)". This system call is similar to "fsync" but, unlike fsync, it does not update the metadata associated with the file (like the access time for example). It's used by many DBMSs (MySQL and SQLite of example) to increase disk IO performance, as it avoids disk seeks and disk write operations compared to fsync. More details on it at: http://linux.die.net/man/2/fdatasync An example, from the MySQL source: http://bazaar.launchpad.net/~mysql/mysql-server/mysql-5.1-telco-6.1/annotate/head%3A/mysys/my_sync.c#L61 This new function just calls fsync on systems not implementing fdatasync.
2010-05-20sys.h: Correct the get_int64() macroBjörn Gustavsson
The get_int64() macro has never been used (it was probably added for completeness at the same time that put_int64() was added), but it was not actually used and therefore it does not actually work.
2010-05-20v3_life: Remove clause that cannot match in match_fail/3Björn Gustavsson
The clause that attempts to match a #k_literal{} where the value is an atom cannot possibly match, since single atoms are always encoded as #k_atom{}.
2010-05-20v3_life tests: Cover exception handling code in v3_life:function/1Björn Gustavsson
2010-05-20beam_type: Remove redundant clauseBjörn Gustavsson
The clause does not server any useful purpose, since it does the same as the default clause at the end.
2010-05-20v3_core tests: Cover make_bool_switch_guard/5Björn Gustavsson
2010-05-20v3_core tests: Cover handling of pattern aliasesBjörn Gustavsson
2010-05-20v3_core: Remove a clause in is_simple/1 that cannot matchBjörn Gustavsson
The is_simple/1 function does not need to handle #c_binary{}, since it will never be called with a #c_binary{} argument.