[2/3] qpid-proton git commit: PROTON-1452: Test for closed transport without side effects
PROTON-1452: Test for closed transport without side effects "closed" tests based on pn_transport_pending/available have side effects: may generate events or modify read/write buffer pointers, which makes using those tests very sensitive to ordering. New pn_transport_(head|tail)_closed have no side effects. Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/893cb001 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/893cb001 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/893cb001 Branch: refs/heads/master Commit: 893cb00161d29e2e29c7e7304177f3d92418f405 Parents: 7a68a2c Author: Alan Conway Authored: Wed Mar 29 16:42:31 2017 -0400 Committer: Alan Conway Committed: Wed Mar 29 17:58:56 2017 -0400 -- proton-c/include/proton/transport.h | 19 +++ proton-c/src/core/connection_driver.c | 4 ++-- proton-c/src/core/transport.c | 12 ++-- 3 files changed, 19 insertions(+), 16 deletions(-) -- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/893cb001/proton-c/include/proton/transport.h -- diff --git a/proton-c/include/proton/transport.h b/proton-c/include/proton/transport.h index 09fbb03..89b6fad 100644 --- a/proton-c/include/proton/transport.h +++ b/proton-c/include/proton/transport.h @@ -610,14 +610,17 @@ PN_EXTERN int pn_transport_close_head(pn_transport_t *transport); PN_EXTERN bool pn_transport_quiesced(pn_transport_t *transport); /** - * Check if a transport is closed. - * - * A transport is defined to be closed when both the tail and the head - * are closed. In other words, when both ::pn_transport_capacity() < 0 - * and ::pn_transport_pending() < 0. - * - * @param[in] transport a transport object - * @return true if the transport is closed, false otherwise + * True if pn_transport_close_head() has been called. + */ +PN_EXTERN bool pn_transport_head_closed(pn_transport_t *transport); + +/** + * True if pn_transport_close_tail() has been called. + */ +PN_EXTERN bool pn_transport_tail_closed(pn_transport_t *transport); + +/** + * Equivalent to pn_transport_head_closed(transport) && pn_transport_tail_closed(transport) */ PN_EXTERN bool pn_transport_closed(pn_transport_t *transport); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/893cb001/proton-c/src/core/connection_driver.c -- diff --git a/proton-c/src/core/connection_driver.c b/proton-c/src/core/connection_driver.c index f5fddae..40af749 100644 --- a/proton-c/src/core/connection_driver.c +++ b/proton-c/src/core/connection_driver.c @@ -90,7 +90,7 @@ void pn_connection_driver_read_done(pn_connection_driver_t *d, size_t n) { } bool pn_connection_driver_read_closed(pn_connection_driver_t *d) { - return pn_transport_capacity(d->transport) < 0; + return pn_transport_tail_closed(d->transport); } void pn_connection_driver_read_close(pn_connection_driver_t *d) { @@ -111,7 +111,7 @@ void pn_connection_driver_write_done(pn_connection_driver_t *d, size_t n) { } bool pn_connection_driver_write_closed(pn_connection_driver_t *d) { - return pn_transport_pending(d->transport) < 0; + return pn_transport_head_closed(d->transport); } void pn_connection_driver_write_close(pn_connection_driver_t *d) { http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/893cb001/proton-c/src/core/transport.c -- diff --git a/proton-c/src/core/transport.c b/proton-c/src/core/transport.c index 444145a..5065663 100644 --- a/proton-c/src/core/transport.c +++ b/proton-c/src/core/transport.c @@ -3009,12 +3009,12 @@ bool pn_transport_quiesced(pn_transport_t *transport) return true; } -bool pn_transport_closed(pn_transport_t *transport) -{ - assert(transport); - ssize_t capacity = pn_transport_capacity(transport); - ssize_t pending = pn_transport_pending(transport); - return capacity < 0 && pending < 0; +bool pn_transport_head_closed(pn_transport_t *transport) { return transport->head_closed; } + +bool pn_transport_tail_closed(pn_transport_t *transport) { return transport->tail_closed; } + +bool pn_transport_closed(pn_transport_t *transport) { + return transport->head_closed && transport->tail_closed; } pn_connection_t *pn_transport_connection(pn_transport_t *transport) - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
[3/3] qpid-proton git commit: PROTON-1452: Add pn_proactor_disconnect
PROTON-1452: Add pn_proactor_disconnect /** * Disconnect all connections and listeners currently active in the proactor. * * PN_LISTENER_CLOSE, PN_TRANSPORT_CLOSED and other events are generated as usual. * If no new listeners or connections are created, then a PN_PROACTOR_INACTIVE event * will be generated when all connections and listeners are disconnected. * * Note the proactor remains active, connections and listeners created after a call to * pn_proactor_disconnect() are not affected by it. * * @param condition if not NULL the condition data is copied to the transports and listeners. */ PNP_EXTERN void pn_proactor_disconnect(pn_proactor_t *proactor, pn_condition_t *condition); Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/edebc4ec Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/edebc4ec Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/edebc4ec Branch: refs/heads/master Commit: edebc4ecf693514fe3becd64bbeb1c8361b31e62 Parents: 893cb00 Author: Alan Conway Authored: Wed Mar 29 17:58:00 2017 -0400 Committer: Alan Conway Committed: Wed Mar 29 18:15:58 2017 -0400 -- proton-c/include/proton/proactor.h | 14 proton-c/src/proactor/libuv.c | 87 proton-c/src/tests/proactor.c | 137 +--- 3 files changed, 195 insertions(+), 43 deletions(-) -- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/edebc4ec/proton-c/include/proton/proactor.h -- diff --git a/proton-c/include/proton/proactor.h b/proton-c/include/proton/proactor.h index b77feff..d13c6d6 100644 --- a/proton-c/include/proton/proactor.h +++ b/proton-c/include/proton/proactor.h @@ -60,6 +60,20 @@ typedef struct pn_proactor_addr_t pn_proactor_addr_t; PNP_EXTERN pn_proactor_t *pn_proactor(void); /** + * Disconnect all connections and listeners currently active in the proactor. + * + * PN_LISTENER_CLOSE, PN_TRANSPORT_CLOSED and other events are generated as usual. + * If no new listeners or connections are created, then a PN_PROACTOR_INACTIVE event + * will be generated when all connections and listeners are disconnected. + * + * Note the proactor remains active, connections and listeners created after a call to + * pn_proactor_disconnect() are not affected by it. + * + * @param condition if not NULL the condition data is copied to the transports and listeners. + */ +PNP_EXTERN void pn_proactor_disconnect(pn_proactor_t *proactor, pn_condition_t *condition); + +/** * Free the proactor. Abort any open network connections and clean up all * associated resources. */ http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/edebc4ec/proton-c/src/proactor/libuv.c -- diff --git a/proton-c/src/proactor/libuv.c b/proton-c/src/proactor/libuv.c index 266db98..2f5e369 100644 --- a/proton-c/src/proactor/libuv.c +++ b/proton-c/src/proactor/libuv.c @@ -240,6 +240,8 @@ struct pn_proactor_t { timeout_state_t timeout_state; pn_millis_t timeout; size_t count; /* connection/listener count for INACTIVE events */ + pn_condition_t *disconnect_cond; /* disconnect condition */ + bool disconnect;/* disconnect requested */ bool inactive; bool has_leader; bool batch_working; /* batch is being processed in a worker thread */ @@ -906,6 +908,34 @@ void pconnection_detach(pconnection_t *pc) { } } +static void on_proactor_disconnect(uv_handle_t* h, void* v) { + if (h->type == UV_TCP) { +switch (*(struct_type*)h->data) { + case T_CONNECTION: { + pconnection_t *pc = (pconnection_t*)h->data; + pn_condition_t *cond = pc->work.proactor->disconnect_cond; + if (cond) { + pn_condition_copy(pn_transport_condition(pc->driver.transport), cond); + } + pn_connection_driver_close(&pc->driver); + work_notify(&pc->work); + break; + } + case T_LSOCKET: { + pn_listener_t *l = ((lsocket_t*)h->data)->parent; + pn_condition_t *cond = l->work.proactor->disconnect_cond; + if (cond) { + pn_condition_copy(pn_listener_condition(l), cond); + } + pn_listener_close(l); + break; + } + default: + break; +} + } +} + /* Process the leader_q and the UV loop, in the leader thread */ static pn_event_batch_t *leader_lead_lh(pn_proactor_t *p, uv_run_mode mode) { /* Set timeout timer if there was a request, let it count down while we process work */ @@ -914,6 +944,13 @@ static pn_event_batch_t *leader_lead_lh(pn_proactor_t *p, uv_run_mode mode) { uv_timer_stop(&p->timer); uv_timer_start(&p->timer, on_timeout, p->timeout, 0); } + /* If disc
[1/3] qpid-proton git commit: PROTON-1437: c proactor address info
Repository: qpid-proton Updated Branches: refs/heads/master 2d9c08699 -> edebc4ecf PROTON-1437: c proactor address info Provides actual address information for both ends of a proactor-managed connection using pn_proactor_addr_* functions. - pn_proactor_addr_* functions are clearly identified as part of proactor lib - portable print local/remote address as string with no platform-specific headers - POSIX/windows can test pn_proactor_addr_is_sockaddr() to use native sockaddr API This can be extended safely to non-sockaddr platforms by making pn_proactor_addr_is_sockaddr() return false and adding pn_proactor_addr_is_foo() to indicate the underlying address type Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/7a68a2c8 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/7a68a2c8 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/7a68a2c8 Branch: refs/heads/master Commit: 7a68a2c836e242ebe27ed365654a0518d75ecd3a Parents: 2d9c086 Author: Alan Conway Authored: Wed Mar 29 10:54:35 2017 -0400 Committer: Alan Conway Committed: Wed Mar 29 13:14:51 2017 -0400 -- proton-c/include/proton/proactor.h | 34 ++ proton-c/src/proactor/libuv.c | 41 - proton-c/src/tests/proactor.c | 64 ++--- proton-c/src/tests/test_tools.h| 5 +-- 4 files changed, 137 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7a68a2c8/proton-c/include/proton/proactor.h -- diff --git a/proton-c/include/proton/proactor.h b/proton-c/include/proton/proactor.h index 974b432..b77feff 100644 --- a/proton-c/include/proton/proactor.h +++ b/proton-c/include/proton/proactor.h @@ -50,6 +50,11 @@ extern "C" { */ /** + * Stores a network address in native format. + */ +typedef struct pn_proactor_addr_t pn_proactor_addr_t; + +/** * Create a proactor. Must be freed with pn_proactor_free() */ PNP_EXTERN pn_proactor_t *pn_proactor(void); @@ -199,6 +204,35 @@ PNP_EXTERN pn_proactor_t *pn_connection_proactor(pn_connection_t *connection); PNP_EXTERN pn_proactor_t *pn_event_proactor(pn_event_t *event); /** + * Format an address as a string in buf, with trailing NUL. + * + * @return the length of the addresss string. + * If the return value is >= len then the address was truncated to len-1 bytes. + * A return value of 0 means the address was invalid or NULL. + */ +PNP_EXTERN size_t pn_proactor_addr_str(char *buf, size_t len, pn_proactor_addr_t* addr); + +/** + * Get the local address of a transport. + * + * @return NULL if the transport is not connected or the address is not available. + */ +PNP_EXTERN pn_proactor_addr_t *pn_proactor_addr_local(pn_transport_t* c); + +/** + * Get the remote address of a transport. + * + * @return NULL if the transport is not connected or the address is not available. + */ +PNP_EXTERN pn_proactor_addr_t *pn_proactor_addr_remote(pn_transport_t* c); + +/** + * If the underlying implementation uses `struct sockaddr` (for example POSIX or Windows + * sockets) return a pointer, otherwise return NULL. + */ +PNP_EXTERN struct sockaddr *pn_proactor_addr_sockaddr(pn_proactor_addr_t *addr); + +/** * @} */ http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7a68a2c8/proton-c/src/proactor/libuv.c -- diff --git a/proton-c/src/proactor/libuv.c b/proton-c/src/proactor/libuv.c index aa10f83..266db98 100644 --- a/proton-c/src/proactor/libuv.c +++ b/proton-c/src/proactor/libuv.c @@ -170,6 +170,7 @@ typedef struct pconnection_t { lsocket_t *lsocket; /* Incoming connection only */ + struct sockaddr_storage local, remote; /* Actual addresses */ uv_timer_t timer; uv_write_t write; size_t writing; /* size of pending write request, 0 if none pending */ @@ -499,11 +500,20 @@ static void on_connect_fail(uv_handle_t *handle) { } } +static void pconnection_addresses(pconnection_t *pc) { + int len; + len = sizeof(pc->local); + uv_tcp_getsockname(&pc->tcp, (struct sockaddr*)&pc->local, &len); + len = sizeof(pc->remote); + uv_tcp_getpeername(&pc->tcp, (struct sockaddr*)&pc->remote, &len); +} + /* Outgoing connection */ static void on_connect(uv_connect_t *connect, int err) { pconnection_t *pc = (pconnection_t*)connect->data; if (!err) { pc->connected = 1; +pconnection_addresses(pc); work_notify(&pc->work); uv_freeaddrinfo(pc->addr.getaddrinfo.addrinfo); /* Done with address info */ pc->addr.getaddrinfo.addrinfo = NULL; @@ -658,8 +668,9 @@ static bool leader_process_listener(pn_listener_t *l) { /* Process accepted connections */ for (pconnection_t *pc
qpid-proton-j git commit: PROTON-1447 : Allow CaCertDb file to have multiple certificates
Repository: qpid-proton-j Updated Branches: refs/heads/master b845e479f -> ad6096746 PROTON-1447 : Allow CaCertDb file to have multiple certificates Project: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/commit/ad609674 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/tree/ad609674 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/diff/ad609674 Branch: refs/heads/master Commit: ad60967463fe697800d24eaf0286dbf9e7d38473 Parents: b845e47 Author: rgodfrey Authored: Wed Mar 29 17:49:49 2017 +0200 Committer: rgodfrey Committed: Wed Mar 29 17:49:49 2017 +0200 -- .../engine/impl/ssl/SslEngineFacadeFactory.java | 37 ++-- 1 file changed, 35 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/qpid-proton-j/blob/ad609674/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java -- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java index 4efc055..e82e1bb 100644 --- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java +++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java @@ -45,6 +45,7 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -350,8 +351,11 @@ public class SslEngineFacadeFactory { _logger.log(Level.FINE, "_sslParams.getTrustedCaDb() : " + sslDomain.getTrustedCaDb()); } -Certificate trustedCaCert = readCertificate(sslDomain.getTrustedCaDb()); -keystore.setCertificateEntry(caCertAlias, trustedCaCert); +int i = 1; +for(Certificate trustedCaCert : readCertificates(sslDomain.getTrustedCaDb())) +{ +keystore.setCertificateEntry(caCertAlias + (i++), trustedCaCert); +} } if (sslDomain.getCertificateFile() != null @@ -468,6 +472,35 @@ public class SslEngineFacadeFactory } } +Collection readCertificates(String pemFile) +{ +InputStream is = null; + +try +{ +CertificateFactory cFactory = CertificateFactory.getInstance("X.509"); +is = new FileInputStream(pemFile); +return cFactory.generateCertificates(is); +} +catch (CertificateException ce) +{ +String msg = "Failed to load certificates [" + pemFile + "]"; +_logger.log(Level.SEVERE, msg, ce); +throw new TransportException(msg, ce); +} +catch (FileNotFoundException e) +{ +String msg = "Certificates file not found [" + pemFile + "]"; +_logger.log(Level.SEVERE, msg); +throw new TransportException(msg, e); +} +finally +{ +closeSafely(is); +} +} + + PrivateKey readPrivateKey(String pemFile, String password) { if (bouncyCastleSetupException != null) - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r18952 - in /dev/qpid/dispatch/0.8.0-rc1: ./ qpid-dispatch-0.8.0.tar.gz qpid-dispatch-0.8.0.tar.gz.asc qpid-dispatch-0.8.0.tar.gz.md5 qpid-dispatch-0.8.0.tar.gz.sha512
Author: tross Date: Wed Mar 29 11:14:56 2017 New Revision: 18952 Log: Qpid Dispatch Router 0.8.0 RC1 artifacts Added: dev/qpid/dispatch/0.8.0-rc1/ dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz (with props) dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.asc (with props) dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.md5 dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.sha512 Added: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz == Binary file - no diff available. Propchange: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz -- svn:mime-type = application/x-gzip Added: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.asc == Binary file - no diff available. Propchange: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.asc -- svn:mime-type = application/pgp-signature Added: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.md5 == --- dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.md5 (added) +++ dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.md5 Wed Mar 29 11:14:56 2017 @@ -0,0 +1 @@ +473005cbd87586bc38c21fa10240a7af qpid-dispatch-0.8.0.tar.gz Added: dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.sha512 == --- dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.sha512 (added) +++ dev/qpid/dispatch/0.8.0-rc1/qpid-dispatch-0.8.0.tar.gz.sha512 Wed Mar 29 11:14:56 2017 @@ -0,0 +1 @@ +43391f197e628ec194967c31de89735adebaa180c9bbae6791404bc69696c3042f80189031cec7d341067dbfbc16166bb3e9a74fdbf9518ee23e08bb0553 qpid-dispatch-0.8.0.tar.gz - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r1789336 - in /qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src: main/java/org/apache/qpid/server/protocol/v0_10/ main/java/org/apache/qpid/server/protocol/v0_10/transport/ test/java/
Author: orudyy Date: Wed Mar 29 11:13:54 2017 New Revision: 1789336 URL: http://svn.apache.org/viewvc?rev=1789336&view=rev Log: QPID-7723: Optimize evaluation of metadata storable size for AMQP 0-10 Added: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/EncoderUtils.java Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/AbstractEncoder.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/Acquired.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/DeliveryProperties.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/Encoder.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/ExchangeBoundResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/ExchangeQueryResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/FragmentProperties.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/GetTimeoutResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/MessageProperties.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/MessageResumeResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/Method.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/QueueQueryResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/RecoverResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/ReplyTo.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/SessionCommandFragment.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/SessionHeader.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/Struct.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/XaResult.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/transport/Xid.java qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/transport/BBEncoderTest.java Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java?rev=1789336&r1=1789335&r2=1789336&view=diff == --- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java (original) +++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java Wed Mar 29 11:13:54 2017 @@ -27,6 +27,7 @@ import java.util.List; import org.apache.qpid.server.bytebuffer.QpidByteBuffer; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.plugin.MessageMetaDataType; +import org.apache.qpid.server.protocol.v0_10.transport.EncoderUtils; import org.apache.qpid.server.store.StorableMessageMetaData; import org.apache.qpid.server.protocol.v0_10.transport.DeliveryProperties; import org.apache.qpid.server.protocol.v0_10.transport.Header; @@ -83,17 +84,32 @@ public class MessageMetaData_0_10 implem return TYPE; } -public synchronized int getStorableSize() + +public int getStorableSize() { -QpidByteBuffer buf = _encoded; +int len = 0; + +len += 8; // arrival time +len += 4; // body size +len += 4; // headers length -if(buf == null) +if(_header.getDeliveryProperties() != null) +{ +len += EncoderUtils.getStruct32Length(_header.getDeliveryProperties()); +} +if(_header.getMessagePrope
[qpid-dispatch] Git Push Summary
Repository: qpid-dispatch Updated Tags: refs/tags/0.8.0-rc1 [created] 96c5de777 - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
qpid-proton-j git commit: PROTON-1451 : Only register BouncyCastle provider if not already present
Repository: qpid-proton-j Updated Branches: refs/heads/master b49969c1f -> b845e479f PROTON-1451 : Only register BouncyCastle provider if not already present Project: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/commit/b845e479 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/tree/b845e479 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/diff/b845e479 Branch: refs/heads/master Commit: b845e479f946cac019fe92327a8bc3ca16263050 Parents: b49969c Author: rgodfrey Authored: Wed Mar 29 12:18:31 2017 +0200 Committer: rgodfrey Committed: Wed Mar 29 12:18:31 2017 +0200 -- .../engine/impl/ssl/SslEngineFacadeFactory.java | 22 .../impl/ssl/SslEngineFacadeFactoryTest.java| 16 ++ 2 files changed, 34 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/qpid-proton-j/blob/b845e479/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java -- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java index 64eb2ca..4efc055 100644 --- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java +++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java @@ -130,10 +130,7 @@ public class SslEngineFacadeFactory PrivateKeyInfoClassResult = Class.forName("org.bouncycastle.asn1.pkcs.PrivateKeyInfo"); getPrivateKeyMethodResult = jcaPEMKeyConverterClass.getMethod("getPrivateKey", PrivateKeyInfoClassResult); -// Try loading BC as a provider -Class klass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); -Provider provider = (Provider) klass.getConstructor().newInstance(); -Security.addProvider(provider); +registerBouncyCastleProvider(); } catch (Exception e) { @@ -155,6 +152,23 @@ public class SslEngineFacadeFactory } } +static void registerBouncyCastleProvider() +throws ClassNotFoundException, InstantiationException, IllegalAccessException, + InvocationTargetException, NoSuchMethodException +{ +// Try loading BC as a provider +Class klass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); + +Provider bouncyCastleProvider = (Provider) klass.getConstructor().newInstance(); +synchronized (Security.class) +{ +if(Security.getProvider(bouncyCastleProvider.getName()) == null) +{ +Security.addProvider(bouncyCastleProvider); +} +} +} + SslEngineFacadeFactory() { } http://git-wip-us.apache.org/repos/asf/qpid-proton-j/blob/b845e479/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java -- diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java index 84ba8cb..e43988e 100644 --- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java +++ b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java @@ -18,6 +18,7 @@ */ package org.apache.qpid.proton.engine.impl.ssl; +import static junit.framework.TestCase.fail; import static org.junit.Assert.assertNotNull; import java.net.URL; @@ -29,6 +30,21 @@ public class SslEngineFacadeFactoryTest { private static final String PASSWORD = "unittest"; @Test +public void testDuplicateRegistrationOfSecurityProvider() { +// ensure the provider is already registered +SslEngineFacadeFactory factory = new SslEngineFacadeFactory(); + +try +{ +SslEngineFacadeFactory.registerBouncyCastleProvider(); +} +catch (Exception e) +{ +fail("Exception thrown when re-registering BouncyCastle provider " + e.getMessage()); +} +} + +@Test public void testCertifcateLoad() { String ipFile = resolveFilename("cert.pem.txt"); SslEngineFacadeFactory factory = new SslEngineFacadeFactory(); - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r18950 - /dev/qpid/proton/testing.tar.gz.sha
Author: robbie Date: Wed Mar 29 09:56:28 2017 New Revision: 18950 Log: remove test file Removed: dev/qpid/proton/testing.tar.gz.sha - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r18949 - /dev/qpid/proton/testing.tar.gz.sha
Author: robbie Date: Wed Mar 29 09:52:00 2017 New Revision: 18949 Log: add test checksum file Added: dev/qpid/proton/testing.tar.gz.sha Added: dev/qpid/proton/testing.tar.gz.sha == --- dev/qpid/proton/testing.tar.gz.sha (added) +++ dev/qpid/proton/testing.tar.gz.sha Wed Mar 29 09:52:00 2017 @@ -0,0 +1 @@ +ce082fdc2793fc9d3db1b558bd897d364543bd50cba60e66aff839f8f16d82c245381d836ef3ee5b6ee17ba2b2ffe1899b86ed9d1f8cf8db569f726b6d162463 testing.tar.gz - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org